[Xquartz-changes] xserver: Branch 'PR-290'

Jeremy Huddleston jeremyhu at freedesktop.org
Sun Apr 18 00:20:16 PDT 2010


 fb/fbwindow.c |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 mi/miexpose.c |    3 +++
 2 files changed, 58 insertions(+)

New commits:
commit 8895b438ddcb2832c472bd0613088736137d295e
Author: Jeremy Huddleston <jeremyhu at apple.com>
Date:   Sun Apr 18 00:14:57 2010 -0700

    Bring back fbPaintWindow() which "fixes" the bug.
    
    Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>

diff --git a/fb/fbwindow.c b/fb/fbwindow.c
index 602b7e0..144f083 100644
--- a/fb/fbwindow.c
+++ b/fb/fbwindow.c
@@ -315,3 +315,58 @@ fbFillRegionTiled (DrawablePtr	pDrawable,
     fbFinishAccess (&pTile->drawable);
     fbFinishAccess (pDrawable);
 }
+
+void
+fbPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what)
+{
+    WindowPtr	pBgWin;
+    
+    switch (what) {
+    case PW_BACKGROUND:
+	switch (pWin->backgroundState) {
+	case None:
+	    break;
+	case ParentRelative:
+	    do {
+		pWin = pWin->parent;
+	    } while (pWin->backgroundState == ParentRelative);
+	    (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion,
+							     what);
+	    break;
+	case BackgroundPixmap:
+	    fbFillRegionTiled (&pWin->drawable,
+			       pRegion,
+			       pWin->background.pixmap);
+	    break;
+	case BackgroundPixel:
+	    fbFillRegionSolid (&pWin->drawable,
+			       pRegion,
+			       0,
+			       fbReplicatePixel (pWin->background.pixel,
+						 pWin->drawable.bitsPerPixel));
+	    break;
+    	}
+    	break;
+    case PW_BORDER:
+	if (pWin->borderIsPixel)
+	{
+	    fbFillRegionSolid (&pWin->drawable,
+			       pRegion,
+			       0,
+			       fbReplicatePixel (pWin->border.pixel,
+						 pWin->drawable.bitsPerPixel));
+	}
+	else
+	{
+	    for (pBgWin = pWin;
+		 pBgWin->backgroundState == ParentRelative;
+		 pBgWin = pBgWin->parent);
+
+	    fbFillRegionTiled (&pBgWin->drawable,
+			       pRegion,
+			       pWin->border.pixmap);
+	}
+	break;
+    }
+    fbValidateDrawable (&pWin->drawable);
+}
diff --git a/mi/miexpose.c b/mi/miexpose.c
index 47b1536..7b73c3d 100644
--- a/mi/miexpose.c
+++ b/mi/miexpose.c
@@ -539,6 +539,7 @@ void RootlessSetPixmapOfAncestors(WindowPtr pWin);
 void RootlessStartDrawing(WindowPtr pWin);
 void RootlessDamageRegion(WindowPtr pWin, RegionPtr prgn);
 Bool IsFramedWindow(WindowPtr pWin);
+void fbPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what);
 #endif 
 
 _X_EXPORT void
@@ -586,6 +587,8 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
         default:
             break;
     }
+    fbPaintWindow(pWin, prgn, what);
+    return;
 #endif
     
     pPixmap = (*pScreen->GetWindowPixmap) (pWin);


More information about the Xquartz-changes mailing list