diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-05-15 00:48:31 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-05-15 00:48:31 +0100 |
commit | 3bca186a7ead84d4f0e71dfd83847ef77a4e390b (patch) | |
tree | 1596da72ce0a47fee85c8042bc5488d35c15b2bc /uxa | |
parent | 213816c30b5ca6146e26ded85b2aa31ca16ca9bf (diff) |
uxa: Call check_solid before running the solid blitter.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'uxa')
-rw-r--r-- | uxa/uxa-accel.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/uxa/uxa-accel.c b/uxa/uxa-accel.c index 9f4a89a6..cfc2d381 100644 --- a/uxa/uxa-accel.c +++ b/uxa/uxa-accel.c @@ -909,12 +909,16 @@ uxa_fill_region_solid(DrawablePtr pDrawable, int xoff, yoff; Bool ret = FALSE; - uxa_get_drawable_deltas(pDrawable, pPixmap, &xoff, &yoff); + if (uxa_screen->info->check_solid && !uxa_screen->info->check_solid(pDrawable, alu, planemask)) + return FALSE; + + pPixmap = uxa_get_offscreen_pixmap(pDrawable, &xoff, &yoff); + if (!pPixmap) + return FALSE; + REGION_TRANSLATE(pScreen, pRegion, xoff, yoff); - if (uxa_pixmap_is_offscreen(pPixmap) && - (*uxa_screen->info->prepare_solid) (pPixmap, alu, planemask, pixel)) - { + if ((*uxa_screen->info->prepare_solid) (pPixmap, alu, planemask, pixel)) { int nbox; BoxPtr pBox; |