diff options
author | Jeremy Huddleston <jeremyhu@apple.com> | 2010-04-18 00:14:57 -0700 |
---|---|---|
committer | Jeremy Huddleston <jeremyhu@apple.com> | 2010-04-18 00:14:57 -0700 |
commit | 8895b438ddcb2832c472bd0613088736137d295e (patch) | |
tree | faf791e7d80e307ab5a514391e2406ed12a3232e | |
parent | 9e1ae9a5ef4d20d9f116d2ad35d878a4d3c26a8b (diff) |
Bring back fbPaintWindow() which "fixes" the bug.PR-290
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
-rw-r--r-- | fb/fbwindow.c | 55 | ||||
-rw-r--r-- | mi/miexpose.c | 3 |
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); |