xwayland: Handle the case of windows being realized before redirection

If Xwayland gets to realize a window meant for composition before the
compositor redirected windows (i.e. redirect mode is not RedirectDrawManual
yet), the window would stay "invisible" as we wouldn't create a
wl_surface/wl_shell_surface for it at any later point.

This scenario may happen if the wayland compositor sets up a X11 socket
upfront, but waits to raise Xwayland until there are X11 clients. In this
case the first data on the socket is the client's, the compositor can hardly
beat that in order to redirect subwindows before the client realizes a
Window.

In order to jump across this hurdle, allow the late creation of a matching
(shell) surface for the WindowPtr on SetWindowPixmapProc, so it is ensured
to be created after the compositor set up redirection.

Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
3 jobs for xwayland-client-before-compositor in 8 minutes and 6 seconds (queued for 1 second)
Status Job ID Name Coverage
  Docker Image
passed #310674
debian-testing

00:01:28

 
  Build And Test
passed #310675
autotools-build-and-test

00:06:37

passed #310676
meson-build-and-test

00:01:31