diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2010-02-19 00:03:21 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2010-02-19 00:03:21 +0000 |
commit | 3a89d1ef7f4e9da3b3606df9385b79a77322963e (patch) | |
tree | c384809f5eb2902e8a11bf19b0a180953a21aa42 /window-copy.c | |
parent | a61b8a2033cd53281a7226affb97ddcb8b6689da (diff) | |
download | rtmux-3a89d1ef7f4e9da3b3606df9385b79a77322963e.tar.gz rtmux-3a89d1ef7f4e9da3b3606df9385b79a77322963e.tar.bz2 rtmux-3a89d1ef7f4e9da3b3606df9385b79a77322963e.zip |
copy mode uses the real screen as backing and if it is updated while copying,
strange things can happen. So, freeze reading from the pty while in copy mode.
Diffstat (limited to 'window-copy.c')
-rw-r--r-- | window-copy.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/window-copy.c b/window-copy.c index 1b2d1ada..b465f21b 100644 --- a/window-copy.c +++ b/window-copy.c @@ -138,6 +138,9 @@ window_copy_init(struct window_pane *wp) data->searchtype = WINDOW_COPY_OFF; data->searchstr = NULL; + wp->flags |= PANE_FREEZE; + bufferevent_disable(wp->event, EV_READ|EV_WRITE); + s = &data->screen; screen_init(s, screen_size_x(&wp->base), screen_size_y(&wp->base), 0); if (options_get_number(&wp->window->options, "mode-mouse")) @@ -166,6 +169,9 @@ window_copy_free(struct window_pane *wp) { struct window_copy_mode_data *data = wp->modedata; + wp->flags &= ~PANE_FREEZE; + bufferevent_enable(wp->event, EV_READ|EV_WRITE); + if (data->searchstr != NULL) xfree(data->searchstr); xfree(data->inputstr); |