Subject: Re: bug#18136: 24.4.50; crash in redisplay when calling load-theme

From: Eli Zaretskii <[email-masked]>
Date: Tue, 29 Jul 2014 19:31:21 +0300

> Date: Tue, 29 Jul 2014 17:41:56 +0200
> From: martin rudalics <[email-masked]>
> CC: [email-masked], [email-masked]
> 
>  > E.g., with your suggested semantics, what would you expect from this:
>  >
>  >    emacs -Q
>  >    M-: (frame-height) RET
>  >    M-x menu-bar-mode RET
>  >    M-: (frame-height) RET
>  >
>  > Would you expect to see the 2 results of frame-height identical or
>  > different?
> 
> Ideally different in fullscreen/maximized/fullheight mode or with
> `frame-inhibit-implied-resize' non-nil, identical otherwise.

Shouldn't TTY frames behave as if they were fullscreen?  That's what
they (normally) are, right?

>  > Again, FrameRows and FrameCols updates are triggered in 3 possible
>  > ways:
>  >
>  >    . when the terminal is created
>  >
>  >    . when we get SIGWINCH
>  >
>  >    . when we call change_frame_size
>  >
>  > The last one was missing, which caused bug #17875, whereby switching
>  > to a different frame on the same terminal failed to update FrameRows
>  > and FrameCols, because neither of the first 2 triggers happened.
> 
> My bad.  For some reason I thought these were set in change_frame_size.
> Is calling change_frame_size necessary when switching frames?  What a
> strange thing to do.

No, my bad, sorry.  I confused this code with a similar one on
do_switch_frame, which was added due to bug #17875.  Obviously,
do_switch_frame _is_ called when we switch frames.

The code in change_frame_size_1 we are talking about was there since a
very long time (I see it in Emacs 21), and its purpose is to update
FrameRows and FrameCols when the user changes dimensions of a TTY
frame (e.g., by calling set-frame-height).  If you remove it, how can
we update those attributes otherwise?