bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#52666: 27.0.50; Unexpected mode line flickering when creating frames


From: martin rudalics
Subject: bug#52666: 27.0.50; Unexpected mode line flickering when creating frames
Date: Mon, 20 Dec 2021 10:18:48 +0100

> to reproduce this issue, please put the following form in a new file
> flicker.el:
>
>      (while t
>        (let ((f (make-frame `((parent-frame . ,(selected-frame))
>                               (left . 200)
>                               (top . 200)))))
>          (set-frame-width f 200 nil t)
>          (set-frame-height f 200 nil t)
>          (sit-for 0.3)
>          (delete-frame f)))
>
> and then invoke Emacs with:
>
>      $ emacs -Q -l flicker.el
>
> The form repeatedly creates and destroys a child frame, offset 200
> pixels both horizontally and vertically from the top left corner of the
> frame.
>
> Unexpectedly, the mode line flickers in many (though apparently not all)
> iterations, starting at 200 pixels horizontally from the left, even
> though the frame does not overlap the mode line in any way.
>
> Ideally, the creation of the frame should not have any visible effect on
> the mode line.

I can reproduce the flickering with a GTK build where the child frame
never appears at all.  I cannot reproduce it with a Lucid build where
the child frame appears shortly and gets deleted as expected.  In either
case the mode line is redrawn because it changes from active to inactive
and back.

> Could the pleasant double buffering feature I have read about help to
> remove this flickering when creating child frames? Please let me know if
> you can reproduce the issue or need any further information. I can
> reproduce the flickering both on OSX and on Debian.

The (sit-for 0.3) might conflict with 'x-wait-for-event-timeout' so
playing around with the latter could help.  BTW is yours really a Lucid
build on a Mac?

martin





reply via email to

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