summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Nicolaescu <dann@ics.uci.edu>2009-01-30 23:45:27 +0000
committerDan Nicolaescu <dann@ics.uci.edu>2009-01-30 23:45:27 +0000
commitdb87892598cf60ddfe183b757e850369fd97ebe2 (patch)
tree067a3c35e5f7838b0ca19a08813e8c4b7f6feb37
parent4d18a7a28e249a6335447047f5660282279d4468 (diff)
downloademacs-db87892598cf60ddfe183b757e850369fd97ebe2.tar.gz
* 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.
-rw-r--r--src/ChangeLog5
-rw-r--r--src/dispnew.c5
-rw-r--r--src/term.c14
3 files changed, 23 insertions, 1 deletions
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 <dann@ics.uci.edu>
+ * 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 <lekktu@gmail.com>
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);