diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c index 69e31b43f..3e62fa7cd 100644 --- a/hw/xwayland/xwayland-glamor.c +++ b/hw/xwayland/xwayland-glamor.c @@ -93,6 +93,8 @@ xwl_glamor_check_flip(WindowPtr present_window, PixmapPtr pixmap) { ScreenPtr screen = pixmap->drawable.pScreen; PixmapPtr backing_pixmap = screen->GetWindowPixmap(present_window); + struct xwl_window *xwl_window = xwl_window_from_window(present_window); + WindowPtr surface_window = xwl_window->surface_window; if (pixmap->drawable.depth != backing_pixmap->drawable.depth) { if (pixmap->drawable.depth == 32) @@ -101,6 +103,10 @@ xwl_glamor_check_flip(WindowPtr present_window, PixmapPtr pixmap) return xwl_present_maybe_redirect_window(present_window); } + if (surface_window->redirectDraw == RedirectDrawAutomatic && + surface_window->drawable.depth != 32) + xwl_present_maybe_redirect_window(surface_window); + return TRUE; }