xserver: Branch 'master' - 4 commits
Maarten Maathuis
madman2003 at gmail.com
Tue Aug 26 11:05:56 PDT 2008
Thanks for the warning, i've fixed it and i will keep your long term
solution in mind as well.
Maarten.
On Tue, Aug 26, 2008 at 8:21 PM, Michel Dänzer
<michel at tungstengraphics.com> wrote:
> On Tue, 2008-08-26 at 08:57 -0700, Maarten Maathuis wrote:
>>
>> commit 7c14fdbacfcd2f4d56a346e6c72e44e4ba9909c1
>> Author: Maarten Maathuis <madman2003 at gmail.com>
>> Date: Tue Aug 26 17:21:43 2008 +0200
>>
>> exa: some minor cleanup
>> - Fix compile warning
>> - Order exa.h by source file that exports the function.
>> - Move the function i created earlier to private headers.
>
> I would prefer such unrelated changes to be in separate commits. (You
> could have even fixed up the location of the new function prototype in
> the commit where it was added before pushing these changes - something
> like stgit/guilt makes that easy)
>
>
>> commit 988725f32e082aee9392a71464125157a83d1e67
>> Author: Maarten Maathuis <madman2003 at gmail.com>
>> Date: Tue Aug 26 16:54:29 2008 +0200
>>
>> exa: move destination damage for internal calls to a special function
>> - This should improve clarity for someone who isn't familiar with the code.
>
> This change is incorrect:
>
>> /**
>> + * Returns TRUE if the pixmap has damage.
>> + * EXA only migrates the parts of a destination
>> + * that are affected by rendering.
>> + * It uses the current damage as indication.
>> + * So anything that does not need to be updated won't be.
>> + * For clarity this seperate function was made.
>> + * Note that some situations don't use this,
>> + * because their calls are wrapped by the damage layer.
>> + */
>> +Bool
>> +exaDamageDestForMigration(PixmapPtr pPix, RegionPtr region)
>> +{
>> + ScreenPtr pScreen = pPix->drawable.pScreen;
>> + (void) pScreen; /* the macros don't use pScreen currently */
>> + ExaPixmapPriv (pPix);
>> + int x_offset, y_offset;
>> + RegionPtr pending_damage;
>> +
>> + if (!pExaPixmap->pDamage)
>> + return FALSE;
>> +
>> + exaGetDrawableDeltas(&pPix->drawable, pPix, &x_offset, &y_offset);
>> +
>> + REGION_TRANSLATE(pScreen, region, x_offset, y_offset);
>> + pending_damage = DamagePendingRegion(pExaPixmap->pDamage);
>> + REGION_UNION(pScreen, pending_damage, pending_damage, region);
>> + /* Restore region as we got it. */
>> + REGION_TRANSLATE(pScreen, region, -x_offset, -y_offset);
>> +
>> + return TRUE;
>> +}
>
> If you look at exaGetDrawableDeltas(), you'll see that x/y_offset will
> always be 0 here. At the very least, exaDamageDestForMigration() will
> need to take a separate DrawablePtr argument like and for
> exaGetDrawableDeltas().
>
> Though I think a cleaner long term solution would be to move the
> damageReportPostOp() call from DamageDamageRegion() to a separate
> function like DamageDamagePostOp(), so we could just use
> DamageDamageRegion() instead of exaDamageDestForMigration() and
> DamageDamagePostOp() after the corresponding rendering operation.
>
>
> --
> Earthling Michel Dänzer | http://tungstengraphics.com
> Libre software enthusiast | Debian, X and DRI developer
>
>
More information about the xorg
mailing list