diff options
author | nicm <nicm> | 2015-08-28 16:10:46 +0000 |
---|---|---|
committer | nicm <nicm> | 2015-08-28 16:10:46 +0000 |
commit | 55b8d7456155de4e5d44136a140a599e2a2a755b (patch) | |
tree | 5319be8f04742fad7581402f461ec10ae4246d4f /names.c | |
parent | e2100c5f5f9c71185e2a3c410ebdd37f52d701a7 (diff) |
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.
Diffstat (limited to 'names.c')
-rw-r--r-- | names.c | 32 |
1 files changed, 25 insertions, 7 deletions
@@ -25,16 +25,37 @@ #include "tmux.h" +void window_name_callback(unused int, unused short, void *); + +void +queue_window_name(struct window *w) +{ + 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 -check_window_name(struct window *w) +window_name_callback(unused int fd, unused short events, void *data) { - char *name; + 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); } |