aboutsummaryrefslogtreecommitdiffstats
path: root/unix
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2013-05-22 12:52:27 +0000
committerPierre Ossman <ossman@cendio.se>2013-05-22 12:52:27 +0000
commit3e78fcbb4cbf5a870ba00880e9eb44e13a3da8a2 (patch)
treecb1d1c051602540ad50941124ac3cd8c584b308b /unix
parent1556e8148de3ab0bfa35b4840fea28a575f9cdfd (diff)
downloadtigervnc-3e78fcbb4cbf5a870ba00880e9eb44e13a3da8a2.tar.gz
tigervnc-3e78fcbb4cbf5a870ba00880e9eb44e13a3da8a2.zip
Redo r5090 using functions that are available in older
Xorg versions as well. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@5100 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'unix')
-rw-r--r--unix/xserver/hw/vnc/vncHooks.cc39
1 files changed, 18 insertions, 21 deletions
diff --git a/unix/xserver/hw/vnc/vncHooks.cc b/unix/xserver/hw/vnc/vncHooks.cc
index e34aa275..426c29f4 100644
--- a/unix/xserver/hw/vnc/vncHooks.cc
+++ b/unix/xserver/hw/vnc/vncHooks.cc
@@ -661,22 +661,20 @@ GlyphCount(int nlist, GlyphListPtr list, GlyphPtr * glyphs)
return count;
}
-static void
-GlyphRegion(int nlist, GlyphListPtr list, GlyphPtr * glyphs, RegionPtr region)
+static RegionPtr
+GlyphsToRegion(ScreenPtr pScreen, int nlist, GlyphListPtr list, GlyphPtr *glyphs)
{
int n;
GlyphPtr glyph;
int x, y;
- int nboxes = GlyphCount(nlist, list, glyphs);
- BoxRec boxes[nboxes];
- BoxPtr box;
-
- RegionUninit(region);
+ int nrects = GlyphCount(nlist, list, glyphs);
+ xRectangle rects[nrects];
+ xRectanglePtr rect;
x = 0;
y = 0;
- box = &boxes[0];
+ rect = &rects[0];
while (nlist--) {
x += list->xOff;
y += list->yOff;
@@ -684,17 +682,17 @@ GlyphRegion(int nlist, GlyphListPtr list, GlyphPtr * glyphs, RegionPtr region)
list++;
while (n--) {
glyph = *glyphs++;
- box->x1 = x - glyph->info.x;
- box->y1 = y - glyph->info.y;
- box->x2 = box->x1 + glyph->info.width;
- box->y2 = box->y1 + glyph->info.height;
+ rect->x = x - glyph->info.x;
+ rect->y = y - glyph->info.y;
+ rect->width = glyph->info.width;
+ rect->height = glyph->info.height;
x += glyph->info.xOff;
y += glyph->info.yOff;
- box++;
+ rect++;
}
}
- RegionInitBoxes(region, boxes, nboxes);
+ return RECTS_TO_REGION(pScreen, nrects, rects, CT_NONE);
}
// Glyphs - Glyph specific version of Composite (caches and whatnot)
@@ -715,21 +713,20 @@ void vncHooksGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
BoxRec fbbox;
RegionRec fbreg;
- changed.init(NULL, 0);
-
- GlyphRegion(nlists, lists, glyphs, changed.reg);
- RegionTranslate(changed.reg, pDst->pDrawable->x, pDst->pDrawable->y);
+ changed.reg = GlyphsToRegion(pScreen, nlists, lists, glyphs);
+ REGION_TRANSLATE(pScreen, changed.reg,
+ pDst->pDrawable->x, pDst->pDrawable->y);
fbrect = vncHooksScreen->desktop->getRect();
fbbox.x1 = fbrect.tl.x;
fbbox.y1 = fbrect.tl.y;
fbbox.x2 = fbrect.br.x;
fbbox.y2 = fbrect.br.y;
- RegionInit(&fbreg, &fbbox, 0);
+ REGION_INIT(pScreen, &fbreg, &fbbox, 0);
- RegionIntersect(changed.reg, changed.reg, &fbreg);
+ REGION_INTERSECT(pScreen, changed.reg, changed.reg, &fbreg);
- RegionUninit(&fbreg);
+ REGION_UNINIT(pScreen, &fbreg);
} else {
changed.init(NullBox, 0);
}