[PATCH] Re: Problem in miClipPictureSrc?
Peter Hutterer
peter.hutterer at who-t.net
Mon Oct 5 17:24:00 PDT 2009
On Fri, Oct 02, 2009 at 11:46:27PM +0200, Kim Woelders wrote:
> On Fri, 02 Oct 2009 23:32:31 +0200, Kim Woelders <kim at woelders.dk> wrote:
>
>> On Fri, 02 Oct 2009 16:07:31 +0200, Soeren Sandmann
>> <sandmann at daimi.au.dk>
>> wrote:
>>
>>> "Kim Woelders" <kim at woelders.dk> writes:
>>>
>>>> Commit 128cd03eecacc6d5c5903d59a11966dcf3697bf1 causes trouble with
>>>> clip regions in the e16 WM composite manager (e.g. during fade-out).
>>>
>>> This marks the second recorded use of source clipping in the history
>>> of the Render extension.
>>>
>>>> The problems are fixed by attached patch. Not sure if this is the
>>>> proper solution though...
>>>
>>> The intent of this code is to shift the client clip into destination
>>> coordinates, then clip against it. Translating by clipOrigin.x/y
>>> converts from region coordinates to source coordinates, and dx/dy is
>>> supposed to bring it into destination coordinates.
>>>
>>> The problem with the commit I think is that I was thinking of dx/dy as
>>> the amount the destination is shifted, when it actually is how much
>>> the source is shifted.
>>>
>>> If so, the real fix would be:
>>>
>>>> @@ -318,14 +318,14 @@ miClipPictureSrc (RegionPtr pRegion,
>>>> Bool result;
>>>>
>>>> pixman_region_translate ( pPicture->clientClip,
>>>> - pPicture->clipOrigin.x - dx,
>>>> - pPicture->clipOrigin.y - dy);
>>>> + dx - pPicture->clipOrigin.x,
>>>> + dy - pPicture->clipOrigin.y);
>>>
>>> + pPicture->clipOrigin.x + dx,
>>> + pPicture->clipOrigin.y + dy,
>>>
>>> and a similar correction after the intersection.
>>>
>> Yes, that works too (presumably because pPicture->clipOrigin.x/y always =
>> 0 in my case).
>> New patch attached.
>>
>>> I'd be interested in whether the same bug exists with the vesa driver
>>> (or another unaccelerated one).
>>>
>> I tried the vesa driver but get only a mostly black screen.
>>
> ... this time with patch...
>
> /Kim
> From 0c3a4dd64f7b421a7724eea1d3549dc484b31c61 Mon Sep 17 00:00:00 2001
> From: Kim Woelders <kim at woelders.dk>
> Date: Fri, 2 Oct 2009 19:31:15 +0200
> Subject: [PATCH] render: Fix clip region translation in miClipPictureSrc().
>
>
> Signed-off-by: Kim Woelders <kim at woelders.dk>
> ---
> render/mipict.c | 8 ++++----
> 1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/render/mipict.c b/render/mipict.c
> index 71f3de7..b5dfcb2 100644
> --- a/render/mipict.c
> +++ b/render/mipict.c
> @@ -318,14 +318,14 @@ miClipPictureSrc (RegionPtr pRegion,
> Bool result;
>
> pixman_region_translate ( pPicture->clientClip,
> - pPicture->clipOrigin.x - dx,
> - pPicture->clipOrigin.y - dy);
> + pPicture->clipOrigin.x + dx,
> + pPicture->clipOrigin.y + dy);
>
> result = REGION_INTERSECT (pScreen, pRegion, pRegion, pPicture->clientClip);
>
> pixman_region_translate ( pPicture->clientClip,
> - - (pPicture->clipOrigin.x - dx),
> - - (pPicture->clipOrigin.y - dy));
> + - (pPicture->clipOrigin.x + dx),
> + - (pPicture->clipOrigin.y + dy));
>
> if (!result)
> return FALSE;
> --
> 1.6.5.rc2
>
Thanks, merged into git://people.freedesktop.org/~whot/xserver.git.
Cheers,
Peter
More information about the xorg-devel
mailing list