aboutsummaryrefslogtreecommitdiff
path: root/window-copy.c
diff options
context:
space:
mode:
authorTiago Cunha <tcunha@gmx.com>2010-02-26 13:26:44 +0000
committerTiago Cunha <tcunha@gmx.com>2010-02-26 13:26:44 +0000
commitecac081a555b6513b91c5e0b8c93fa753e41becf (patch)
tree87394a38f2586e7c88e495f6fbbebf1fef308b4b /window-copy.c
parentb4c2710bf7e155586592e95f600e98cd8518f098 (diff)
downloadrtmux-ecac081a555b6513b91c5e0b8c93fa753e41becf.tar.gz
rtmux-ecac081a555b6513b91c5e0b8c93fa753e41becf.tar.bz2
rtmux-ecac081a555b6513b91c5e0b8c93fa753e41becf.zip
Sync OpenBSD patchset 648:
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.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/window-copy.c b/window-copy.c
index 436b7b7a..6579a3f0 100644
--- a/window-copy.c
+++ b/window-copy.c
@@ -1,4 +1,4 @@
-/* $Id: window-copy.c,v 1.104 2010-02-18 12:38:24 tcunha Exp $ */
+/* $Id: window-copy.c,v 1.105 2010-02-26 13:26:44 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -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);