xserver: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Feb 6 21:19:17 UTC 2025


 Xext/shape.c |  131 ++++++++++++++++++++++-------------------------------------
 1 file changed, 51 insertions(+), 80 deletions(-)

New commits:
commit a57db845bbc67a7fe3f90390365420692b16b1ab
Author: Enrico Weigelt, metux IT consult <info at metux.net>
Date:   Wed Jul 3 01:40:52 2024 +0200

    Xext: shape: clean up Xinerama dispatch
    
    Simplify the dispatching by moving the branching between Xinerama
    vs. single screen into the actual request handlers.
    
    Signed-off-by: Enrico Weigelt, metux IT consult <info at metux.net>
    Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1598>

diff --git a/Xext/shape.c b/Xext/shape.c
index 00e5ed8d7..e0410129f 100644
--- a/Xext/shape.c
+++ b/Xext/shape.c
@@ -225,24 +225,16 @@ ProcShapeQueryVersion(ClientPtr client)
     return Success;
 }
 
-/*****************
- * ProcShapeRectangles
- *
- *****************/
-
 static int
-ProcShapeRectangles(ClientPtr client)
+ShapeRectangles(ClientPtr client, xShapeRectanglesReq *stuff)
 {
     WindowPtr pWin;
-
-    REQUEST(xShapeRectanglesReq);
     xRectangle *prects;
     int nrects, ctype, rc;
     RegionPtr srcRgn;
     RegionPtr *destRgn;
     CreateDftPtr createDefault;
 
-    REQUEST_AT_LEAST_SIZE(xShapeRectanglesReq);
     UpdateCurrentTime();
     rc = dixLookupWindow(&pWin, stuff->dest, client, DixSetAttrAccess);
     if (rc != Success)
@@ -297,16 +289,19 @@ ProcShapeRectangles(ClientPtr client)
                          stuff->xOff, stuff->yOff, createDefault);
 }
 
-#ifdef XINERAMA
 static int
-ProcPanoramiXShapeRectangles(ClientPtr client)
+ProcShapeRectangles(ClientPtr client)
 {
     REQUEST(xShapeRectanglesReq);
+    REQUEST_AT_LEAST_SIZE(xShapeRectanglesReq);
+
+#ifdef XINERAMA
+    if (noPanoramiXExtension)
+        return ShapeRectangles(client, stuff);
+
     PanoramiXRes *win;
     int j, result;
 
-    REQUEST_AT_LEAST_SIZE(xShapeRectanglesReq);
-
     result = dixLookupResourceByType((void **) &win, stuff->dest, XRT_WINDOW,
                                      client, DixWriteAccess);
     if (result != Success)
@@ -314,32 +309,27 @@ ProcPanoramiXShapeRectangles(ClientPtr client)
 
     FOR_NSCREENS(j) {
         stuff->dest = win->info[j].id;
-        result = ProcShapeRectangles(client);
+        result = ShapeRectangles(client, stuff);
         if (result != Success)
             break;
     }
     return result;
+#else
+    return ShapeRectangles(client);
+#endif
 }
-#endif /* XINERAMA */
-
-/**************
- * ProcShapeMask
- **************/
 
 static int
-ProcShapeMask(ClientPtr client)
+ShapeMask(ClientPtr client, xShapeMaskReq *stuff)
 {
     WindowPtr pWin;
     ScreenPtr pScreen;
-
-    REQUEST(xShapeMaskReq);
     RegionPtr srcRgn;
     RegionPtr *destRgn;
     PixmapPtr pPixmap;
     CreateDftPtr createDefault;
     int rc;
 
-    REQUEST_SIZE_MATCH(xShapeMaskReq);
     UpdateCurrentTime();
     rc = dixLookupWindow(&pWin, stuff->dest, client, DixSetAttrAccess);
     if (rc != Success)
@@ -395,16 +385,19 @@ ProcShapeMask(ClientPtr client)
                          stuff->xOff, stuff->yOff, createDefault);
 }
 
-#ifdef XINERAMA
 static int
-ProcPanoramiXShapeMask(ClientPtr client)
+ProcShapeMask(ClientPtr client)
 {
     REQUEST(xShapeMaskReq);
+    REQUEST_SIZE_MATCH(xShapeMaskReq);
+
+#ifdef XINERAMA
+    if (noPanoramiXExtension)
+        return ShapeMask(client, stuff);
+
     PanoramiXRes *win, *pmap;
     int j, result;
 
-    REQUEST_SIZE_MATCH(xShapeMaskReq);
-
     result = dixLookupResourceByType((void **) &win, stuff->dest, XRT_WINDOW,
                                      client, DixWriteAccess);
     if (result != Success)
@@ -423,24 +416,20 @@ ProcPanoramiXShapeMask(ClientPtr client)
         stuff->dest = win->info[j].id;
         if (pmap)
             stuff->src = pmap->info[j].id;
-        result = ProcShapeMask(client);
+        result = ShapeMask(client, stuff);
         if (result != Success)
             break;
     }
     return result;
+#else
+    return ShapeMask(client, stuff);
+#endif
 }
-#endif /* XINERAMA */
-
-/************
- * ProcShapeCombine
- ************/
 
 static int
-ProcShapeCombine(ClientPtr client)
+ShapeCombine(ClientPtr client, xShapeCombineReq *stuff)
 {
     WindowPtr pSrcWin, pDestWin;
-
-    REQUEST(xShapeCombineReq);
     RegionPtr srcRgn;
     RegionPtr *destRgn;
     CreateDftPtr createDefault;
@@ -448,7 +437,6 @@ ProcShapeCombine(ClientPtr client)
     RegionPtr tmp;
     int rc;
 
-    REQUEST_SIZE_MATCH(xShapeCombineReq);
     UpdateCurrentTime();
     rc = dixLookupWindow(&pDestWin, stuff->dest, client, DixSetAttrAccess);
     if (rc != Success)
@@ -523,16 +511,19 @@ ProcShapeCombine(ClientPtr client)
                          stuff->xOff, stuff->yOff, createDefault);
 }
 
-#ifdef XINERAMA
 static int
-ProcPanoramiXShapeCombine(ClientPtr client)
+ProcShapeCombine(ClientPtr client)
 {
     REQUEST(xShapeCombineReq);
+    REQUEST_AT_LEAST_SIZE(xShapeCombineReq);
+
+#ifdef XINERAMA
+    if (noPanoramiXExtension)
+        return ShapeCombine(client, stuff);
+
     PanoramiXRes *win, *win2;
     int j, result;
 
-    REQUEST_AT_LEAST_SIZE(xShapeCombineReq);
-
     result = dixLookupResourceByType((void **) &win, stuff->dest, XRT_WINDOW,
                                      client, DixWriteAccess);
     if (result != Success)
@@ -546,28 +537,23 @@ ProcPanoramiXShapeCombine(ClientPtr client)
     FOR_NSCREENS(j) {
         stuff->dest = win->info[j].id;
         stuff->src = win2->info[j].id;
-        result = ProcShapeCombine(client);
+        result = ShapeCombine(client, stuff);
         if (result != Success)
             break;
     }
     return result;
+#else
+    return ShapeCombine(client, stuff);
+#endif
 }
-#endif /* XINERAMA */
-
-/*************
- * ProcShapeOffset
- *************/
 
 static int
-ProcShapeOffset(ClientPtr client)
+ShapeOffset(ClientPtr client, xShapeOffsetReq *stuff)
 {
     WindowPtr pWin;
-
-    REQUEST(xShapeOffsetReq);
     RegionPtr srcRgn;
     int rc;
 
-    REQUEST_SIZE_MATCH(xShapeOffsetReq);
     UpdateCurrentTime();
     rc = dixLookupWindow(&pWin, stuff->dest, client, DixSetAttrAccess);
     if (rc != Success)
@@ -594,15 +580,18 @@ ProcShapeOffset(ClientPtr client)
     return Success;
 }
 
-#ifdef XINERAMA
 static int
-ProcPanoramiXShapeOffset(ClientPtr client)
+ProcShapeOffset(ClientPtr client)
 {
     REQUEST(xShapeOffsetReq);
+    REQUEST_AT_LEAST_SIZE(xShapeOffsetReq);
+
+#ifdef XINERAMA
     PanoramiXRes *win;
     int j, result;
 
-    REQUEST_AT_LEAST_SIZE(xShapeOffsetReq);
+    if (noPanoramiXExtension)
+        return ShapeOffset(client, stuff);
 
     result = dixLookupResourceByType((void **) &win, stuff->dest, XRT_WINDOW,
                                      client, DixWriteAccess);
@@ -611,13 +600,15 @@ ProcPanoramiXShapeOffset(ClientPtr client)
 
     FOR_NSCREENS(j) {
         stuff->dest = win->info[j].id;
-        result = ProcShapeOffset(client);
+        result = ShapeOffset(client, stuff);
         if (result != Success)
             break;
     }
     return result;
+#else
+    return ShapeOffset(client, stuff);
+#endif
 }
-#endif /* XINERAMA */
 
 static int
 ProcShapeQueryExtents(ClientPtr client)
@@ -1035,33 +1026,13 @@ ProcShapeDispatch(ClientPtr client)
     case X_ShapeQueryVersion:
         return ProcShapeQueryVersion(client);
     case X_ShapeRectangles:
-#ifdef XINERAMA
-        if (!noPanoramiXExtension)
-            return ProcPanoramiXShapeRectangles(client);
-        else
-#endif /* XINERAMA */
-            return ProcShapeRectangles(client);
+        return ProcShapeRectangles(client);
     case X_ShapeMask:
-#ifdef XINERAMA
-        if (!noPanoramiXExtension)
-            return ProcPanoramiXShapeMask(client);
-        else
-#endif /* XINERAMA */
-            return ProcShapeMask(client);
+        return ProcShapeMask(client);
     case X_ShapeCombine:
-#ifdef XINERAMA
-        if (!noPanoramiXExtension)
-            return ProcPanoramiXShapeCombine(client);
-        else
-#endif /* XINERAMA */
-            return ProcShapeCombine(client);
+        return ProcShapeCombine(client);
     case X_ShapeOffset:
-#ifdef XINERAMA
-        if (!noPanoramiXExtension)
-            return ProcPanoramiXShapeOffset(client);
-        else
-#endif /* XINERAMA */
-            return ProcShapeOffset(client);
+        return ProcShapeOffset(client);
     case X_ShapeQueryExtents:
         return ProcShapeQueryExtents(client);
     case X_ShapeSelectInput:


More information about the xorg-commit mailing list