2009-08-04 21:52:16 +02:00
|
|
|
Index: xorg-server-1.6.3/hw/vnc/translate.c
|
|
|
|
===================================================================
|
|
|
|
--- xorg-server-1.6.3.orig/hw/vnc/translate.c
|
|
|
|
+++ xorg-server-1.6.3/hw/vnc/translate.c
|
2008-07-11 02:26:04 +02:00
|
|
|
@@ -168,17 +168,17 @@ rfbTranslateNone(ScreenPtr pScreen, char
|
|
|
|
{
|
|
|
|
VNCSCREENPTR(pScreen);
|
|
|
|
DrawablePtr pDraw = (DrawablePtr)WindowTable[pScreen->myNum];
|
|
|
|
- int truewidth = PixmapBytePad(width, in->bitsPerPixel) / 4;
|
|
|
|
+ int truewidth = PixmapBytePad(width, in->bitsPerPixel);
|
|
|
|
|
|
|
|
- if ((x + truewidth > pVNC->width) || truewidth != width) {
|
|
|
|
- unsigned char *buffer = malloc(truewidth * height * in->bitsPerPixel / 8);
|
|
|
|
+ if ((x + width > pVNC->width) || truewidth != width * in->bitsPerPixel / 8) {
|
|
|
|
+ unsigned char *buffer = malloc(truewidth * height);
|
|
|
|
unsigned char *buf = buffer;
|
|
|
|
|
|
|
|
- (*pScreen->GetImage)(pDraw, x, y, truewidth, height, ZPixmap, ~0, (char*)buf);
|
|
|
|
+ (*pScreen->GetImage)(pDraw, x, y, width, height, ZPixmap, ~0, (char*)buf);
|
|
|
|
while (height--) {
|
|
|
|
memcpy(optr, buf, width * in->bitsPerPixel / 8);
|
|
|
|
optr += width * in->bitsPerPixel / 8;
|
|
|
|
- buf += truewidth * in->bitsPerPixel / 8;
|
|
|
|
+ buf += truewidth;
|
|
|
|
}
|
|
|
|
free(buffer);
|
|
|
|
return;
|