summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@nokia.com>2011-01-05 20:41:05 +0200
committerKeith Packard <keithp@keithp.com>2011-01-05 11:56:42 -0800
commit0998574699502e6ab14fd8899c2e42961d4df7d0 (patch)
tree1ac905358ef8f2d7bd19da470de30ae0b9a46186
parente41e907b3c19908f5316346fa587ced3115478cd (diff)
Call SourceValidate even if src == dst
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>
-rw-r--r--doc/xml/Xserver-spec.xml3
-rw-r--r--hw/xfree86/xaa/xaaBitBlt.c3
-rw-r--r--mi/micopy.c3
-rw-r--r--miext/damage/damage.c22
4 files changed, 3 insertions, 28 deletions
diff --git a/doc/xml/Xserver-spec.xml b/doc/xml/Xserver-spec.xml
index f7b2296a2..7d7f9152c 100644
--- a/doc/xml/Xserver-spec.xml
+++ b/doc/xml/Xserver-spec.xml
@@ -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.
diff --git a/hw/xfree86/xaa/xaaBitBlt.c b/hw/xfree86/xaa/xaaBitBlt.c
index dfe51ea09..049dbfbe7 100644
--- a/hw/xfree86/xaa/xaaBitBlt.c
+++ b/hw/xfree86/xaa/xaaBitBlt.c
@@ -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);
diff --git a/mi/micopy.c b/mi/micopy.c
index 50e266752..652c6207e 100644
--- a/mi/micopy.c
+++ b/mi/micopy.c
@@ -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);
diff --git a/miext/damage/damage.c b/miext/damage/damage.c
index d0e0fe4d3..566995c41 100644
--- a/miext/damage/damage.c
+++ b/miext/damage/damage.c
@@ -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;
@@ -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;