summaryrefslogtreecommitdiff
path: root/hw/kdrive/src/kaa.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/kdrive/src/kaa.c')
-rw-r--r--hw/kdrive/src/kaa.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/hw/kdrive/src/kaa.c b/hw/kdrive/src/kaa.c
index a13e258aa..5e67368a8 100644
--- a/hw/kdrive/src/kaa.c
+++ b/hw/kdrive/src/kaa.c
@@ -131,12 +131,12 @@ kaaPixmapAllocArea (PixmapPtr pPixmap)
static void
kaaMoveInPixmap (PixmapPtr pPixmap)
{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ KaaScreenPriv (pScreen);
int dst_pitch, src_pitch, bytes;
unsigned char *dst, *src;
int i;
- KdCheckSync (pPixmap->drawable.pScreen);
-
DBG_MIGRATE (("-> 0x%08x (0x%x) (%dx%d)\n",
pPixmap->drawable.id,
KaaGetPixmapPriv(pPixmap)->area ?
@@ -150,11 +150,19 @@ kaaMoveInPixmap (PixmapPtr pPixmap)
if (!kaaPixmapAllocArea (pPixmap))
return;
+ if (pKaaScr->info->UploadToScreen)
+ {
+ if (pKaaScr->info->UploadToScreen(pPixmap, src, src_pitch))
+ return;
+ }
+
dst = pPixmap->devPrivate.ptr;
dst_pitch = pPixmap->devKind;
bytes = src_pitch < dst_pitch ? src_pitch : dst_pitch;
+ KdCheckSync (pPixmap->drawable.pScreen);
+
i = pPixmap->drawable.height;
while (i--) {
memcpy (dst, src, bytes);