emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Redisplay issue


From: Eli Zaretskii
Subject: Re: Redisplay issue
Date: Wed, 02 Dec 2015 15:57:06 +0200

> Date: Tue, 1 Dec 2015 20:35:43 -0800
> From: Yuan MEI <address@hidden>
> Cc: emacs-devel <address@hidden>
> 
> > I have only one more idea: can you build Emacs without Cairo?  Cairo
> > changes the way Emacs draws the screen in significant ways, and that
> > is the only part of this puzzle that we didn't verify yet.  The traces
> > indicate that everything up to the point where we invoke the drawing
> > code is identical between the "good" and the "bad" cases, and
> > correctly instructs the display back-end to redraw every screen line
> > in the exposed region(s).
> 
> Very interesting.  The partial redraw problem seems to be gone when
> cairo is disabled.  I couldn't reproduce the bad case any more.
> However I encountered another bug when cairo is disabled: did C-h h to
> bring up HELLO, and Emacs crashed:
> 
> lisp.h:1543: Emacs fatal error: assertion failed: 0 <= size
> Fatal error 6: Aborted
> lisp.h:1543: Emacs fatal error: assertion failed: 0 <= size
> Aborted

When did you last update from the repository?  I believe this bug was
solved a week ago, in commit d5fdffecdfad305d9c933ae3cad75a5e4e73878c.

If your sources include the changes in that commit, please show a GDB
backtrace when Emacs aborts.

A stub in the dark: does the change below fix the Cairo build, per
chance?

diff --git a/src/xdisp.c b/src/xdisp.c
index d1a10ca..7221032 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -30268,6 +30268,7 @@ expose_area (struct window *w, struct glyph_row *row, 
XRectangle *r,
   struct glyph *last;
   int first_x, start_x, x;
 
+  block_input ();
   if (area == TEXT_AREA && row->fill_line_p)
     /* If row extends face to end of line write the whole line.  */
     draw_glyphs (w, 0, row, area,
@@ -30310,6 +30311,7 @@ expose_area (struct window *w, struct glyph_row *row, 
XRectangle *r,
                     first - row->glyphs[area], last - row->glyphs[area],
                     DRAW_NORMAL_TEXT, 0);
     }
+  unblock_input ();
 }
 
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]