[PATCH 1/2] Revert "exa: a few small pitch related changes"

Maarten Maathuis madman2003 at gmail.com
Tue Dec 1 15:16:12 PST 2009


This reverts commit 99d88ef69d5f7dbf99ca605eceb92f42230a89f4.

- Some pixmaps under classic have a sys_pitch which is 0, no idea why. This is
causing rendering corruption.

Signed-off-by: Maarten Maathuis <madman2003 at gmail.com>
---
 exa/exa.c                 |   11 ++---------
 exa/exa_migration_mixed.c |   11 ++++++-----
 2 files changed, 8 insertions(+), 14 deletions(-)

diff --git a/exa/exa.c b/exa/exa.c
index 16f39f6..023288c 100644
--- a/exa/exa.c
+++ b/exa/exa.c
@@ -323,17 +323,10 @@ ExaDoPrepareAccess(PixmapPtr pPixmap, int index)
 
     has_gpu_copy = exaPixmapHasGpuCopy(pPixmap);
 
-    if (has_gpu_copy) {
-	/* This can be NULL, but the driver prepareAccess call should
-	 * take care of that. */
+    if (has_gpu_copy && pExaPixmap->fb_ptr)
 	pPixmap->devPrivate.ptr = pExaPixmap->fb_ptr;
-	pPixmap->devKind = pExaPixmap->fb_pitch;
-    } else {
-	/* For mixed pixmaps this can be NULL, but that will be fixed
-	 * later in exaPrepareAccessReg_mixed(). */
+    else
 	pPixmap->devPrivate.ptr = pExaPixmap->sys_ptr;
-	pPixmap->devKind = pExaPixmap->sys_pitch;
-    }
 
     /* Store so we can handle repeated / nested calls. */
     pExaScr->access[index].pixmap = pPixmap;
diff --git a/exa/exa_migration_mixed.c b/exa/exa_migration_mixed.c
index ee32b21..a7fdf63 100644
--- a/exa/exa_migration_mixed.c
+++ b/exa/exa_migration_mixed.c
@@ -101,6 +101,7 @@ exaDoMigration_mixed(ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel)
 	if (pExaPixmap->pDamage && exaPixmapHasGpuCopy(pPixmap)) {
 	    ExaScreenPriv(pPixmap->drawable.pScreen);
 
+	    pPixmap->devKind = pExaPixmap->fb_pitch;
 	    exaCopyDirtyToFb(pixmaps + i);
 
 	    if (pExaScr->deferred_mixed_pixmap == pPixmap)
@@ -108,10 +109,6 @@ exaDoMigration_mixed(ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel)
 	}
 
 	pExaPixmap->use_gpu_copy = exaPixmapHasGpuCopy(pPixmap);
-	if (pExaPixmap->use_gpu_copy)
-	    pPixmap->devKind = pExaPixmap->fb_pitch;
-	else
-	    pPixmap->devKind = pExaPixmap->sys_pitch;
     }
 }
 
@@ -186,14 +183,17 @@ exaPrepareAccessReg_mixed(PixmapPtr pPixmap, int index, RegionPtr pReg)
 		    pixmaps[0].as_src = TRUE;
 		    pixmaps[0].pReg = NULL;
 		}
+		pPixmap->devKind = pExaPixmap->fb_pitch;
 		exaCopyDirtyToSys(pixmaps);
 	    }
 
 	    if (as_dst)
 		exaPixmapDirty(pPixmap, 0, 0, pPixmap->drawable.width,
 			       pPixmap->drawable.height);
-	} else if (has_gpu_copy)
+	} else if (has_gpu_copy) {
+	    pPixmap->devKind = pExaPixmap->fb_pitch;
 	    exaCopyDirtyToSys(pixmaps);
+	}
 
 	pPixmap->devPrivate.ptr = pExaPixmap->sys_ptr;
 	pPixmap->devKind = pExaPixmap->sys_pitch;
@@ -222,6 +222,7 @@ void exaFinishAccess_mixed(PixmapPtr pPixmap, int index)
 		pExaScr->deferred_mixed_pixmap != pPixmap)
 		exaMoveInPixmap_mixed(pExaScr->deferred_mixed_pixmap);
 	    pExaScr->deferred_mixed_pixmap = pPixmap;
+	    pPixmap->devKind = pExaPixmap->fb_pitch;
 	} else
 	    exaMoveInPixmap_mixed(pPixmap);
     }
-- 
1.6.5.3



More information about the xorg-devel mailing list