Subject: Re: bug#16923: 24.3.50; reression: `set-frame-size' loses mode line

From: martin rudalics <[email-masked]>
Date: Sat, 08 Mar 2014 19:59:01 +0100

> In the debug output I sent, file throw-emacs-bug-16923.txt, you see,
 > as I mentioned, seven calls to `fit-frame' (each "------------" in the
 > file).  I was doing `s RET' in Info, non-incrementally searching for
 > the next occurrence of a string ("terminals").  Each press of `s'
 > entailed a single call to `fit-frame'.  In some cases a second
 > occurrence was found in the same node, so any `s' and its `fit-frame'
 > other than the first in such a node is essentially a no-op (except for
 > the bug side effect of removing the mode line).
 >
 > Does that respond to your question about how often frame resizing is
 > requested per "redisplay cycle"?  I do not know the period, whether
 > in terms of a number of input events or elapsed time, of a "redisplay
 > cycle", but I can say that my pressing of `s' determined the calls
 > to `fit-frame': one per press.
 >
 > And in the other test I did earlier, just using `M-: (fit-frame)'
 > twice in the same frame, the number of calls to `fit-frame' was two.

I see 42 calls of `window--dump-frame' which from what you say above
means that for every `fit-frame' there are 6 calls of
`window--dump-frame'.  Does that mean there are 6 `set-frame-size'
requests per each `fit-frame' call?

Note: I'm not interested in `fit-frame' or how you calculate frame
sizes.  I'm only interested in your calls of `set-frame-size' or
whatever you use to resize your frame.  How many such calls are there in
throw-emacs-bug-16923?  And how can I attribute any of these calls to a
frame without a mode line?

 > You say that you "assume that Emacs sent so many resize requests in
 > a row that it was able to confuse Windows".  What do you mean to draw
 > attention to here: the number of requests in a row

The number.

 > or the rapidity or
 > frequency of resize requests?  What constitutes a "row", i.e., until
 > interrupted by what?

By redisplay.

 > Based on what I say above, I do not see how it could be that either
 > a high cadence or a high number of successive `fit-frame' calls could
 > be overwhelming redisplay.  But I am entirely ignorant about redisplay,
 > and I am not very clear about what you are asking here.

The problem is not in redisplay.  The problem is the number of resize
requests sent in succession to the window manager before redisplay
occurs.  On Windows this is the number of calls of AdjustWindowRect
which corresponds to the number of calls of `set-frame-size'.  Redisplay
should occur only after Emacs has negotiated with Windows for each of
these calls.

Anyway.  Beginning with the fourth "------------" on line 271 of
throw-emacs-bug-16923 the height difference of window and client
rectangle is 56 and not 80 as before.  Unless we can resolve that
mystery it hardly make sense to experiment any further.

martin