xserver: Branch 'master'

Keith Packard keithp at kemper.freedesktop.org
Tue Oct 28 11:32:04 PDT 2014


 composite/compinit.c |   19 +++++++++++++++++++
 composite/compint.h  |    1 +
 2 files changed, 20 insertions(+)

New commits:
commit 0fbbdb37c87b5824729f65c7fbac05223024fd27
Author: Adam Jackson <ajax at redhat.com>
Date:   Wed Oct 22 13:19:18 2014 -0400

    composite: Wrap GetSpans
    
    GetSpans should flush composition from children to parent, just like
    GetImage and SourceValidate.  Fortunately no one is likely to have
    noticed, since to hit this you're already deep into failure town.
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/composite/compinit.c b/composite/compinit.c
index 111c16e..10433a1 100644
--- a/composite/compinit.c
+++ b/composite/compinit.c
@@ -78,6 +78,7 @@ compCloseScreen(ScreenPtr pScreen)
     pScreen->PositionWindow = cs->PositionWindow;
 
     pScreen->GetImage = cs->GetImage;
+    pScreen->GetSpans = cs->GetSpans;
     pScreen->SourceValidate = cs->SourceValidate;
 
     free(cs);
@@ -151,6 +152,21 @@ compGetImage(DrawablePtr pDrawable,
 }
 
 static void
+compGetSpans(DrawablePtr pDrawable, int wMax, DDXPointPtr ppt, int *pwidth,
+             int nspans, char *pdstStart)
+{
+    ScreenPtr pScreen = pDrawable->pScreen;
+    CompScreenPtr cs = GetCompScreen(pScreen);
+
+    pScreen->GetSpans = cs->GetSpans;
+    if (pDrawable->type == DRAWABLE_WINDOW)
+        compPaintChildrenToWindow((WindowPtr) pDrawable);
+    (*pScreen->GetSpans) (pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
+    cs->GetSpans = pScreen->GetSpans;
+    pScreen->GetSpans = compGetSpans;
+}
+
+static void
 compSourceValidate(DrawablePtr pDrawable,
                    int x, int y,
                    int width, int height, unsigned int subWindowMode)
@@ -432,6 +448,9 @@ compScreenInit(ScreenPtr pScreen)
     cs->GetImage = pScreen->GetImage;
     pScreen->GetImage = compGetImage;
 
+    cs->GetSpans = pScreen->GetSpans;
+    pScreen->GetSpans = compGetSpans;
+
     cs->SourceValidate = pScreen->SourceValidate;
     pScreen->SourceValidate = compSourceValidate;
 
diff --git a/composite/compint.h b/composite/compint.h
index 56b76c5..f06b846 100644
--- a/composite/compint.h
+++ b/composite/compint.h
@@ -168,6 +168,7 @@ typedef struct _CompScreen {
     CompOverlayClientPtr pOverlayClients;
 
     GetImageProcPtr GetImage;
+    GetSpansProcPtr GetSpans;
     SourceValidateProcPtr SourceValidate;
 } CompScreenRec, *CompScreenPtr;
 


More information about the xorg-commit mailing list