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: Mon, 30 Nov 2015 18:16:42 +0200

> Date: Sun, 29 Nov 2015 15:35:04 -0800
> From: Yuan MEI <address@hidden>
> Cc: emacs-devel <address@hidden>
> 
> This is when redisplay works normally:
> 
> >>> right after window exposure
> 
> redisplay_preserve_echo_area (8)
> redisplay_internal 0
> 0x299e030 ( SPEEDBAR): same window start
> 0x299e030 ( SPEEDBAR): 1
> 0x1383e60 (*GNU Emacs*): same window start
> 0x1383e60 (*GNU Emacs*): 1
> redisplay_preserve_echo_area (9)
> redisplay_internal 0
> expose_frame (0, 0, 170, 1026)
> expose_window (1, 1, 168, 1024)
> expose_window (1, 0, 168, 0)
> expose_window (1, 0, 168, 0)
> expose_frame (0, 0, 818, 1026)
> expose_window (1, 17, 816, 992)
> expose_window (1, 1009, 816, 16)
> expose_window (1, 16, 816, 0)
> expose_window (1, 0, 816, 16)
> 
> >>> some time pause here, although nothing else (mouse is outside of Emacs, 
> >>> no mouse movement or key press)
> 
> redisplay_preserve_echo_area (8)
> redisplay_internal 0
> redisplay_preserve_echo_area (9)
> redisplay_internal 0
> 0x299e030 ( SPEEDBAR): same window start
> 0x299e030 ( SPEEDBAR): 1
> 0x1383e60 (*GNU Emacs*): same window start
> 0x1383e60 (*GNU Emacs*): 1
> 
> This is when partial redraw happened:
> 
> redisplay_preserve_echo_area (8)
> redisplay_internal 0
> 0x299e030 ( SPEEDBAR): same window start
> 0x299e030 ( SPEEDBAR): 1
> 0x1383e60 (*GNU Emacs*): same window start
> 0x1383e60 (*GNU Emacs*): 1
> redisplay_preserve_echo_area (9)
> redisplay_internal 0
> expose_frame (0, 0, 170, 1026)
> expose_window (1, 1, 168, 1024)
> expose_window (1, 0, 168, 0)
> expose_window (1, 0, 168, 0)
> expose_frame (0, 0, 818, 1026)
> expose_window (1, 17, 816, 992)
> expose_window (1, 1009, 816, 16)
> expose_window (1, 16, 816, 0)
> expose_window (1, 0, 816, 16)
> redisplay_preserve_echo_area (8)
> redisplay_internal 0
> redisplay_preserve_echo_area (9)
> redisplay_internal 0
> 0x299e030 ( SPEEDBAR): same window start
> 0x299e030 ( SPEEDBAR): 1
> 0x1383e60 (*GNU Emacs*): same window start
> 0x1383e60 (*GNU Emacs*): 1
> redisplay_preserve_echo_area (8)
> redisplay_internal 0
> 0x299e030 ( SPEEDBAR): same window start
> 0x299e030 ( SPEEDBAR): 1
> 0x1383e60 (*GNU Emacs*): same window start
> 0x1383e60 (*GNU Emacs*): 1
> redisplay_preserve_echo_area (9)
> redisplay_internal 0
> redisplay_preserve_echo_area (8)
> redisplay_internal 0
> redisplay_preserve_echo_area (9)
> redisplay_internal 0
> 0x299e030 ( SPEEDBAR): same window start
> 0x299e030 ( SPEEDBAR): 1
> 0x1383e60 (*GNU Emacs*): same window start
> 0x1383e60 (*GNU Emacs*): 1
> 
> >>> I switched to another virtual desktop then came back, redraw remained 
> >>> incorrect but the following showed up in the log
> 
> redisplay_preserve_echo_area (9)
> redisplay_internal 0
> expose_frame (0, 0, 170, 1026)
> expose_window (1, 1, 168, 1024)
> expose_window (1, 0, 168, 0)
> expose_window (1, 0, 168, 0)
> expose_frame (0, 0, 818, 1026)
> expose_window (1, 17, 816, 992)
> expose_window (1, 1009, 816, 16)
> expose_window (1, 16, 816, 0)
> expose_window (1, 0, 816, 16)
> 
> >>> switched out and back again, finding the entire frame showing only the 
> >>> background color, no menu or status bar
> 
> redisplay_preserve_echo_area (8)
> redisplay_internal 0
> redisplay_preserve_echo_area (9)
> redisplay_internal 0
> 0x299e030 ( SPEEDBAR): same window start
> 0x299e030 ( SPEEDBAR): 1
> 0x1383e60 (*GNU Emacs*): same window start
> 0x1383e60 (*GNU Emacs*): 1
> expose_frame (0, 0, 170, 1026)
> expose_window (1, 1, 168, 1024)
> expose_window (1, 0, 168, 0)
> expose_window (1, 0, 168, 0)
> expose_frame (0, 0, 818, 1026)
> expose_window (1, 17, 816, 992)
> expose_window (1, 1009, 816, 16)
> expose_window (1, 16, 816, 0)
> expose_window (1, 0, 816, 16)
> 
> >>> a few seconds of time pause, then a few glyphs showed up in the status bar
> 
> redisplay_preserve_echo_area (8)
> redisplay_internal 0
> 0x299e030 ( SPEEDBAR): same window start
> 0x299e030 ( SPEEDBAR): 1
> 0x1383e60 (*GNU Emacs*): same window start
> 0x1383e60 (*GNU Emacs*): 1
> redisplay_preserve_echo_area (9)
> redisplay_internal 0
> 
> Any ideas?

The "good" and the "bad" traces are completely identical!

Can you add 2 more traces as in the diffs below, recompile, and repeat
the experiment?  I'd like to be sure that the traces are identical
down to the screen line level.

Thanks.

diff --git a/src/xdisp.c b/src/xdisp.c
index 50c5518..1e52d31 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -30580,6 +30580,9 @@ expose_window (struct window *w, XRectangle *fr)
                }
 
              row->clip = fr;
+
+             TRACE ((stderr, "expose_line %d: (%d, %d, %d, %d)\n",
+                     row->y, r.x, r.y, r.width, r.height));
              if (expose_line (w, row, &r))
                mouse_face_overwritten_p = true;
              row->clip = NULL;
@@ -30607,6 +30610,9 @@ expose_window (struct window *w, XRectangle *fr)
              row->enabled_p)
          && row->y < r_bottom)
        {
+
+         TRACE ((stderr, "expose_line %d: (%d, %d, %d, %d)\n",
+                 row->y, r.x, r.y, r.width, r.height));
          if (expose_line (w, row, &r))
            mouse_face_overwritten_p = true;
        }



reply via email to

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