From db87892598cf60ddfe183b757e850369fd97ebe2 Mon Sep 17 00:00:00 2001 From: Dan Nicolaescu Date: Fri, 30 Jan 2009 23:45:27 +0000 Subject: [PATCH] * dispnew.c (window_change_signal): Don't try to get the size of a suspended tty frame. * term.c (Fresume_tty): Resize if the size has changed while the tty was suspended. --- src/ChangeLog | 5 +++++ src/dispnew.c | 5 +++++ src/term.c | 14 +++++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index 947afe32cd3..0fb12db1707 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,10 @@ 2009-01-30 Dan Nicolaescu + * dispnew.c (window_change_signal): Don't try to get the size of a + suspended tty frame. + * term.c (Fresume_tty): Resize if the size has changed while the + tty was suspended. + * alloc.c (mark_stack): Properly conditionalize previous change. 2009-01-30 Juanma Barranquero diff --git a/src/dispnew.c b/src/dispnew.c index c94119fe9c9..bbe0f9fc961 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -6218,6 +6218,11 @@ window_change_signal (signalnum) /* If we don't have an argument, */ if (! tty->term_initted) continue; + /* Suspended tty frames have tty->input == NULL avoid trying to + use it. */ + if (!tty->input) + continue; + get_tty_size (fileno (tty->input), &width, &height); if (width > 5 && height > 2) { diff --git a/src/term.c b/src/term.c index c3df9ca4159..0cfc1ff3b95 100644 --- a/src/term.c +++ b/src/term.c @@ -2470,7 +2470,19 @@ the currently selected frame. */) #endif if (FRAMEP (t->display_info.tty->top_frame)) - FRAME_SET_VISIBLE (XFRAME (t->display_info.tty->top_frame), 1); + { + struct frame *f = XFRAME (t->display_info.tty->top_frame); + int width, height; + int old_height = FRAME_COLS (f); + int old_width = FRAME_LINES (f); + + /* Check if terminal/window size has changed while the frame + was suspended. */ + get_tty_size (fileno (t->display_info.tty->input), &width, &height); + if (width != old_width || height != old_height) + change_frame_size (f, height, width, 0, 0, 0); + FRAME_SET_VISIBLE (XFRAME (t->display_info.tty->top_frame), 1); + } init_sys_modes (t->display_info.tty); -- 2.39.2