summaryrefslogtreecommitdiff
path: root/src/uxa
diff options
context:
space:
mode:
authorSøren Sandmann <ssp@redhat.com>2010-06-22 00:12:27 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2011-01-26 08:08:33 -0500
commit8f05e9149da590f4374557e8a41e8b9e35fa007f (patch)
tree7759df564df9b713e48e426086252dd64aa197de /src/uxa
parent1f9bf097d5e983afbc38b60dc44e9386c8e226e7 (diff)
Make the fetched regions much tighter for core text
Diffstat (limited to 'src/uxa')
-rw-r--r--src/uxa/uxa-damage.c3
-rw-r--r--src/uxa/uxa-unaccel.c17
2 files changed, 16 insertions, 4 deletions
diff --git a/src/uxa/uxa-damage.c b/src/uxa/uxa-damage.c
index 8b4794a..63ad0ea 100644
--- a/src/uxa/uxa-damage.c
+++ b/src/uxa/uxa-damage.c
@@ -91,7 +91,6 @@ trim_region (RegionPtr pRegion,
DrawablePtr pDrawable,
int subWindowMode)
{
- RegionPtr pDamageRegion;
RegionRec pixClip;
int draw_x, draw_y;
#ifdef COMPOSITE
@@ -153,7 +152,7 @@ trim_region (RegionPtr pRegion,
box.y2 = draw_y + pDrawable->height;
REGION_INIT(pScreen, &pixClip, &box, 1);
- REGION_INTERSECT (pScreen, pDamageRegion, pRegion, &pixClip);
+ REGION_INTERSECT (pScreen, pRegion, pRegion, &pixClip);
REGION_UNINIT(pScreen, &pixClip);
}
diff --git a/src/uxa/uxa-unaccel.c b/src/uxa/uxa-unaccel.c
index df5fbed..f980e94 100644
--- a/src/uxa/uxa-unaccel.c
+++ b/src/uxa/uxa-unaccel.c
@@ -22,6 +22,7 @@
*/
#include "uxa-priv.h"
+#include "uxa-damage.h"
#ifdef RENDER
#include "mipict.h"
@@ -278,10 +279,14 @@ uxa_check_image_glyph_blt(DrawablePtr pDrawable, GCPtr pGC,
CharInfoPtr * ppci, pointer pglyphBase)
{
ScreenPtr screen = pDrawable->pScreen;
+ RegionRec region;
+
+ REGION_INIT (screen, &region, (BoxPtr)NULL, 0);
+ uxa_damage_image_glyph_blt (&region, pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
UXA_FALLBACK(("to %p (%c)\n", pDrawable,
uxa_drawable_location(pDrawable)));
- if (uxa_prepare_access(pDrawable, NULL, UXA_ACCESS_RW)) {
+ if (uxa_prepare_access(pDrawable, &region, UXA_ACCESS_RW)) {
if (uxa_prepare_access_gc(pGC)) {
fbImageGlyphBlt(pDrawable, pGC, x, y, nglyph, ppci,
pglyphBase);
@@ -289,6 +294,8 @@ uxa_check_image_glyph_blt(DrawablePtr pDrawable, GCPtr pGC,
}
uxa_finish_access(pDrawable);
}
+
+ REGION_UNINIT (screen, &region);
}
void
@@ -297,11 +304,15 @@ uxa_check_poly_glyph_blt(DrawablePtr pDrawable, GCPtr pGC,
CharInfoPtr * ppci, pointer pglyphBase)
{
ScreenPtr screen = pDrawable->pScreen;
+ RegionRec region;
+
+ REGION_INIT (screen, &region, (BoxPtr)NULL, 0);
+ uxa_damage_poly_glyph_blt (&region, pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
UXA_FALLBACK(("to %p (%c), style %d alu %d\n", pDrawable,
uxa_drawable_location(pDrawable), pGC->fillStyle,
pGC->alu));
- if (uxa_prepare_access(pDrawable, NULL, UXA_ACCESS_RW)) {
+ if (uxa_prepare_access(pDrawable, &region, UXA_ACCESS_RW)) {
if (uxa_prepare_access_gc(pGC)) {
fbPolyGlyphBlt(pDrawable, pGC, x, y, nglyph, ppci,
pglyphBase);
@@ -309,6 +320,8 @@ uxa_check_poly_glyph_blt(DrawablePtr pDrawable, GCPtr pGC,
}
uxa_finish_access(pDrawable);
}
+
+ REGION_UNINIT (screen, &region);
}
void