version 1.74, 2012/03/17 22:35:09 |
version 1.75, 2012/03/20 11:01:00 |
|
|
u_int next_window_pane_id; |
u_int next_window_pane_id; |
u_int next_window_id; |
u_int next_window_id; |
|
|
|
void window_pane_timer_callback(int, short, void *); |
void window_pane_read_callback(struct bufferevent *, void *); |
void window_pane_read_callback(struct bufferevent *, void *); |
void window_pane_error_callback(struct bufferevent *, short, void *); |
void window_pane_error_callback(struct bufferevent *, short, void *); |
|
|
|
|
{ |
{ |
window_pane_reset_mode(wp); |
window_pane_reset_mode(wp); |
|
|
|
event_del(&wp->changes_timer); |
|
|
if (wp->fd != -1) { |
if (wp->fd != -1) { |
bufferevent_free(wp->event); |
bufferevent_free(wp->event); |
close(wp->fd); |
close(wp->fd); |
|
|
bufferevent_enable(wp->event, EV_READ|EV_WRITE); |
bufferevent_enable(wp->event, EV_READ|EV_WRITE); |
|
|
return (0); |
return (0); |
|
} |
|
|
|
void |
|
window_pane_timer_start(struct window_pane *wp) |
|
{ |
|
struct timeval tv; |
|
|
|
tv.tv_sec = 0; |
|
tv.tv_usec = 1000; |
|
|
|
evtimer_del(&wp->changes_timer); |
|
evtimer_set(&wp->changes_timer, window_pane_timer_callback, wp); |
|
evtimer_add(&wp->changes_timer, &tv); |
|
} |
|
|
|
void |
|
window_pane_timer_callback(unused int fd, unused short events, void *data) |
|
{ |
|
struct window_pane *wp = data; |
|
struct window *w = wp->window; |
|
u_int interval, trigger; |
|
|
|
interval = options_get_number(&w->options, "c0-change-interval"); |
|
trigger = options_get_number(&w->options, "c0-change-trigger"); |
|
|
|
if (wp->changes_redraw++ == interval) { |
|
wp->flags |= PANE_REDRAW; |
|
wp->changes_redraw = 0; |
|
|
|
} |
|
|
|
if (trigger == 0 || wp->changes < trigger) { |
|
wp->flags |= PANE_REDRAW; |
|
wp->flags &= ~PANE_DROP; |
|
} else |
|
window_pane_timer_start(wp); |
|
wp->changes = 0; |
} |
} |
|
|
/* ARGSUSED */ |
/* ARGSUSED */ |