[prev in list] [next in list] [prev in thread] [next in thread]
List: freedesktop-xorg
Subject: Re: Xvnc with RENDER - almost working
From: Peter_Åstrand <astrand () cendio ! se>
Date: 2005-03-31 15:26:16
Message-ID: Pine.LNX.4.61.0503311723320.27464 () maggie ! lkpg ! cendio ! se
[Download RAW message or body]
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
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic