Subject: Re: bug#23925: 25.0.95; display broken when maximizing frame

From: "Roland Winkler" <[email-masked]>
Date: Sat, 9 Jul 2016 16:05:03 -0500

On Sat Jul 9 2016 Eli Zaretskii wrote:
> > Configured using:
> >  'configure --with-xwidgets --with-x-toolkit=gtk3 --with-cairo'
> 
> One idea I do have is to build without --with-cairo, and see if the
> problem goes away.  The Cairo back-end is still experimental, and we
> know of several problems with it.

I can confirm Clément's observation that the problem appears only
when cairo is used to build emacs.

I enabled cairo just out of curiosity.  I wouldn't mind if it got
completely disabled for 25.1 (or combined with noisy warnings that
cairo gives serious bugs).

On Sat Jul 9 2016 Eli Zaretskii wrote:
> > From: Glenn Morris <[email-masked]>
> > Maybe with-cairo should be renamed to with-experimental-cairo or
> > somesuch, because simply describing it as experimental isn't
> > getting the message across.
> > 
> > It's unfinished, unmaintained, and has known issues.  Frankly I
> > suggest no-one uses it unless they are prepared to deal with the
> > resulting breakage.
> 
> What does that mean in practice, though?  We already have that option
> off by default, which should be enough of a hint to anybody that this
> option should not be turned on without a good reason.

The NEWS file made me believe that, in principle, cairo works...

  Cairo drawing is an experimental feature in Emacs, and subject to
  change in future releases.

...but merely one should not assume that cairo-related internals
stay what they are now.  The NEWS file could mention that emacs
build with cairo is still buggy.  Also, this could be mentioned in
PROBLEMS which does not talk at all about cairo.  (I do not know
which "known issues" you have in mind.  The redisplay bug is all I
noticed so far, but so far my testing has been very limited.)

On Sat Jul 9 2016 martin rudalics wrote:
> Please post the results after doing each of the following:
> 
> (1) Evaluate (display-monitor-attributes-list)

(((name . "DP2") (geometry 0 0 1920 1080) (workarea 0 25 1920 1055) (mm-size 510 287) (frames #<frame emacs@regnitz 0x1244a90>) (source . "Gdk")))

> (2) With the badly maximized frame evaluate (frame-geometry)

((outer-position 0 . 25) (outer-size 1913 . 1052) (external-border-size 5 . 5) (title-bar-size 0 . 18) (menu-bar-external . t) (menu-bar-size 1903 . 22) (tool-bar-external . t) (tool-bar-position . top) (tool-bar-size 0 . 0) (internal-border-width . 1))

> In this state please also evaluate (window--dump-frame)

frame pixel: 1903 x 1002   cols/lines: 191 x 50   units: 10 x 20
frame text pixel: 1870 x 1000   cols/lines: 187 x 50
tool: 0  scroll: 15/0  fringe: 16  border: 1  right: 0  bottom: 0

#<window 3 on *Messages*>   parent: nil
pixel left: 0   top: 0   size: 1901 x 980   new: 820
char left: 0   top: 0   size: 190 x 49   new: 38
normal: 1.0 x 1.0   new: nil
body pixel: 1870 x 960   char: 187 x 48
width left fringe: 8  left margin: 0  right margin: 0
width right fringe: 8  scroll-bar: 15  divider: 0
height header-line: 0  mode-line: 20  divider: 0

#<window 4 on  *Minibuf-0*>   parent: nil
pixel left: 0   top: 980   size: 1901 x 20   new: 0
char left: 0   top: 49   size: 190 x 1   new: 1
normal: 1.0 x 1.0   new: 0
body pixel: 1870 x 20   char: 187 x 1
width left fringe: 8  left margin: 0  right margin: 0
width right fringe: 8  scroll-bar: 15  divider: 0
height header-line: 0  mode-line: 0  divider: 0

> (3) Before maximizing evaluate (setq frame-size-history '(5))
>      Then maximize and evaluate (frame--size-history).  The result can be
>      found in the buffer *frame-size-history*.

Frame size history of #<frame emacs@regnitz 0x1244a90>
x-handle-net-wm-state    nil (nil nil)
x-handle-net-wm-state    nil (nil nil)
x-net-wm-state           nil (nil maximized)
x-net-wm-state           nil (maximized maximized)
x-handle-net-wm-state    nil (maximized maximized)

=======

Let me know if any other info might be useful.

Roland