xserver/hw
Olivier Fourdan c728d29127 xwayland: attach new buffer from libdecor handlers
The configure handler in libdecor is triggered any time a new
configuration is received.

According to the documentation from libdecor, an application should
respond to that event by creating a suitable libdecor_state, and apply
it using libdecor_frame_commit().

So we ought to attach a new buffer matching the new size and commit
the Wayland surface.

The actual content of the window does not need to be explicitly
repainted, that occurs through the call to SetRootClip():

  xwl_output_set_mode_fixed()
  -> update_screen_size()
     -> SetRootClip()
        -> miHandleValidateExposures()
           -> miWindowExposures()
              -> miPaintWindow()

This fixes an issue with mutter where maximizing a window and then
switching to another window would sometimes resize the Xwayland window
back to its pre-maximized size, or with Weston where the Xwayland window
would initially show up black until the pointer moves to the window.

Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
(cherry picked from commit 6d00c2bc10)
2023-07-27 16:51:13 +02:00
..
vfb Don't install Xvfb 2023-07-18 12:52:07 +00:00
xwayland xwayland: attach new buffer from libdecor handlers 2023-07-27 16:51:13 +02:00
meson.build Drop Xephyr / kdrive DDX 2023-07-18 12:52:07 +00:00