From ecac081a555b6513b91c5e0b8c93fa753e41becf Mon Sep 17 00:00:00 2001 From: Tiago Cunha Date: Fri, 26 Feb 2010 13:26:44 +0000 Subject: 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. --- window-copy.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'window-copy.c') 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 @@ -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); -- cgit