unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
To: 19721@debbugs.gnu.org
Subject: bug#19721: 25.0.50; Mode-line not redrawn with expose events
Date: Sat, 31 Jan 2015 19:31:59 +0900	[thread overview]
Message-ID: <wlh9v7jl5s.wl%mituharu@math.s.chiba-u.ac.jp> (raw)
In-Reply-To: <wlbnlheu6r.wl%mituharu@math.s.chiba-u.ac.jp>

I could reproduce the bug with Emacs 24.4 but not with Emacs 24.3.

I also tried git bisect.  The result was:

655ab9a380068143cfb9a31d01488e83676d81c1 is the first bad commit
commit 655ab9a380068143cfb9a31d01488e83676d81c1
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Date:   Thu Nov 28 17:43:09 2013 -0500

    Refine redisplay optimizations to only redisplay *some* frames/windows
    rather than all of them.
    * src/xdisp.c (REDISPLAY_SOME): New constant.
    (redisplay_other_windows, wset_redisplay, fset_redisplay)
    (bset_redisplay, bset_update_mode_line): New functions.
    (message_dolog): Use bset_redisplay.
    (clear_garbaged_frames): Use fset_redisplay.
    (echo_area_display): Use wset_redisplay.
    (buffer_shared_and_changed): Remove.
    (prepare_menu_bars): Call Vpre_redisplay_function before updating
    frame titles.  Compute the actual set of windows redisplayed.
    Don't update frame titles and menu bars for frames that don't need to
    be redisplayed.
    (propagate_buffer_redisplay): New function.
    (AINC): New macro.
    (redisplay_internal): Use it.  Be more selective in the set of windows
    we redisplay.  Propagate windows_or_buffers_changed to
    update_mode_lines a bit later to simplify the code.
    (mark_window_display_accurate_1): Reset window and buffer's
    `redisplay' flag.
    (redisplay_window): Do nothing if neither the window nor the buffer nor
    the frame needs redisplay.
    * src/window.h (struct window): Add `redisplay' field.
    (wset_redisplay, fset_redisplay, bset_redisplay, bset_update_mode_line)
    (redisplay_other_windows, window_list): New declarations.
    * src/window.c (select_window, Fset_window_start): Use wset_redisplay.
    (window_list): Not static any more.
    (grow_mini_window, shrink_mini_window): Use fset_redisplay.
    * src/minibuf.c (read_minibuf_unwind): Don't redisplay everything.
    * src/insdel.c (prepare_to_modify_buffer_1): Use bset_redisplay.
    * src/frame.c (Fmake_frame_visible): Don't redisplay everything.
    * src/frame.h (struct frame): Add `redisplay' field.
    Move `external_menu_bar' bitfield next to other bit-fields.
    (SET_FRAME_GARBAGED): Use fset_redisplay.
    (SET_FRAME_VISIBLE): Don't garbage the frame;
    Use redisplay_other_windows.
    * src/buffer.h (struct buffer): Add `redisplay' field.
    * src/buffer.c (Fforce_mode_line_update): Pay attention to the `all' flag.
    (modify_overlay): Use bset_redisplay.
    * src/alloc.c (gc_sweep): Don't unmark strings while sweeping symbols.
    
    * lisp/doc-view.el (doc-view-goto-page): Update mode-line.

:040000 040000 539134fa8301dbfe574c24f72a568daf322768b2 6e5b613809d7c5dcf21ac1b3be5f21ef4e3d877b M	lisp
:040000 040000 518107ab34d68fedf97e35cfac6b8a7e78f9c67c 5acb1b218288451c64bae59b039d359a046aec78 M	src

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp

>>>>> On Thu, 29 Jan 2015 19:51:24 +0900, YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> said:

> This bug is related to the mode-line erasure problem I mentioned in
> http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg01040.html .

> To reproduce the problem by the instruction below, you would need to
> make sure that your X11 compositing manager is turned off.  I tested
> on Cent OS 5.11, default setting.  See also
> http://lists.gnu.org/archive/html/emacs-devel/2013-04/msg00600.html .

> Steps to reproduce:

> 1. Create a file (say, ~/test.el) containing the following contents:

>   (custom-set-faces
>    '(mode-line ((((class color) (min-colors 88)) (:background
>      "grey75" :foreground "black" :box (:line-width 2 :color
>      "grey75" :style released-button)))))
>    )

> 2. $ emacs -Q -D -l ~/test.el
> 3. C-x 2 C-x 2 C-x 2
> 4. C-x o C-x o C-x o
> 5. Move another window (e.g., the terminal window from which Emacs is
>    invoked) so that it hovers over the Emacs frame.

> Result:

> The upper two mode-lines among four are not redrawn after their hidden
> part is revealed (see the attachment).  They are not redrawn in
> response to expose events because the flag `enabled_p' for these
> mode-line glyph rows have been set to false.

> 				     YAMAMOTO Mitsuharu
> 				mituharu@math.s.chiba-u.ac.jp

> In GNU Emacs 25.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.10.4)
>  of 2015-01-29 on localhost.localdomain
> Windowing system distributor `The X.Org Foundation', version 11.0.70101000
> System Description:	CentOS release 5.11 (Final)

> Configured features:
> XPM JPEG TIFF GIF PNG SOUND LIBSELINUX FREETYPE XFT ZLIB

 





  reply	other threads:[~2015-01-31 10:31 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-29 10:51 bug#19721: 25.0.50; Mode-line not redrawn with expose events YAMAMOTO Mitsuharu
2015-01-31 10:31 ` YAMAMOTO Mitsuharu [this message]
2015-01-31 11:09   ` Eli Zaretskii
2015-01-31 10:53 ` Eli Zaretskii
2015-01-31 11:37   ` YAMAMOTO Mitsuharu
2015-01-31 11:44     ` Eli Zaretskii
2015-02-01  5:40       ` YAMAMOTO Mitsuharu
2015-02-01  8:51         ` martin rudalics
2015-02-01 15:44           ` Eli Zaretskii
2015-02-01 16:30             ` martin rudalics
2015-02-01 17:27               ` Eli Zaretskii
2015-02-01 18:09                 ` martin rudalics
2015-02-01 18:37                   ` Eli Zaretskii
2015-02-02  3:24             ` YAMAMOTO Mitsuharu
2015-02-01 15:33         ` Eli Zaretskii
2015-02-02  3:27           ` YAMAMOTO Mitsuharu
2015-02-02 16:16             ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=wlh9v7jl5s.wl%mituharu@math.s.chiba-u.ac.jp \
    --to=mituharu@math.s.chiba-u.ac.jp \
    --cc=19721@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).