diff -ru /home/oliford/oe/tmp/work/armv5te-angstrom-linux-gnueabi/xserver-kdrive-1_1.4.0.90-r3/xorg-server-1.4.0.90/hw/kdrive/src/kaa.c hw/kdrive/src/kaa.c
--- /home/oliford/oe/tmp/work/armv5te-angstrom-linux-gnueabi/xserver-kdrive-1_1.4.0.90-r3/xorg-server-1.4.0.90/hw/kdrive/src/kaa.c	2007-12-07 02:38:42.000000000 +0000
+++ hw/kdrive/src/kaa.c	2008-12-22 11:12:01.000000000 +0000
@@ -29,6 +29,10 @@
 #include "kaa.h"
 #include "dixfontstr.h"
 
+//#define dbg(format, arg...)		\
+//	fprintf(stderr, format , ## arg);fflush(stderr)
+#define dbg(format, arg...){}
+
 #define DEBUG_MIGRATE 0
 #define DEBUG_PIXMAP 0
 #if DEBUG_MIGRATE
@@ -148,8 +152,10 @@
 					 pKaaScr->info->offsetAlign,
 					 FALSE, 
 					 kaaPixmapSave, (pointer) pPixmap);
-    if (!pKaaPixmap->area)
+    if (!pKaaPixmap->area){
+	dbg("KAA: KdOffscreenAlloc failed\n");
 	return FALSE;
+	}
     
     DBG_PIXMAP(("++ 0x%08x (0x%x) (%dx%d)\n",
 		  pPixmap->drawable.id,
@@ -183,8 +189,10 @@
     src = pPixmap->devPrivate.ptr;
     src_pitch = pPixmap->devKind;
     
-    if (!kaaPixmapAllocArea (pPixmap))
+    if (!kaaPixmapAllocArea (pPixmap)){
+	dbg("KAA: kaaPixmapAllocArea in kaaMoveInPixmap failed\n");
 	return;
+    }
 
     pKaaPixmap->dirty = FALSE;
 
@@ -232,7 +240,7 @@
 kaaPixmapUseScreen (PixmapPtr pPixmap)
 {
     KaaPixmapPriv (pPixmap);
-
+     dbg("kaaPixmapUseScreen(): pPixmap=%p, pKaaPixmap=%p, kaaPixmapPrivateIndex=%i\n", pPixmap, pKaaPixmap, kaaPixmapPrivateIndex);
     if (pKaaPixmap->score == KAA_PIXMAP_SCORE_PINNED)
 	return;
 
@@ -299,7 +307,7 @@
     PixmapPtr		pPixmap;
     KaaPixmapPrivPtr	pKaaPixmap;
     int			bpp;
-    
+    dbg("kaaCreatePixmap(%ix%ix%i)\n", w, h, depth);
     bpp = BitsPerPixel (depth);
     if (bpp == 32 && depth == 24)
     {
@@ -313,11 +321,14 @@
 		break;
 	    }
     }
-
+   dbg("bpp=%i\n",bpp);
     pPixmap = fbCreatePixmapBpp (pScreen, w, h, depth, bpp);
-    if (!pPixmap)
+    if (!pPixmap){
+	dbg("pKaaPixmap not set\n");
 	return NULL;
+    }
     pKaaPixmap = KaaGetPixmapPriv(pPixmap);
+    dbg("ok, now pKaaPixmap = %p\n", pKaaPixmap);
     if (!w || !h)
 	pKaaPixmap->score = KAA_PIXMAP_SCORE_PINNED;
     else
@@ -334,7 +345,7 @@
 {
     ScreenPtr	pScreen = p->drawable.pScreen;
     KdScreenPriv(pScreen);
-
+    dbg("KAA: kaaPixmapIsOffscreen(): ptr=%08lx, base=%08lx, size=%08lx\n",  p->devPrivate.ptr, pScreenPriv->screen->memory_base, pScreenPriv->screen->memory_size);
     return ((unsigned long) ((CARD8 *) p->devPrivate.ptr - 
 			     (CARD8 *) pScreenPriv->screen->memory_base) <
 	    pScreenPriv->screen->memory_size);
@@ -345,29 +356,37 @@
 {
     PixmapPtr	pPixmap;
     int		x, y;
-    
+   dbg("KAA:  kaaGetOffscreenPixmap(): drawable->type=%i, DR_WIN=%i\n", pDrawable->type, DRAWABLE_WINDOW);
     if (pDrawable->type == DRAWABLE_WINDOW) {
 	pPixmap = (*pDrawable->pScreen->GetWindowPixmap) ((WindowPtr) pDrawable);
+	dbg("KAA: DR_WIN pPixmap now %p \n", pPixmap);
+
 #ifdef COMPOSITE
 	x = -pPixmap->screen_x;
 	y = -pPixmap->screen_y;
+	dbg("KAA: composite so set x y\n");
 #else
 	x = 0;
 	y = 0;
+	dbg("KAA: not composite so set x y = 0\n");
 #endif
     }
     else
     {
 	pPixmap = (PixmapPtr) pDrawable;
+	dbg("KAA: not DR_WIN, pPixmap now %p\n", pPixmap);
 	x = 0;
 	y = 0;
     }
     *xp = x;
     *yp = y;
-    if (kaaPixmapIsOffscreen (pPixmap))
+    if (kaaPixmapIsOffscreen (pPixmap)){
+	dbg("KAA: is kaaPixmapIsOffscreen, returning %p\n", pPixmap);
 	return pPixmap;
-    else
+    }else{
+	dbg("KAA: not kaaPixmapIsOffscreen, returning NULL\n", pPixmap);
 	return NULL;
+    }
 }
 
 Bool
@@ -1062,25 +1081,30 @@
     KaaScreenPrivPtr pKaaScr;
     KdScreenPriv(pScreen);
     KdScreenInfo *screen = pScreenPriv->screen;
+    dbg("kaaDrawInit: pScreen=%p, pScreenInfo=%p, pKaaScr=%p, screen=%p\n", pScreen, pScreenInfo, pKaaScr, screen);
 #ifdef RENDER
     PictureScreenPtr	ps = GetPictureScreenIfSet(pScreen);
 #endif
-    
+    dbg("kaaGeneration=%i, serverGeneration=%lu\n", kaaGeneration,  serverGeneration);
     if (kaaGeneration != serverGeneration)
     {
+	dbg("kaaScreenPrivateIndex=%i, kaaPixmapPrivateIndex=%i\n", kaaScreenPrivateIndex, kaaPixmapPrivateIndex);
 	kaaScreenPrivateIndex = AllocateScreenPrivateIndex();
 	kaaPixmapPrivateIndex = AllocatePixmapPrivateIndex();
 	kaaGeneration = serverGeneration;
+	dbg("kaaScreenPrivateIndex=%i, kaaPixmapPrivateIndex=%i, kaaGeneration=%i\n", kaaScreenPrivateIndex, kaaPixmapPrivateIndex, kaaGeneration);
     }
 
     pKaaScr = xalloc (sizeof (KaaScreenPrivRec));
-
+    dbg("pKaaScr=%p\n", pKaaScr);
     if (!pKaaScr)
 	return FALSE;
     
     pKaaScr->info = pScreenInfo;
     
     pScreen->devPrivates[kaaScreenPrivateIndex].ptr = (pointer) pKaaScr;
+    dbg("kaaScreenPrivateIndex=%i,  pScreen->devPrivates[kaaScreenPrivateIndex].ptr=%p\n",
+		kaaScreenPrivateIndex, pScreen->devPrivates[kaaScreenPrivateIndex].ptr);
     
     /*
      * Hook up asynchronous drawing
@@ -1106,6 +1130,7 @@
     if ((pKaaScr->info->flags & KAA_OFFSCREEN_PIXMAPS) &&
 	screen->off_screen_base < screen->memory_size)
     {
+	dbg("offscreen\n");
 	if (!AllocatePixmapPrivate(pScreen, kaaPixmapPrivateIndex,
 				   sizeof (KaaPixmapPrivRec)))
 	    return FALSE;
@@ -1114,6 +1139,7 @@
     }
     else
     {
+	dbg("!offscreen\n");
 	if (!AllocatePixmapPrivate(pScreen, kaaPixmapPrivateIndex, 0))
 	    return FALSE;
     }
diff -ru /home/oliford/oe/tmp/work/armv5te-angstrom-linux-gnueabi/xserver-kdrive-1_1.4.0.90-r3/xorg-server-1.4.0.90/hw/kdrive/src/kaapict.c hw/kdrive/src/kaapict.c
--- /home/oliford/oe/tmp/work/armv5te-angstrom-linux-gnueabi/xserver-kdrive-1_1.4.0.90-r3/xorg-server-1.4.0.90/hw/kdrive/src/kaapict.c	2007-11-06 14:37:25.000000000 +0000
+++ hw/kdrive/src/kaapict.c	2008-12-22 11:12:02.000000000 +0000
@@ -22,6 +22,10 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
+//define dbg(format, arg...)		\
+//	fprintf(stderr, format , ## arg);fflush(stderr)
+#define dbg(format, arg...)	{}
+
 #ifdef HAVE_CONFIG_H
 #include <kdrive-config.h>
 #endif
@@ -444,6 +448,7 @@
 	!(*pKaaScr->info->CheckComposite) (op, pSrc, pMask, pDst))
     {
 	REGION_UNINIT(pDst->pDrawable->pScreen, &region);
+	dbg("F1 ");
 	return -1;
     }
 
@@ -462,6 +467,7 @@
 
     if (!pDstPix) {
 	REGION_UNINIT(pDst->pDrawable->pScreen, &region);
+	dbg("F2 ");
 	return 0;
     }
 
@@ -471,6 +477,7 @@
 		(WindowPtr) pSrc->pDrawable);
 	else
 	    pSrcPix = (PixmapPtr) pSrc->pDrawable;
+	dbg("U1 ");
 	if ((*pKaaScr->info->UploadToScratch) (pSrcPix, &scratch))
 	    pSrcPix = &scratch;
     } else if (pSrcPix && pMask && !pMaskPix && pKaaScr->info->UploadToScratch) {
@@ -479,12 +486,14 @@
 		(WindowPtr) pMask->pDrawable);
 	else
 	    pMaskPix = (PixmapPtr) pMask->pDrawable;
+	dbg("U2 ");
 	if ((*pKaaScr->info->UploadToScratch) (pMaskPix, &scratch))
 	    pMaskPix = &scratch;
     }
 
     if (!pSrcPix || (pMask && !pMaskPix)) {
 	REGION_UNINIT(pDst->pDrawable->pScreen, &region);
+	dbg("F3 ");
 	return 0;
     }
 
@@ -492,6 +501,7 @@
 					     pMaskPix, pDstPix))
     {
 	REGION_UNINIT(pDst->pDrawable->pScreen, &region);
+	dbg("F4 ");
 	return -1;
     }
 

