GNU bug report logs -
#16736
Compiling a Lisp file causes display to flash off and on
Previous Next
Reported by: Glenn Morris <rgm <at> gnu.org>
Date: Thu, 13 Feb 2014 02:26:01 UTC
Severity: important
Found in version 24.3.50
Fixed in version 24.4
Done: Glenn Morris <rgm <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 16736 in the body.
You can then email your comments to 16736 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Thu, 13 Feb 2014 02:26:02 GMT)
Full text and
rfc822 format available.
Message #3 received at submit <at> debbugs.gnu.org (full text, mbox):
Package: emacs
Version: 24.3.50
Current trunk on x86_64 GNU/Linux, Lucid toolkit.
Visit some non-trivial file that compiles with no warnings:
emacs -Q some-file.el
M-x byte-compile-file RET RET
During the resulting compilation, at some point it looks like the Emacs
display goes completely blank. It happens a bit fast, so it is hard to
say exactly. It does not look to me as if it is switching to another
buffer (Compile-Log) and back again. It's like the display flashes off
and on. The tool-bar, mode line also disappear.
This effect does not happen with 24.3.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Fri, 14 Feb 2014 06:43:02 GMT)
Full text and
rfc822 format available.
Message #6 received at 16736 <at> debbugs.gnu.org (full text, mbox):
I'm noticing display flashes in other situations too. Eg with simply
emacs -Q, then repeating C-x 2, C-x 1 in sequence, I notice the toolbar
flashing quickly off and on. Not every time, but often. It's rather
distracting. I do not observe this with 24.3.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Fri, 14 Feb 2014 07:30:03 GMT)
Full text and
rfc822 format available.
Message #9 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> From: Glenn Morris <rgm <at> gnu.org>
> Date: Fri, 14 Feb 2014 01:42:29 -0500
>
>
> I'm noticing display flashes in other situations too. Eg with simply
> emacs -Q, then repeating C-x 2, C-x 1 in sequence, I notice the toolbar
> flashing quickly off and on. Not every time, but often. It's rather
> distracting. I do not observe this with 24.3.
I tried to reproduce your original report, but couldn't, perhaps
because I couldn't find a large enough Lisp file that compiles without
warnings. Can you tell which file did you use?
As for toolbar flickering with repeated "C-x 2" and "C-x 1", I don't
see it here. Is this with a configuration where Emacs draws the
toolbar, or is the toolbar drawn by the toolkit?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Fri, 14 Feb 2014 07:49:02 GMT)
Full text and
rfc822 format available.
Message #12 received at 16736 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii wrote:
> I tried to reproduce your original report, but couldn't, perhaps
> because I couldn't find a large enough Lisp file that compiles without
> warnings. Can you tell which file did you use?
I think I randomly used progmodes/scheme.el, but added
(require 'gnus)
(require 'org)
at the start, and deleted gnus/*.elc and org/*.elc to slow things down.
Basically make the slowest compilation you can, so long as there are no
warnings. It seems to be right at the end of the compilation that the
flash occurs.
> As for toolbar flickering with repeated "C-x 2" and "C-x 1", I don't
> see it here. Is this with a configuration where Emacs draws the
> toolbar, or is the toolbar drawn by the toolkit?
--with-x-toolkit=athena --without-toolkit-scroll-bars
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Sat, 15 Feb 2014 08:25:02 GMT)
Full text and
rfc822 format available.
Message #15 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> From: Glenn Morris <rgm <at> gnu.org>
> Cc: 16736 <at> debbugs.gnu.org
> Date: Fri, 14 Feb 2014 02:48:31 -0500
>
> Eli Zaretskii wrote:
>
> > I tried to reproduce your original report, but couldn't, perhaps
> > because I couldn't find a large enough Lisp file that compiles without
> > warnings. Can you tell which file did you use?
>
> I think I randomly used progmodes/scheme.el, but added
>
> (require 'gnus)
> (require 'org)
>
> at the start, and deleted gnus/*.elc and org/*.elc to slow things down.
>
> Basically make the slowest compilation you can, so long as there are no
> warnings. It seems to be right at the end of the compilation that the
> flash occurs.
I don't see any flash here.
What you describe, viz.:
> During the resulting compilation, at some point it looks like the Emacs
> display goes completely blank. It happens a bit fast, so it is hard to
> say exactly. It does not look to me as if it is switching to another
> buffer (Compile-Log) and back again. It's like the display flashes off
> and on. The tool-bar, mode line also disappear.
sounds like the frame is cleared and completely redrawn, which I won't
expect during byte-compile, which only redisplays the echo area. If I
put a breakpoint in clear_frame, it is never hit during your recipe.
> > As for toolbar flickering with repeated "C-x 2" and "C-x 1", I don't
> > see it here. Is this with a configuration where Emacs draws the
> > toolbar, or is the toolbar drawn by the toolkit?
>
> --with-x-toolkit=athena --without-toolkit-scroll-bars
These symptoms seem to indicate that the tool bar is redrawn, whereas
it shouldn't be, because its content is unchanged by "C-x 2". I don't
see any flickering here, so please step with GDB through the affected
code, as described below, and tell what you see.
I also tried this recipe:
(while t
(split-window-below)
(sit-for 0.05)
(delete-other-windows)
(sit-for 0.05))
Typing "C-x C-e" at the right paren of this in *scratch*, I see no
flickering in the tool bar. Do you?
To find out why does the tool-bar flicker, please step into the
portion of redisplay that redraws the tool bar. Its entry point is in
update_frame, like this:
#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS)
/* Update the tool-bar window, if present. */
if (WINDOWP (f->tool_bar_window))
{
struct window *w = XWINDOW (f->tool_bar_window);
/* Update tool-bar window. */
if (w->must_be_updated_p)
{
Lisp_Object tem;
update_window (w, 1);
w->must_be_updated_p = false;
/* Swap tool-bar strings. We swap because we want to
reuse strings. */
tem = f->current_tool_bar_string;
fset_current_tool_bar_string (f, f->desired_tool_bar_string);
fset_desired_tool_bar_string (f, tem);
}
}
#endif
Please step into the update_window call above. There you should see
that we perform this loop:
/* Update the rest of the lines. */
for (; row < end && (force_p || !input_pending); ++row)
/* scrolling_window resets the enabled_p flag of the rows it
reuses from current_matrix. */
if (row->enabled_p)
{
Then step into update_window_line call in that loop. The glyph rows
of the tool-bar window don't have marginal areas, so when the loop
calls update_window_line, only update_text_area is called from
update_window_line. There's call in update_text_area that compares
the glyph row of the current glyph matrix (which reflects what is on
the screen) and the desired glyph matrix (which says what should be on
the screen). The comparison code starts with this:
stop = min (current_row->used[TEXT_AREA], desired_stop_pos);
i = 0;
x = desired_row->x;
/* Loop over glyphs that current and desired row may have
in common. */
while (i < stop)
{
In my case, current_row and desired_row are exactly equal, so the tool
bar is never redrawn. Please see if things are different in your
case, and why.
You can display the contents of the glyph row with the pgrowx command
(defined on src/.gdbinit), like this:
(gdb) pgrowx current_row
TEXT: 13 glyphs
0 0: IMAGE[10] str=0x3a9f394[0] w=35 a+d=14+21 face=3 MB [ slice=0,0,24,24
1 35: IMAGE[11] str=0x3a9f394[1] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
2 69: IMAGE[12] str=0x3a9f394[2] w=29 a+d=14+21 face=3 MB slice=0,0,19,24
3 98: IMAGE[13] str=0x3a9f394[3] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
4 132: IMAGE[14] str=0x3a9f394[4] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
5 166: IMAGE[15] str=0x3a9f394[5] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
6 178: IMAGE[16] str=0x3a9f394[6] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
7 212: IMAGE[15] str=0x3a9f394[7] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
8 224: IMAGE[17] str=0x3a9f394[8] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
9 258: IMAGE[18] str=0x3a9f394[9] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
10 292: IMAGE[19] str=0x3a9f394[10] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
11 326: IMAGE[15] str=0x3a9f394[11] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
12 338: IMAGE[20] str=0x3a9f394[12] w=34 a+d=14+21 face=3 MB ] slice=0,0,24,24
Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Sat, 15 Feb 2014 08:35:01 GMT)
Full text and
rfc822 format available.
Message #18 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> Date: Sat, 15 Feb 2014 10:24:44 +0200
> From: Eli Zaretskii <eliz <at> gnu.org>
> Cc: 16736 <at> debbugs.gnu.org
>
> Then step into update_window_line call in that loop. The glyph rows
> of the tool-bar window don't have marginal areas, so when the loop
> calls update_window_line, only update_text_area is called from
> update_window_line. There's call in update_text_area that compares
^^^^
This should have been "code", sorry.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Sat, 15 Feb 2014 21:29:01 GMT)
Full text and
rfc822 format available.
Message #21 received at 16736 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii wrote:
> sounds like the frame is cleared and completely redrawn, which I won't
> expect during byte-compile, which only redisplays the echo area. If I
> put a breakpoint in clear_frame, it is never hit during your recipe.
I put a break on x_clear_frame, and with emacs -Q, byte-compile-file on
scheme.el triggers it.
> (while t
> (split-window-below)
> (sit-for 0.05)
> (delete-other-windows)
> (sit-for 0.05))
>
> Typing "C-x C-e" at the right paren of this in *scratch*, I see no
> flickering in the tool bar. Do you?
Oh yes. It looks awful!
In an attempt to follow your instructions, I put a break on dispnew.c:3045.
So far I don't think I am getting any useful information out of this,
because it seems to trigger a lot, and I'm not sure I'm catching it at
the right time. I'll try again later, but frankly I don't know what I'm
doing, even with your detailed instructions.
Here's current_row and desired_row in update_text_area one time.
TEXT: 13 glyphs
0 0: IMAGE[10] str=0x13fb5c8[0] w=35 a+d=14+21 face=3 MB [ slice=0,0,24,24
1 35: IMAGE[11] str=0x13fb5c8[1] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
2 69: IMAGE[12] str=0x13fb5c8[2] w=29 a+d=14+21 face=3 MB slice=0,0,19,24
3 98: IMAGE[13] str=0x13fb5c8[3] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
4 132: IMAGE[14] str=0x13fb5c8[4] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
5 166: IMAGE[15] str=0x13fb5c8[5] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
6 178: IMAGE[16] str=0x13fb5c8[6] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
7 212: IMAGE[15] str=0x13fb5c8[7] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
8 224: IMAGE[17] str=0x13fb5c8[8] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
9 258: IMAGE[18] str=0x13fb5c8[9] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
10 292: IMAGE[19] str=0x13fb5c8[10] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
11 326: IMAGE[15] str=0x13fb5c8[11] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
12 338: IMAGE[20] str=0x13fb5c8[12] w=34 a+d=14+21 face=3 MB ] slice=0,0,24,24
TEXT: 13 glyphs
0 0: IMAGE[10] str=0x13fbe90[0] w=35 a+d=14+21 face=3 MB [ slice=0,0,24,24
1 35: IMAGE[11] str=0x13fbe90[1] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
2 69: IMAGE[12] str=0x13fbe90[2] w=29 a+d=14+21 face=3 MB slice=0,0,19,24
3 98: IMAGE[13] str=0x13fbe90[3] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
4 132: IMAGE[14] str=0x13fbe90[4] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
5 166: IMAGE[15] str=0x13fbe90[5] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
6 178: IMAGE[16] str=0x13fbe90[6] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
7 212: IMAGE[15] str=0x13fbe90[7] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
8 224: IMAGE[17] str=0x13fbe90[8] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
9 258: IMAGE[18] str=0x13fbe90[9] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
10 292: IMAGE[19] str=0x13fbe90[10] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
11 326: IMAGE[15] str=0x13fbe90[11] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
12 338: IMAGE[20] str=0x13fbe90[12] w=34 a+d=14+21 face=3 MB ] slice=0,0,24,24
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Sat, 15 Feb 2014 22:08:02 GMT)
Full text and
rfc822 format available.
Message #24 received at 16736 <at> debbugs.gnu.org (full text, mbox):
Glenn Morris wrote:
>> (while t
>> (split-window-below)
>> (sit-for 0.05)
>> (delete-other-windows)
>> (sit-for 0.05))
>>
>> Typing "C-x C-e" at the right paren of this in *scratch*, I see no
>> flickering in the tool bar. Do you?
>
> Oh yes. It looks awful!
Bisected to:
revno: 115971
committer: martin rudalics <rudalics <at> gmx.at>
branch nick: trunk
timestamp: Sat 2014-01-11 10:31:09 +0100
message:
Fix handling of internal borders (Bug#16348).
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Sun, 16 Feb 2014 10:32:01 GMT)
Full text and
rfc822 format available.
Message #27 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> Bisected to:
>
> revno: 115971
> committer: martin rudalics <rudalics <at> gmx.at>
> branch nick: trunk
> timestamp: Sat 2014-01-11 10:31:09 +0100
> message:
> Fix handling of internal borders (Bug#16348).
Does anything change when you set the frame's internal border width to
zero? Does anything change when you disable the calls to
x_clear_under_internal_border? If so, can you spot one of these calls
as the offending one? I'm yet too silly to understand what's going on
here.
Thanks, martin
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Sun, 16 Feb 2014 16:18:01 GMT)
Full text and
rfc822 format available.
Message #30 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> From: Glenn Morris <rgm <at> gnu.org>
> Cc: 16736 <at> debbugs.gnu.org
> Date: Sat, 15 Feb 2014 16:28:13 -0500
>
>
> Eli Zaretskii wrote:
>
> > sounds like the frame is cleared and completely redrawn, which I won't
> > expect during byte-compile, which only redisplays the echo area. If I
> > put a breakpoint in clear_frame, it is never hit during your recipe.
>
> I put a break on x_clear_frame, and with emacs -Q, byte-compile-file on
> scheme.el triggers it.
Can you show a backtrace from that breakpoint?
> In an attempt to follow your instructions, I put a break on dispnew.c:3045.
>
> So far I don't think I am getting any useful information out of this,
> because it seems to trigger a lot, and I'm not sure I'm catching it at
> the right time.
I'm interested in seeing what happens the first time this breakpoint
breaks after you type "C-x 2" in *scratch*. (On my system, this is
the only time it breaks after "C-x 2"; do you see something
different?)
> Here's current_row and desired_row in update_text_area one time.
>
> TEXT: 13 glyphs
> 0 0: IMAGE[10] str=0x13fb5c8[0] w=35 a+d=14+21 face=3 MB [ slice=0,0,24,24
> 1 35: IMAGE[11] str=0x13fb5c8[1] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 2 69: IMAGE[12] str=0x13fb5c8[2] w=29 a+d=14+21 face=3 MB slice=0,0,19,24
> 3 98: IMAGE[13] str=0x13fb5c8[3] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 4 132: IMAGE[14] str=0x13fb5c8[4] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 5 166: IMAGE[15] str=0x13fb5c8[5] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
> 6 178: IMAGE[16] str=0x13fb5c8[6] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 7 212: IMAGE[15] str=0x13fb5c8[7] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
> 8 224: IMAGE[17] str=0x13fb5c8[8] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 9 258: IMAGE[18] str=0x13fb5c8[9] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 10 292: IMAGE[19] str=0x13fb5c8[10] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 11 326: IMAGE[15] str=0x13fb5c8[11] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
> 12 338: IMAGE[20] str=0x13fb5c8[12] w=34 a+d=14+21 face=3 MB ] slice=0,0,24,24
> TEXT: 13 glyphs
> 0 0: IMAGE[10] str=0x13fbe90[0] w=35 a+d=14+21 face=3 MB [ slice=0,0,24,24
> 1 35: IMAGE[11] str=0x13fbe90[1] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 2 69: IMAGE[12] str=0x13fbe90[2] w=29 a+d=14+21 face=3 MB slice=0,0,19,24
> 3 98: IMAGE[13] str=0x13fbe90[3] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 4 132: IMAGE[14] str=0x13fbe90[4] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 5 166: IMAGE[15] str=0x13fbe90[5] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
> 6 178: IMAGE[16] str=0x13fbe90[6] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 7 212: IMAGE[15] str=0x13fbe90[7] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
> 8 224: IMAGE[17] str=0x13fbe90[8] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 9 258: IMAGE[18] str=0x13fbe90[9] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 10 292: IMAGE[19] str=0x13fbe90[10] w=34 a+d=14+21 face=3 MB slice=0,0,24,24
> 11 326: IMAGE[15] str=0x13fbe90[11] w=12 a+d=14+21 face=3 MB slice=0,0,2,24
> 12 338: IMAGE[20] str=0x13fbe90[12] w=34 a+d=14+21 face=3 MB ] slice=0,0,24,24
These look identical to me. Are you saying that tracing into
update_window_line and then update_text_area for these two, you see
that the loop which starts at line 3598 ends with i's value smaller
than desired_row->used[TEXT_AREA], and you see these 3 lines (3696 to
3698) being executed:
output_cursor_to (w, vpos, start_hpos, desired_row->y, start_x);
rif->write_glyphs (w, updated_row, start,
TEXT_AREA, i - start_hpos);
changed_p = 1;
Again, please trace all this upon the first time the breakpoint on
line 3045 breaks after "C-x 2".
> I'll try again later, but frankly I don't know what I'm doing, even
> with your detailed instructions.
Thanks. Feel free to ask questions about things you'd like to
understand. In a nutshell, this is part of the code that updates the
window after Emacs has determined that some window(s) need to be
updated, in this case, due to "C-x 2" that created a new window and
made the old one smaller. The code I pointed to updates the tool-bar
window when anything on the tool bar changes, or refrains from
updating it if the tool bar did not change at all (which should happen
in this case).
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Sun, 16 Feb 2014 16:23:02 GMT)
Full text and
rfc822 format available.
Message #33 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> From: Glenn Morris <rgm <at> gnu.org>
> Cc: 16736 <at> debbugs.gnu.org, martin rudalics <rudalics <at> gmx.at>
> Date: Sat, 15 Feb 2014 17:07:38 -0500
>
> Glenn Morris wrote:
>
> >> (while t
> >> (split-window-below)
> >> (sit-for 0.05)
> >> (delete-other-windows)
> >> (sit-for 0.05))
> >>
> >> Typing "C-x C-e" at the right paren of this in *scratch*, I see no
> >> flickering in the tool bar. Do you?
> >
> > Oh yes. It looks awful!
>
> Bisected to:
>
> revno: 115971
> committer: martin rudalics <rudalics <at> gmx.at>
> branch nick: trunk
> timestamp: Sat 2014-01-11 10:31:09 +0100
> message:
> Fix handling of internal borders (Bug#16348).
Thanks, but I think we still need more info to find what caused this,
as most of that commit is for non-toolkit builds.
Can you put a breakpoint in change_frame_size_1, on line 5564:
SET_FRAME_COLS (f, new_cols); <<<<<<<<<<<<<<<<
FRAME_LINES (f) = new_lines;
FRAME_TEXT_WIDTH (f) = new_text_width;
and see if that breakpoint breaks when you type "C-x 2" in *scratch*?
If it does break, can you show the values of these:
new_text_width
FRAME_TEXT_WIDTH (f)
new_root_width
old_root_width
FRAME_TEXT_TO_PIXEL_WIDTH (f, new_text_width)
FRAME_INTERNAL_BORDER_WIDTH (f)
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Sun, 16 Feb 2014 16:47:02 GMT)
Full text and
rfc822 format available.
Message #36 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> Date: Sun, 16 Feb 2014 11:31:29 +0100
> From: martin rudalics <rudalics <at> gmx.at>
> CC: Eli Zaretskii <eliz <at> gnu.org>, 16736 <at> debbugs.gnu.org
>
> > Bisected to:
> >
> > revno: 115971
> > committer: martin rudalics <rudalics <at> gmx.at>
> > branch nick: trunk
> > timestamp: Sat 2014-01-11 10:31:09 +0100
> > message:
> > Fix handling of internal borders (Bug#16348).
>
> Does anything change when you set the frame's internal border width to
> zero? Does anything change when you disable the calls to
> x_clear_under_internal_border? If so, can you spot one of these calls
> as the offending one? I'm yet too silly to understand what's going on
> here.
Btw, the bug was about non-toolkit builds, but at least one of the
hunks affects toolkit builds as well. Not sure if that was intended.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Sun, 16 Feb 2014 17:15:01 GMT)
Full text and
rfc822 format available.
Message #39 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> Btw, the bug was about non-toolkit builds, but at least one of the
> hunks affects toolkit builds as well. Not sure if that was intended.
It was intended. A related bug showed up also on the Windows build.
I then checked the border behavior on all builds I made.
Basically, the changes should only clear areas where display artifacts
show up. It does that somewhat brute forcish (similar to the Gtk build)
but I can't yet imagine that these could screw up redisplay that much.
martin
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Sun, 16 Feb 2014 19:49:01 GMT)
Full text and
rfc822 format available.
Message #42 received at 16736 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii wrote:
>> I put a break on x_clear_frame, and with emacs -Q, byte-compile-file on
>> scheme.el triggers it.
>
> Can you show a backtrace from that breakpoint?
Easy enough.
#0 x_clear_frame (f=0x11cd8b8) at xterm.c:2909
#1 0x00000000004ece00 in clear_frame (f=0x11cd8b8) at terminal.c:140
#2 0x0000000000417f8f in redraw_frame (f=0x11cd8b8) at dispnew.c:2955
#3 0x0000000000448e4d in clear_garbaged_frames () at xdisp.c:10935
#4 0x0000000000448fb9 in echo_area_display (update_frame_p=1) at xdisp.c:10979
#5 0x000000000044703a in message3_nolog (m=14191025) at xdisp.c:9987
#6 0x0000000000446de9 in message3 (m=14191025) at xdisp.c:9929
#7 0x00000000005b560f in Fmessage (nargs=3, args=0x7fffffff8338)
at editfns.c:3452
#8 0x00000000005c0e83 in Ffuncall (nargs=4, args=0x7fffffff8330)
at eval.c:2796
#9 0x0000000000600e44 in exec_byte_code (bytestr=13161473, vector=19239277,
maxdepth=72, args_template=5140, nargs=5, args=0x7fffffff88d8)
at bytecode.c:919
#10 0x00000000005c16b2 in funcall_lambda (fun=18472445, nargs=5,
arg_vector=0x7fffffff88b0) at eval.c:2983
#11 0x00000000005c11a7 in Ffuncall (nargs=6, args=0x7fffffff88a8)
at eval.c:2864
#12 0x0000000000600e44 in exec_byte_code (bytestr=14003153, vector=18902205,
maxdepth=32, args_template=2056, nargs=2, args=0x7fffffff8e68)
at bytecode.c:919
#13 0x00000000005c16b2 in funcall_lambda (fun=18951917, nargs=2,
arg_vector=0x7fffffff8e58) at eval.c:2983
#14 0x00000000005c11a7 in Ffuncall (nargs=3, args=0x7fffffff8e50)
at eval.c:2864
#15 0x0000000000600e44 in exec_byte_code (bytestr=14003009, vector=18997205,
maxdepth=64, args_template=6168, nargs=6, args=0x7fffffff9420)
at bytecode.c:919
#16 0x00000000005c16b2 in funcall_lambda (fun=18997301, nargs=6,
arg_vector=0x7fffffff93f0) at eval.c:2983
#17 0x00000000005c11a7 in Ffuncall (nargs=7, args=0x7fffffff93e8)
at eval.c:2864
#18 0x0000000000600e44 in exec_byte_code (bytestr=14002977, vector=18073693,
maxdepth=68, args_template=5140, nargs=5, args=0x7fffffff99e8)
at bytecode.c:919
#19 0x00000000005c16b2 in funcall_lambda (fun=18997349, nargs=5,
arg_vector=0x7fffffff99c0) at eval.c:2983
#20 0x00000000005c11a7 in Ffuncall (nargs=6, args=0x7fffffff99b8)
at eval.c:2864
#21 0x0000000000600e44 in exec_byte_code (bytestr=14002785, vector=18997397,
maxdepth=120, args_template=1028, nargs=1, args=0x7fffffff9f68)
at bytecode.c:919
#22 0x00000000005c16b2 in funcall_lambda (fun=18997477, nargs=1,
arg_vector=0x7fffffff9f60) at eval.c:2983
#23 0x00000000005c11a7 in Ffuncall (nargs=2, args=0x7fffffff9f58)
at eval.c:2864
#24 0x0000000000600e44 in exec_byte_code (bytestr=21918129, vector=17903693,
maxdepth=16, args_template=1028, nargs=1, args=0x7fffffffa4a0)
at bytecode.c:919
#25 0x00000000005c16b2 in funcall_lambda (fun=17919557, nargs=1,
arg_vector=0x7fffffffa498) at eval.c:2983
#26 0x00000000005c11a7 in Ffuncall (nargs=2, args=0x7fffffffa490)
at eval.c:2864
#27 0x0000000000600e44 in exec_byte_code (bytestr=21918449, vector=17903597,
maxdepth=20, args_template=1028, nargs=1, args=0x7fffffffa9e0)
at bytecode.c:919
#28 0x00000000005c16b2 in funcall_lambda (fun=17903645, nargs=1,
arg_vector=0x7fffffffa9d8) at eval.c:2983
#29 0x00000000005c11a7 in Ffuncall (nargs=2, args=0x7fffffffa9d0)
at eval.c:2864
#30 0x0000000000600e44 in exec_byte_code (bytestr=14339425, vector=19017693,
maxdepth=16, args_template=0, nargs=0, args=0x7fffffffaf10)
at bytecode.c:919
#31 0x00000000005c16b2 in funcall_lambda (fun=19017861, nargs=0,
arg_vector=0x7fffffffaf10) at eval.c:2983
#32 0x00000000005c11a7 in Ffuncall (nargs=1, args=0x7fffffffaf08)
at eval.c:2864
#33 0x0000000000600e44 in exec_byte_code (bytestr=14364257, vector=19207309,
maxdepth=4, args_template=0, nargs=0, args=0x7fffffffb438)
at bytecode.c:919
#34 0x00000000005c16b2 in funcall_lambda (fun=19308733, nargs=0,
arg_vector=0x7fffffffb438) at eval.c:2983
#35 0x00000000005c11a7 in Ffuncall (nargs=1, args=0x7fffffffb430)
at eval.c:2864
#36 0x00000000005bfa48 in eval_sub (form=13338950) at eval.c:2157
#37 0x00000000005bdd6a in internal_lisp_condition_case (var=14018162,
bodyform=13338950, handlers=13339046) at eval.c:1323
#38 0x0000000000601ff5 in exec_byte_code (bytestr=21623585, vector=19198157,
maxdepth=64, args_template=1028, nargs=1, args=0x7fffffffbc48)
at bytecode.c:1169
#39 0x00000000005c16b2 in funcall_lambda (fun=16683157, nargs=1,
arg_vector=0x7fffffffbc40) at eval.c:2983
#40 0x00000000005c11a7 in Ffuncall (nargs=2, args=0x7fffffffbc38)
at eval.c:2864
#41 0x0000000000600e44 in exec_byte_code (bytestr=21665569, vector=18963773,
maxdepth=68, args_template=2052, nargs=1, args=0x7fffffffc1a8)
at bytecode.c:919
#42 0x00000000005c16b2 in funcall_lambda (fun=16684125, nargs=1,
arg_vector=0x7fffffffc1a0) at eval.c:2983
#43 0x00000000005c11a7 in Ffuncall (nargs=2, args=0x7fffffffc198)
at eval.c:2864
#44 0x0000000000600e44 in exec_byte_code (bytestr=10789089, vector=10789125,
maxdepth=8, args_template=0, nargs=0, args=0x7fffffffc6d0)
at bytecode.c:919
#45 0x00000000005c16b2 in funcall_lambda (fun=10789037, nargs=0,
arg_vector=0x7fffffffc6d0) at eval.c:2983
#46 0x00000000005c11a7 in Ffuncall (nargs=1, args=0x7fffffffc6c8)
at eval.c:2864
#47 0x00000000005c08c7 in apply1 (fn=20569570, arg=12757298) at eval.c:2581
#48 0x00000000005b9cd3 in Fcall_interactively (function=20569570,
record_flag=12757298, keys=12792317) at callint.c:378
#49 0x00000000005c1014 in Ffuncall (nargs=4, args=0x7fffffffc9f8)
at eval.c:2822
#50 0x0000000000600e44 in exec_byte_code (bytestr=10183985, vector=10184021,
maxdepth=52, args_template=4100, nargs=1, args=0x7fffffffcf60)
at bytecode.c:919
#51 0x00000000005c16b2 in funcall_lambda (fun=10183941, nargs=1,
arg_vector=0x7fffffffcf58) at eval.c:2983
#52 0x00000000005c11a7 in Ffuncall (nargs=2, args=0x7fffffffcf50)
at eval.c:2864
#53 0x00000000005c096c in call1 (fn=12801186, arg1=20569570) at eval.c:2614
#54 0x0000000000531592 in command_loop_1 () at keyboard.c:1556
#55 0x00000000005bdecd in internal_condition_case (
bfun=0x530eab <command_loop_1>, handlers=12808898,
hfun=0x5307bd <cmd_error>) at eval.c:1354
#56 0x0000000000530c05 in command_loop_2 (ignore=12757298) at keyboard.c:1174
#57 0x00000000005bd6df in internal_catch (tag=12804834,
func=0x530bdf <command_loop_2>, arg=12757298) at eval.c:1118
#58 0x0000000000530bb3 in command_loop () at keyboard.c:1153
#59 0x00000000005303b8 in recursive_edit_1 () at keyboard.c:777
#60 0x0000000000530525 in Frecursive_edit () at keyboard.c:845
#61 0x000000000052e550 in main (argc=3, argv=0x7fffffffd438) at emacs.c:1643
Lisp Backtrace:
"message" (0xffff8338)
"byte-compile-file-form-defmumble" (0xffff88b0)
0x1212ee8 PVEC_COMPILED
0x121e030 PVEC_COMPILED
0x121e060 PVEC_COMPILED
"byte-compile-file-form-defalias" (0xffff9f60)
"byte-compile-file-form" (0xffffa498)
"byte-compile-toplevel-file-form" (0xffffa9d8)
0x1223080 PVEC_COMPILED
0x126a0b8 PVEC_COMPILED
"funcall" (0xffffb430)
"byte-compile-from-buffer" (0xffffbc40)
"byte-compile-file" (0xffffc1a0)
"emacs-lisp-byte-compile" (0xffffc6d0)
"call-interactively" (0xffffca00)
"command-execute" (0xffffcf58)
I don't have time to look into the rest of the things you asked right
now.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Sun, 16 Feb 2014 21:05:01 GMT)
Full text and
rfc822 format available.
Message #45 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> From: Glenn Morris <rgm <at> gnu.org>
> Cc: 16736 <at> debbugs.gnu.org
> Date: Sun, 16 Feb 2014 14:48:10 -0500
>
> Eli Zaretskii wrote:
>
> >> I put a break on x_clear_frame, and with emacs -Q, byte-compile-file on
> >> scheme.el triggers it.
> >
> > Can you show a backtrace from that breakpoint?
>
> Easy enough.
>
> #0 x_clear_frame (f=0x11cd8b8) at xterm.c:2909
> #1 0x00000000004ece00 in clear_frame (f=0x11cd8b8) at terminal.c:140
> #2 0x0000000000417f8f in redraw_frame (f=0x11cd8b8) at dispnew.c:2955
> #3 0x0000000000448e4d in clear_garbaged_frames () at xdisp.c:10935
> #4 0x0000000000448fb9 in echo_area_display (update_frame_p=1) at xdisp.c:10979
> #5 0x000000000044703a in message3_nolog (m=14191025) at xdisp.c:9987
> #6 0x0000000000446de9 in message3 (m=14191025) at xdisp.c:9929
> #7 0x00000000005b560f in Fmessage (nargs=3, args=0x7fffffff8338)
> at editfns.c:3452
Thanks. This clearly shows that the frame was marked as "garbaged",
which naturally requires its complete redrawing.
The question now becomes why it is marked garbaged. It's possible
that the change in change_frame_size_1 is the reason, because the code
in that function does just that.
> I don't have time to look into the rest of the things you asked right
> now.
I hope you will some time soon, as I think we are zeroing in on the
culprit.
Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 00:54:02 GMT)
Full text and
rfc822 format available.
Message #48 received at 16736 <at> debbugs.gnu.org (full text, mbox):
martin rudalics wrote:
> Does anything change when you set the frame's internal border width to
> zero?
emacs -Q -ib 0
seems the same.
> Does anything change when you disable the calls to
> x_clear_under_internal_border?
AFAICS, that function is not defined for me, since USE_X_TOOLKIT = 1.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 00:59:02 GMT)
Full text and
rfc822 format available.
Message #51 received at 16736 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii wrote:
> Can you put a breakpoint in change_frame_size_1, on line 5564:
>
> SET_FRAME_COLS (f, new_cols); <<<<<<<<<<<<<<<<
> FRAME_LINES (f) = new_lines;
> FRAME_TEXT_WIDTH (f) = new_text_width;
>
> and see if that breakpoint breaks when you type "C-x 2" in *scratch*?
Yes, it does.
> new_text_width
> FRAME_TEXT_WIDTH (f)
> new_root_width
> old_root_width
> FRAME_TEXT_TO_PIXEL_WIDTH (f, new_text_width)
> FRAME_INTERNAL_BORDER_WIDTH (f)
640
640
672
672
674
1
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 01:19:01 GMT)
Full text and
rfc822 format available.
Message #54 received at 16736 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii wrote:
>> In an attempt to follow your instructions, I put a break on dispnew.c:3045.
[...]
> I'm interested in seeing what happens the first time this breakpoint
> breaks after you type "C-x 2" in *scratch*. (On my system, this is
> the only time it breaks after "C-x 2"; do you see something
> different?)
I do
gdb> run -Q
and continue a few times until Emacs starts up. If I then select the
Emacs window with the mouse, it breaks twice, so I have to reselect the
gdb window to get it to continue, and then when I select the Emacs
window... Anyway, I can get around that by alt-tabbing back into Emacs.
> Are you saying that tracing into update_window_line and then
> update_text_area for these two, you see that the loop which starts at
> line 3598 ends with i's value smaller than
> desired_row->used[TEXT_AREA], and you see these 3 lines (3696 to 3698)
> being executed:
That does not seem to happen, no.
I have i = stop = 13 = desired_row->used[TEXT_AREA].
> Again, please trace all this upon the first time the breakpoint on
> line 3045 breaks after "C-x 2".
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 05:15:01 GMT)
Full text and
rfc822 format available.
Message #57 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> From: Glenn Morris <rgm <at> gnu.org>
> Cc: 16736 <at> debbugs.gnu.org, rudalics <at> gmx.at
> Date: Sun, 16 Feb 2014 19:58:13 -0500
>
> Eli Zaretskii wrote:
>
> > Can you put a breakpoint in change_frame_size_1, on line 5564:
> >
> > SET_FRAME_COLS (f, new_cols); <<<<<<<<<<<<<<<<
> > FRAME_LINES (f) = new_lines;
> > FRAME_TEXT_WIDTH (f) = new_text_width;
> >
> > and see if that breakpoint breaks when you type "C-x 2" in *scratch*?
>
> Yes, it does.
>
> > new_text_width
> > FRAME_TEXT_WIDTH (f)
> > new_root_width
> > old_root_width
> > FRAME_TEXT_TO_PIXEL_WIDTH (f, new_text_width)
> > FRAME_INTERNAL_BORDER_WIDTH (f)
>
> 640
> 640
> 672
> 672
> 674
> 1
OK, then that's the root cause, right there: this function continues
to do this:
adjust_frame_glyphs (f);
calculate_costs (f);
SET_FRAME_GARBAGED (f);
f->resized_p = 1;
which marks the frame "garbaged" and requires its complete redisplay,
that starts with clearing it (as you have demonstrated in your
backtrace a few messages ago), and continues by redrawing the tool
bar.
Martin, any ideas why this happens in a toolkit build? I don't
understand how come this condition:
if (new_text_height == FRAME_TEXT_HEIGHT (f)
&& new_text_width == FRAME_TEXT_WIDTH (f)
&& new_root_width == old_root_width
&& (FRAME_PIXEL_HEIGHT (f) ==
FRAME_TEXT_TO_PIXEL_HEIGHT (f, new_text_height))
&& (FRAME_PIXEL_WIDTH (f) ==
FRAME_TEXT_TO_PIXEL_WIDTH (f, new_text_width)))
return;
fails to cause the function to return. The reason must be in the 2
last conditions, which you added in revision 115971.
Glenn, can you show the values of FRAME_PIXEL_HEIGHT (f) and
FRAME_PIXEL_WIDTH (f) in this scenario?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 05:16:02 GMT)
Full text and
rfc822 format available.
Message #60 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> From: Glenn Morris <rgm <at> gnu.org>
> Cc: 16736 <at> debbugs.gnu.org
> Date: Sun, 16 Feb 2014 20:18:39 -0500
>
> > Are you saying that tracing into update_window_line and then
> > update_text_area for these two, you see that the loop which starts at
> > line 3598 ends with i's value smaller than
> > desired_row->used[TEXT_AREA], and you see these 3 lines (3696 to 3698)
> > being executed:
>
> That does not seem to happen, no.
> I have i = stop = 13 = desired_row->used[TEXT_AREA].
That figures: the problem is not that the rows differ, the problem is
that Emacs thinks the frame is garbaged, and redraws it
unconditionally.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 07:46:02 GMT)
Full text and
rfc822 format available.
Message #63 received at 16736 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii wrote:
> if (new_text_height == FRAME_TEXT_HEIGHT (f)
> && new_text_width == FRAME_TEXT_WIDTH (f)
> && new_root_width == old_root_width
> && (FRAME_PIXEL_HEIGHT (f) ==
> FRAME_TEXT_TO_PIXEL_HEIGHT (f, new_text_height))
> && (FRAME_PIXEL_WIDTH (f) ==
> FRAME_TEXT_TO_PIXEL_WIDTH (f, new_text_width)))
> return;
new_text_height = 570 = FRAME_TEXT_HEIGHT (f)
new_text_width = 640 = FRAME_TEXT_WIDTH (f)
new_root_width = 672 = old_root_width
FRAME_PIXEL_HEIGHT (f) = 605
FRAME_TEXT_TO_PIXEL_HEIGHT (f, new_text_height) = 572
new_text_height = 570
FRAME_PIXEL_WIDTH (f) = 674 = FRAME_TEXT_TO_PIXEL_WIDTH (f, new_text_width)
new_text_width = 640
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 15:43:02 GMT)
Full text and
rfc822 format available.
Message #66 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> From: Glenn Morris <rgm <at> gnu.org>
> Cc: 16736 <at> debbugs.gnu.org, rudalics <at> gmx.at
> Date: Mon, 17 Feb 2014 02:45:40 -0500
>
> Eli Zaretskii wrote:
>
> > if (new_text_height == FRAME_TEXT_HEIGHT (f)
> > && new_text_width == FRAME_TEXT_WIDTH (f)
> > && new_root_width == old_root_width
> > && (FRAME_PIXEL_HEIGHT (f) ==
> > FRAME_TEXT_TO_PIXEL_HEIGHT (f, new_text_height))
> > && (FRAME_PIXEL_WIDTH (f) ==
> > FRAME_TEXT_TO_PIXEL_WIDTH (f, new_text_width)))
> > return;
>
> new_text_height = 570 = FRAME_TEXT_HEIGHT (f)
> new_text_width = 640 = FRAME_TEXT_WIDTH (f)
> new_root_width = 672 = old_root_width
>
> FRAME_PIXEL_HEIGHT (f) = 605
> FRAME_TEXT_TO_PIXEL_HEIGHT (f, new_text_height) = 572
> new_text_height = 570
Looks like FRAME_PIXEL_HEIGHT includes the tool bar, and is thus 33
pixels larger than we expect. (What is f->tool_bar_height?) But I
cannot find the place where we assign any value to FRAME_PIXEL_HEIGHT,
except in this very function, so I'm unsure where do those extra 33
pixels come from.
Glenn, if you put a breakpoint in change_frame_size_1 and then just
"run -Q", can you show all the calls you see until Emacs starts up,
including the arguments we pass to that function? Here's what I see
on Windows:
(gdb) break change_frame_size_1
Breakpoint 3 at 0x100d809: file dispnew.c, line 5467.
(gdb) r -Q
Starting program: D:\gnu\bzr\emacs\trunk\src\emacs.exe -Q
[New Thread 2272.0x13c0]
[New Thread 2272.0x1790]
[New Thread 2272.0x324]
Breakpoint 3, change_frame_size_1 (f=0x394a9d8, new_width=80, new_height=160,
pretend=true, delay=false, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
(gdb) c
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x394a9d8, new_width=640,
new_height=608, pretend=false, delay=true, safe=false, pixelwise=true)
at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
(gdb)
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x394a9d8, new_width=640,
new_height=608, pretend=false, delay=true, safe=false, pixelwise=true)
at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
(gdb)
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x394a9d8, new_width=640,
new_height=608, pretend=false, delay=false, safe=false, pixelwise=true)
at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
(gdb)
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x394a9d8, new_width=0, new_height=0,
pretend=false, delay=false, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
(gdb)
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x394a9d8, new_width=640,
new_height=608, pretend=true, delay=false, safe=false, pixelwise=true)
at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
(gdb)
Continuing.
(The 640x608 size corresponds to the 80x35 text size I get (35
includes the mode line and the echo area), plus the equivalent of 3
text lines used for the tool bar.)
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 16:24:02 GMT)
Full text and
rfc822 format available.
Message #69 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> Looks like FRAME_PIXEL_HEIGHT includes the tool bar, and is thus 33
> pixels larger than we expect. (What is f->tool_bar_height?) But I
> cannot find the place where we assign any value to FRAME_PIXEL_HEIGHT,
> except in this very function, so I'm unsure where do those extra 33
> pixels come from.
It's from update_various_frame_slots in widget.c. If you comment that
out, the problem disappears. But I don't know yet whether it's needed
elsewhere ...
martin
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 16:51:02 GMT)
Full text and
rfc822 format available.
Message #72 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> Date: Mon, 17 Feb 2014 17:23:25 +0100
> From: martin rudalics <rudalics <at> gmx.at>
> CC: Glenn Morris <rgm <at> gnu.org>, 16736 <at> debbugs.gnu.org
>
> > Looks like FRAME_PIXEL_HEIGHT includes the tool bar, and is thus 33
> > pixels larger than we expect. (What is f->tool_bar_height?) But I
> > cannot find the place where we assign any value to FRAME_PIXEL_HEIGHT,
> > except in this very function, so I'm unsure where do those extra 33
> > pixels come from.
>
> It's from update_various_frame_slots in widget.c. If you comment that
> out, the problem disappears. But I don't know yet whether it's needed
> elsewhere ...
If you mean this:
FRAME_PIXEL_HEIGHT (f) = ew->core.height + x->menubar_height;
then does it mean that menubar_height is 33 pixels? Sounds too much
to me.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 17:18:02 GMT)
Full text and
rfc822 format available.
Message #75 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> If you mean this:
>
> FRAME_PIXEL_HEIGHT (f) = ew->core.height + x->menubar_height;
>
> then does it mean that menubar_height is 33 pixels? Sounds too much
> to me.
In change_frame_size I here have a FRAME_PIXEL_HEIGHT of 697 and a
new_text_height of 667. f->output_data.x->menubar_height equals 28 and
there are two pixels to add for the default internal border.
martin
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 17:28:01 GMT)
Full text and
rfc822 format available.
Message #78 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> Date: Mon, 17 Feb 2014 18:16:46 +0100
> From: martin rudalics <rudalics <at> gmx.at>
> CC: rgm <at> gnu.org, 16736 <at> debbugs.gnu.org
>
> > If you mean this:
> >
> > FRAME_PIXEL_HEIGHT (f) = ew->core.height + x->menubar_height;
> >
> > then does it mean that menubar_height is 33 pixels? Sounds too much
> > to me.
>
> In change_frame_size I here have a FRAME_PIXEL_HEIGHT of 697 and a
> new_text_height of 667. f->output_data.x->menubar_height equals 28 and
> there are two pixels to add for the default internal border.
OK, so it sounds like we need to make change_frame_size_1 consistent
with widget.c code.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 17:59:01 GMT)
Full text and
rfc822 format available.
Message #81 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> OK, so it sounds like we need to make change_frame_size_1 consistent
> with widget.c code.
IMO the widget.c code is inherently absurd. EmacsFrameResize processes
a resize request by calculating a text size from ew->core.height. Then
it sets
FRAME_PIXEL_HEIGHT (f) = ew->core.height + x->menubar_height;
and update_from_various_frame_slots inversely processes
ew->core.height = FRAME_PIXEL_HEIGHT (f) - x->menubar_height;
where update_from_various_frame_slots is called only by
EmacsFrameInitialize. Does anyone understand what this is good for?
martin
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 18:20:02 GMT)
Full text and
rfc822 format available.
Message #84 received at 16736 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii wrote:
> (What is f->tool_bar_height?)
45
> Glenn, if you put a breakpoint in change_frame_size_1 and then just
> "run -Q", can you show all the calls you see until Emacs starts up,
> including the arguments we pass to that function?
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=80, new_height=150,
pretend=true, delay=false, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=false, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=0, new_height=0,
pretend=false, delay=false, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=true, delay=false, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=537,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=537,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=80, new_height=38,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=537,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=537,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=571,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=571,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=false, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=false, safe=true, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=false, safe=true, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
pretend=false, delay=false, safe=true, pixelwise=true) at dispnew.c:5467
5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
Continuing.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 18:48:02 GMT)
Full text and
rfc822 format available.
Message #87 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> From: Glenn Morris <rgm <at> gnu.org>
> Cc: 16736 <at> debbugs.gnu.org, rudalics <at> gmx.at
> Date: Mon, 17 Feb 2014 13:19:54 -0500
>
> Eli Zaretskii wrote:
>
> > (What is f->tool_bar_height?)
>
> 45
>
> > Glenn, if you put a breakpoint in change_frame_size_1 and then just
> > "run -Q", can you show all the calls you see until Emacs starts up,
> > including the arguments we pass to that function?
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=80, new_height=150,
> pretend=true, delay=false, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=false, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=0, new_height=0,
> pretend=false, delay=false, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=true, delay=false, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=537,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=537,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=80, new_height=38,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=537,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=537,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=571,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=571,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=false, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=false, safe=true, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=false, safe=true, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
>
> Breakpoint 3, change_frame_size_1 (f=0x11cd8b8, new_width=640, new_height=570,
> pretend=false, delay=false, safe=true, pixelwise=true) at dispnew.c:5467
> 5467 int old_root_width = WINDOW_PIXEL_WIDTH (XWINDOW (FRAME_ROOT_WINDOW (f)));
> Continuing.
Thanks.
Martin, any idea what this dance with 570/537/571/570 sizes is about?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Mon, 17 Feb 2014 18:57:02 GMT)
Full text and
rfc822 format available.
Message #90 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> Date: Mon, 17 Feb 2014 18:58:42 +0100
> From: martin rudalics <rudalics <at> gmx.at>
> CC: rgm <at> gnu.org, 16736 <at> debbugs.gnu.org
>
> > OK, so it sounds like we need to make change_frame_size_1 consistent
> > with widget.c code.
>
> IMO the widget.c code is inherently absurd. EmacsFrameResize processes
> a resize request by calculating a text size from ew->core.height. Then
> it sets
>
> FRAME_PIXEL_HEIGHT (f) = ew->core.height + x->menubar_height;
>
> and update_from_various_frame_slots inversely processes
>
> ew->core.height = FRAME_PIXEL_HEIGHT (f) - x->menubar_height;
>
> where update_from_various_frame_slots is called only by
> EmacsFrameInitialize. Does anyone understand what this is good for?
The latter part is not important, I think, because ew->core is not
used anywhere.
So the only important part here is setting FRAME_PIXEL_HEIGHT and
other fields of the frame struct.
widget.c is compiled only for X toolkits, right? So I think making
update_various_frame_slots consistent with change_frame_size_1 when
USE_X_TOOLKIT will fix the problem.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Tue, 18 Feb 2014 11:03:03 GMT)
Full text and
rfc822 format available.
Message #93 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> So the only important part here is setting FRAME_PIXEL_HEIGHT and
> other fields of the frame struct.
>
> widget.c is compiled only for X toolkits, right? So I think making
> update_various_frame_slots consistent with change_frame_size_1 when
> USE_X_TOOLKIT will fix the problem.
I defined out the assignments in update_various_frame_slots. I saw no
other way because FRAME_PIXEL_HEIGHT inherently records the "old"
internal border width (that's all it does IIUC). When the border width
changes, the text height remains unaltered, and I see no alternate means
to detect the change and redraw the frame appropriately.
martin
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Tue, 18 Feb 2014 11:04:01 GMT)
Full text and
rfc822 format available.
Message #96 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> Martin, any idea what this dance with 570/537/571/570 sizes is about?
The 570 ~> 537 seem caused by the 33 difference of Glenn's frame pixel
height w and w/o menubar + internal borders. The 571 one is a mystery
to me. Most of these changes seem caused by frequent calls of resize_cb
whose frequency is a mystery to me as well. I also recall having seen
tooltip frames in here.
martin
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Tue, 18 Feb 2014 18:09:02 GMT)
Full text and
rfc822 format available.
Message #99 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> Date: Tue, 18 Feb 2014 12:02:41 +0100
> From: martin rudalics <rudalics <at> gmx.at>
> CC: rgm <at> gnu.org, 16736 <at> debbugs.gnu.org
>
> > So the only important part here is setting FRAME_PIXEL_HEIGHT and
> > other fields of the frame struct.
> >
> > widget.c is compiled only for X toolkits, right? So I think making
> > update_various_frame_slots consistent with change_frame_size_1 when
> > USE_X_TOOLKIT will fix the problem.
>
> I defined out the assignments in update_various_frame_slots. I saw no
> other way because FRAME_PIXEL_HEIGHT inherently records the "old"
> internal border width (that's all it does IIUC). When the border width
> changes, the text height remains unaltered, and I see no alternate means
> to detect the change and redraw the frame appropriately.
Thanks. I see no problem with your changes.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Tue, 18 Feb 2014 18:20:01 GMT)
Full text and
rfc822 format available.
Message #102 received at 16736 <at> debbugs.gnu.org (full text, mbox):
martin rudalics wrote:
> I defined out the assignments in update_various_frame_slots.
Thanks, it doesn't flash now, so I'll close this.
(Please reopen, or open a new report, if you still think there are issues.)
bug marked as fixed in version 24.4, send any further explanations to
16736 <at> debbugs.gnu.org and Glenn Morris <rgm <at> gnu.org>
Request was from
Glenn Morris <rgm <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Tue, 18 Feb 2014 18:20:05 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#16736
; Package
emacs
.
(Wed, 19 Feb 2014 10:03:02 GMT)
Full text and
rfc822 format available.
Message #107 received at 16736 <at> debbugs.gnu.org (full text, mbox):
> Thanks. I see no problem with your changes.
Thanks to you and Glenn for the forensics.
martin
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Wed, 19 Mar 2014 11:24:03 GMT)
Full text and
rfc822 format available.
This bug report was last modified 10 years and 235 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.