From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Redisplay issue Date: Mon, 30 Nov 2015 18:16:42 +0200 Message-ID: <83h9k3mphx.fsf@gnu.org> References: <83fuzqr1iz.fsf@gnu.org> <8337vqqwz7.fsf@gnu.org> <83y4dhonng.fsf@gnu.org> <83two4olqj.fsf@gnu.org> Reply-To: Eli Zaretskii NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1448900309 27035 80.91.229.3 (30 Nov 2015 16:18:29 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 30 Nov 2015 16:18:29 +0000 (UTC) Cc: emacs-devel@gnu.org To: Yuan MEI Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Nov 30 17:18:21 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1a3R9c-0003c2-Bf for ged-emacs-devel@m.gmane.org; Mon, 30 Nov 2015 17:18:16 +0100 Original-Received: from localhost ([::1]:41797 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a3R9b-0000hA-Pu for ged-emacs-devel@m.gmane.org; Mon, 30 Nov 2015 11:18:15 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:58983) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a3R9O-0000fL-FV for emacs-devel@gnu.org; Mon, 30 Nov 2015 11:18:03 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a3R9K-0005Uo-BC for emacs-devel@gnu.org; Mon, 30 Nov 2015 11:18:02 -0500 Original-Received: from mtaout25.012.net.il ([80.179.55.181]:59556) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a3R9J-0005UV-Vh for emacs-devel@gnu.org; Mon, 30 Nov 2015 11:17:58 -0500 Original-Received: from conversion-daemon.mtaout25.012.net.il by mtaout25.012.net.il (HyperSendmail v2007.08) id <0NYM00700YCZ5H00@mtaout25.012.net.il> for emacs-devel@gnu.org; Mon, 30 Nov 2015 18:13:56 +0200 (IST) Original-Received: from HOME-C4E4A596F7 ([84.94.185.246]) by mtaout25.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NYM0029VYF8D840@mtaout25.012.net.il>; Mon, 30 Nov 2015 18:13:56 +0200 (IST) In-reply-to: X-012-Sender: halo1@inter.net.il X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 80.179.55.181 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:195620 Archived-At: > Date: Sun, 29 Nov 2015 15:35:04 -0800 > From: Yuan MEI > Cc: emacs-devel > > 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; }