Xvnc with RENDER - almost working
Peter Åstrand
astrand at cendio.se
Thu Mar 31 07:26:16 PST 2005
On Thu, 31 Mar 2005, Tim Waugh wrote:
>> I've been able to reproduce this problem now. For me, it only happens in
>> the GNOME environment, not in KDE. Xvnc gives error messages like:
>> if ((xDst < 0) || (yDst < 0))
>> return;
>
> Well, that removes the 'striping' effect, but instead just large
> regions don't get repainted now. :-/
I discovered that myself a few minutes ago :) It seems to help to call the
original function, even though xDst is negative. Like this:
void vncHooksComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask,
INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
{
ScreenPtr pScreen = pDst->pDrawable->pScreen;
vncHooksScreenPtr vncHooksScreen =
((vncHooksScreenPtr)pScreen->devPrivates[vncHooksScreenIndex].ptr);
BoxRec box;
PictureScreenPtr ps = GetPictureScreen(pScreen);
if ((xDst >= 0) && (yDst >= 0)) {
box.x1 = pDst->pDrawable->x + xDst;
box.y1 = pDst->pDrawable->y + yDst;
box.x2 = box.x1 + width;
box.y2 = box.y1 + height;
RegionHelper changed(pScreen, &box, 0);
vncHooksScreen->desktop->add_changed(changed.reg);
}
ps->Composite = vncHooksScreen->Composite;
(*ps->Composite)(op, pSrc, pMask, pDst, xSrc, ySrc,
xMask, yMask, xDst, yDst, width, height);
ps->Composite = vncHooksComposite;
}
--
Peter Åstrand Chief Developer
Cendio www.thinlinc.com
Teknikringen 3 www.cendio.se
583 30 Linköping Phone: +46-13-21 46 00
More information about the xorg
mailing list