[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