Skip to content

Commit

Permalink
Call SourceValidate even if src == dst
Browse files Browse the repository at this point in the history
The extra SourceValidate calls from damageCopyArea and damageCopyPlane
can be removed.

Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Signed-off-by: Keith Packard <keithp@keithp.com>
  • Loading branch information
Ville Syrjälä authored and keith-packard committed Jan 5, 2011
1 parent e41e907 commit 0998574
Show file tree
Hide file tree
Showing 4 changed files with 3 additions and 28 deletions.
3 changes: 1 addition & 2 deletions doc/xml/Xserver-spec.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2958,8 +2958,7 @@ The sample server implementation is in Xserver/fb/fbscreen.c.</para>

</programlisting></blockquote>
SourceValidate should be called by CopyArea/CopyPlane primitives when
the source drawable is not the same as the destination, and the
SourceValidate function pointer in the screen is non-null. If you know that
the SourceValidate function pointer in the screen is non-null. If you know that
you will never need SourceValidate, you can avoid this check. Currently,
SourceValidate is used by the mi software cursor code to remove the cursor
from the screen when the source rectangle overlaps the cursor position.
Expand Down
3 changes: 1 addition & 2 deletions hw/xfree86/xaa/xaaBitBlt.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,7 @@ XAABitBlt(
origDest.x = dstx;
origDest.y = dsty;

if((pSrcDrawable != pDstDrawable) &&
pSrcDrawable->pScreen->SourceValidate) {
if (pSrcDrawable->pScreen->SourceValidate) {
(*pSrcDrawable->pScreen->SourceValidate) (
pSrcDrawable, srcx, srcy, width, height,
pGC->subWindowMode);
Expand Down
3 changes: 1 addition & 2 deletions mi/micopy.c
Original file line number Diff line number Diff line change
Expand Up @@ -183,8 +183,7 @@ miDoCopy (DrawablePtr pSrcDrawable,
return NULL;
}

if ((pSrcDrawable != pDstDrawable) &&
pSrcDrawable->pScreen->SourceValidate)
if (pSrcDrawable->pScreen->SourceValidate)
{
(*pSrcDrawable->pScreen->SourceValidate) (pSrcDrawable, xIn, yIn, widthSrc, heightSrc,
pGC->subWindowMode);
Expand Down
22 changes: 0 additions & 22 deletions miext/damage/damage.c
Original file line number Diff line number Diff line change
Expand Up @@ -891,17 +891,6 @@ damageCopyArea(DrawablePtr pSrc,
RegionPtr ret;
DAMAGE_GC_OP_PROLOGUE(pGC, pDst);

/* The driver will only call SourceValidate() when pSrc != pDst,
* but the software sprite (misprite.c) always need to know when a
* drawable is copied so it can remove the sprite. See #1030. */
if ((pSrc == pDst) && pSrc->pScreen->SourceValidate &&
pSrc->type == DRAWABLE_WINDOW &&
((WindowPtr)pSrc)->viewable)
{
(*pSrc->pScreen->SourceValidate) (pSrc, srcx, srcy, width, height,
pGC->subWindowMode);
}

if (checkGCDamage (pDst, pGC))
{
BoxRec box;
Expand Down Expand Up @@ -938,17 +927,6 @@ damageCopyPlane(DrawablePtr pSrc,
RegionPtr ret;
DAMAGE_GC_OP_PROLOGUE(pGC, pDst);

/* The driver will only call SourceValidate() when pSrc != pDst,
* but the software sprite (misprite.c) always need to know when a
* drawable is copied so it can remove the sprite. See #1030. */
if ((pSrc == pDst) && pSrc->pScreen->SourceValidate &&
pSrc->type == DRAWABLE_WINDOW &&
((WindowPtr)pSrc)->viewable)
{
(*pSrc->pScreen->SourceValidate) (pSrc, srcx, srcy, width, height,
pGC->subWindowMode);
}

if (checkGCDamage (pDst, pGC))
{
BoxRec box;
Expand Down

0 comments on commit 0998574

Please sign in to comment.