diff options
author | Ulrich Sibiller <uli42@gmx.de> | 2018-02-02 22:40:23 +0100 |
---|---|---|
committer | Ulrich Sibiller <uli42@gmx.de> | 2018-02-02 22:49:25 +0100 |
commit | c804d99f2c4ea21e37cc8f6c3168b7b79d0d721a (patch) | |
tree | 2293105d9178b33f6f4f138764b2dc6258517f38 /nx-X11/programs/Xserver/hw/nxagent/NXshm.c | |
parent | ef0a3d636681a0cb46b29eb2c1e20c55b68ce2fb (diff) | |
download | nx-libs-c804d99f2c4ea21e37cc8f6c3168b7b79d0d721a.tar.gz nx-libs-c804d99f2c4ea21e37cc8f6c3168b7b79d0d721a.tar.bz2 nx-libs-c804d99f2c4ea21e37cc8f6c3168b7b79d0d721a.zip |
NXhsm.c: add missing code
This code was already existing in Xorg 6.6, but never in NX, for whatever reason.
Diffstat (limited to 'nx-X11/programs/Xserver/hw/nxagent/NXshm.c')
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/NXshm.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXshm.c b/nx-X11/programs/Xserver/hw/nxagent/NXshm.c index 2ffca8066..fa53af119 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXshm.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXshm.c @@ -349,12 +349,26 @@ ProcShmPutImage(client) fprintf(stderr, "ProcShmPutImage: Calling (*shmFuncs[pDraw->pScreen->myNum]->PutImage)().\n"); #endif - (*shmFuncs[pDraw->pScreen->myNum]->PutImage)( - pDraw, pGC, stuff->depth, stuff->format, - stuff->totalWidth, stuff->totalHeight, - stuff->srcX, stuff->srcY, - stuff->srcWidth, stuff->srcHeight, - stuff->dstX, stuff->dstY, + if ((((stuff->format == ZPixmap) && (stuff->srcX == 0)) || + ((stuff->format != ZPixmap) && + (stuff->srcX < screenInfo.bitmapScanlinePad) && + ((stuff->format == XYBitmap) || + ((stuff->srcY == 0) && + (stuff->srcHeight == stuff->totalHeight))))) && + ((stuff->srcX + stuff->srcWidth) == stuff->totalWidth)) + (*pGC->ops->PutImage) (pDraw, pGC, stuff->depth, + stuff->dstX, stuff->dstY, + stuff->totalWidth, stuff->srcHeight, + stuff->srcX, stuff->format, + shmdesc->addr + stuff->offset + + (stuff->srcY * length)); + else + (*shmFuncs[pDraw->pScreen->myNum]->PutImage)( + pDraw, pGC, stuff->depth, stuff->format, + stuff->totalWidth, stuff->totalHeight, + stuff->srcX, stuff->srcY, + stuff->srcWidth, stuff->srcHeight, + stuff->dstX, stuff->dstY, shmdesc->addr + stuff->offset); if (stuff->sendEvent) |