summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Huddleston <jeremyhu@apple.com>2010-04-18 00:14:57 -0700
committerJeremy Huddleston <jeremyhu@apple.com>2010-04-18 00:14:57 -0700
commit8895b438ddcb2832c472bd0613088736137d295e (patch)
treefaf791e7d80e307ab5a514391e2406ed12a3232e
parent9e1ae9a5ef4d20d9f116d2ad35d878a4d3c26a8b (diff)
Bring back fbPaintWindow() which "fixes" the bug.PR-290
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
-rw-r--r--fb/fbwindow.c55
-rw-r--r--mi/miexpose.c3
2 files changed, 58 insertions, 0 deletions
diff --git a/fb/fbwindow.c b/fb/fbwindow.c
index 602b7e0dc..144f08362 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 47b15363e..7b73c3da1 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);