Revert previous; we do need a timer, until I have a better idea. We

can't do the name check every loop, because that is too expensive, and
we can't make sure it only happens infrequently because we have no idea
when the next change will happen.
This commit is contained in:
nicm
2015-08-28 16:10:46 +00:00
parent e2100c5f5f
commit 55b8d74561
5 changed files with 35 additions and 10 deletions

32
names.c
View File

@ -25,16 +25,37 @@
#include "tmux.h"
void window_name_callback(unused int, unused short, void *);
void
check_window_name(struct window *w)
queue_window_name(struct window *w)
{
char *name;
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = NAME_INTERVAL * 1000L;
if (event_initialized(&w->name_timer))
evtimer_del(&w->name_timer);
evtimer_set(&w->name_timer, window_name_callback, w);
evtimer_add(&w->name_timer, &tv);
}
void
window_name_callback(unused int fd, unused short events, void *data)
{
struct window *w = data;
char *name;
if (w->active == NULL)
return;
if (!options_get_number(&w->options, "automatic-rename"))
if (!options_get_number(&w->options, "automatic-rename")) {
if (event_initialized(&w->name_timer))
event_del(&w->name_timer);
return;
}
queue_window_name(w);
if (~w->active->flags & PANE_CHANGED)
return;
@ -42,12 +63,9 @@ check_window_name(struct window *w)
name = format_window_name(w);
if (strcmp(name, w->name) != 0) {
log_debug("@%u new name %s (was %s)", w->id, name, w->name);
window_set_name(w, name);
server_status_window(w);
} else
log_debug("@%u name not changed (still %s)", w->id, w->name);
}
free(name);
}