xserver: Branch 'xwayland-23.2'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Apr 17 07:34:18 UTC 2024


 hw/xwayland/xwayland-glamor.c |  109 ------------------------------------------
 hw/xwayland/xwayland-screen.h |    2 
 2 files changed, 111 deletions(-)

New commits:
commit 02db902d59dbdb0261fe6a9818cb602eea603495
Author: Olivier Fourdan <ofourdan at redhat.com>
Date:   Wed Apr 3 14:35:02 2024 +0200

    Revert "xwayland/glamor: Avoid implicit redirection with depth 32 parent windows"
    
    There are a number of regressions and hard to reproduce issues that find
    their roots in this change, so revert it until those can be ironed out
    some more.
    
    This reverts commit 4bb1f976d5397949be06510524bede5ae3bbfe0a.
    
    Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1655
    Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1656
    Signed-off-by: Olivier Fourdan <ofourdan at redhat.com>
    (cherry picked from commit a65bb8480af8931b8e18b6c0630ef664249c64ca)
    
    Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1488>

diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c
index 4b4fc441a..8bc652933 100644
--- a/hw/xwayland/xwayland-glamor.c
+++ b/hw/xwayland/xwayland-glamor.c
@@ -25,8 +25,6 @@
 
 #include <xwayland-config.h>
 
-#include <compositeext.h>
-
 #define MESA_EGL_NO_X11_HEADERS
 #define EGL_NO_X11
 #include <glamor_egl.h>
@@ -895,108 +893,6 @@ xwl_glamor_allow_commits(struct xwl_window *xwl_window)
         return TRUE;
 }
 
-static void
-xwl_avoid_implicit_redirect(WindowPtr window)
-{
-    ScreenPtr screen = window->drawable.pScreen;
-    WindowOptPtr parent_optional;
-    VisualPtr parent_visual = NULL;
-    VisualPtr window_visual = NULL;
-    DepthPtr depth32 = NULL;
-    int i;
-
-    if (!window->optional)
-        return;
-
-    parent_optional = FindWindowWithOptional(window)->optional;
-    if (window->optional == parent_optional ||
-        window->optional->visual == parent_optional->visual ||
-        CompositeIsImplicitRedirectException(screen, parent_optional->visual,
-                                             window->optional->visual))
-        return;
-
-    for (i = 0; i < screen->numDepths; i++) {
-        if (screen->allowedDepths[i].depth == 32) {
-            depth32 = &screen->allowedDepths[i];
-            break;
-        }
-    }
-
-    if (!depth32)
-        return;
-
-    for (i = 0; i < depth32->numVids; i++) {
-        XID argb_vid = depth32->vids[i];
-
-        if (argb_vid != parent_optional->visual)
-            continue;
-
-        if (!compIsAlternateVisual(screen, argb_vid))
-            break;
-
-        for (i = 0; i < screen->numVisuals; i++) {
-            if (screen->visuals[i].vid == argb_vid) {
-                parent_visual = &screen->visuals[i];
-                break;
-            }
-        }
-    }
-
-    if (!parent_visual)
-        return;
-
-    for (i = 0; i < screen->numVisuals; i++) {
-        if (screen->visuals[i].vid == window->optional->visual) {
-            window_visual = &screen->visuals[i];
-            break;
-        }
-    }
-
-    if ((window_visual->class != TrueColor &&
-         window_visual->class != DirectColor) ||
-        window_visual->redMask != parent_visual->redMask ||
-        window_visual->greenMask != parent_visual->greenMask ||
-        window_visual->blueMask != parent_visual->blueMask ||
-        window_visual->offsetRed != parent_visual->offsetRed ||
-        window_visual->offsetGreen != parent_visual->offsetGreen ||
-        window_visual->offsetBlue != parent_visual->offsetBlue)
-        return;
-
-    CompositeRegisterImplicitRedirectionException(screen, parent_visual->vid, window_visual->vid);
-}
-
-static Bool
-xwl_glamor_create_window(WindowPtr window)
-{
-    ScreenPtr screen = window->drawable.pScreen;
-    struct xwl_screen *xwl_screen = xwl_screen_get(screen);
-    Bool ret;
-
-    if (window->parent)
-        xwl_avoid_implicit_redirect(window);
-
-    screen->CreateWindow = xwl_screen->CreateWindow;
-    ret = (*screen->CreateWindow) (window);
-    xwl_screen->CreateWindow = screen->CreateWindow;
-    screen->CreateWindow = xwl_glamor_create_window;
-
-    return ret;
-}
-
-static void
-xwl_glamor_reparent_window(WindowPtr window, WindowPtr old_parent)
-{
-    ScreenPtr screen = window->drawable.pScreen;
-    struct xwl_screen *xwl_screen = xwl_screen_get(screen);
-
-    xwl_avoid_implicit_redirect(window);
-
-    screen->ReparentWindow = xwl_screen->ReparentWindow;
-    (*screen->ReparentWindow) (window, old_parent);
-    xwl_screen->ReparentWindow = screen->ReparentWindow;
-    screen->ReparentWindow = xwl_glamor_reparent_window;
-}
-
 static Bool
 xwl_glamor_create_screen_resources(ScreenPtr screen)
 {
@@ -1011,11 +907,6 @@ xwl_glamor_create_screen_resources(ScreenPtr screen)
     if (!ret)
         return ret;
 
-    xwl_screen->CreateWindow = screen->CreateWindow;
-    screen->CreateWindow = xwl_glamor_create_window;
-    xwl_screen->ReparentWindow = screen->ReparentWindow;
-    screen->ReparentWindow = xwl_glamor_reparent_window;
-
     if (xwl_screen->rootless) {
         screen->devPrivate =
             fbCreatePixmap(screen, 0, 0, screen->rootDepth, 0);
diff --git a/hw/xwayland/xwayland-screen.h b/hw/xwayland/xwayland-screen.h
index bd66dd681..17aa31c73 100644
--- a/hw/xwayland/xwayland-screen.h
+++ b/hw/xwayland/xwayland-screen.h
@@ -71,14 +71,12 @@ struct xwl_screen {
 
     CreateScreenResourcesProcPtr CreateScreenResources;
     CloseScreenProcPtr CloseScreen;
-    CreateWindowProcPtr CreateWindow;
     RealizeWindowProcPtr RealizeWindow;
     UnrealizeWindowProcPtr UnrealizeWindow;
     DestroyWindowProcPtr DestroyWindow;
     XYToWindowProcPtr XYToWindow;
     SetWindowPixmapProcPtr SetWindowPixmap;
     ChangeWindowAttributesProcPtr ChangeWindowAttributes;
-    ReparentWindowProcPtr ReparentWindow;
     ResizeWindowProcPtr ResizeWindow;
     MoveWindowProcPtr MoveWindow;
 


More information about the xorg-commit mailing list