From e4d3c8964283a9847c1b5a6b7da1fa04735faf7d9e77f4502b9b907b51e790f4 Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Fri, 3 Jul 2009 14:28:16 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xorg-x11-server?expand=0&rev=132 --- xorg-server-xf4vnc-fix.diff | 571 ++++++++++++++++++++++++++++++++++++ xorg-x11-server.changes | 6 + xorg-x11-server.spec | 10 +- 3 files changed, 583 insertions(+), 4 deletions(-) create mode 100644 xorg-server-xf4vnc-fix.diff diff --git a/xorg-server-xf4vnc-fix.diff b/xorg-server-xf4vnc-fix.diff new file mode 100644 index 0000000..03aa03c --- /dev/null +++ b/xorg-server-xf4vnc-fix.diff @@ -0,0 +1,571 @@ +Index: xorg-server-1.6.1/hw/vnc/cutpaste.c +=================================================================== +--- xorg-server-1.6.1.orig/hw/vnc/cutpaste.c ++++ xorg-server-1.6.1/hw/vnc/cutpaste.c +@@ -66,7 +66,7 @@ rfbSetXCutText(char *str, int len) + event.u.selectionClear.time = GetTimeInMillis(); + event.u.selectionClear.window = pSel->window; + event.u.selectionClear.atom = pSel->selection; +- (void) TryClientEvents (pSel->client, &event, 1, ++ (void) TryClientEvents (pSel->client, NULL, &event, 1, + NoEventMask, NoEventMask /* CantBeFiltered */, + NullGrab); + } +Index: xorg-server-1.6.1/hw/vnc/kbdptr.c +=================================================================== +--- xorg-server-1.6.1.orig/hw/vnc/kbdptr.c ++++ xorg-server-1.6.1/hw/vnc/kbdptr.c +@@ -74,19 +74,26 @@ vncSetPointerDevice(DeviceIntPtr ptr) + static void + EnqueueMotion(DeviceIntPtr ptrDev, int x, int y) + { +- xEvent *events = (xEvent*) calloc(sizeof(xEvent), GetMaximumEventsNum()); ++ int maxEventsNum = GetMaximumEventsNum(); ++ xEvent *events = (xEvent*) calloc(sizeof(xEvent), maxEventsNum); ++ EventListPtr evls= calloc(sizeof(EventList), maxEventsNum); + int detail = 0, valuators[2], nevents, i; + valuators[0] = x; + valuators[1] = y; ++ for (i = 0; i < maxEventsNum; i++) { ++ evls[i].event = &events[i]; ++ evls[i].evlen = sizeof(xEvent); ++ } + if (!ptrDev) { + ErrorF("VNC: In EnqueueMotion() ptrDev=NULL\n"); + return; + } +- nevents = GetPointerEvents(events, ptrDev, MotionNotify, detail, ++ nevents = GetPointerEvents(evls, ptrDev, MotionNotify, detail, + POINTER_ABSOLUTE, 0, 2, valuators); + for (i = 0; i < nevents; i++) + mieqEnqueue(ptrDev, events + i); + free(events); ++ free(evls); + } + #endif + +@@ -94,33 +101,47 @@ EnqueueMotion(DeviceIntPtr ptrDev, int x + static void + EnqueueButton(DeviceIntPtr ptrDev, int type, int detail) + { +- xEvent *events = (xEvent*) calloc(sizeof(xEvent), GetMaximumEventsNum()); ++ int maxEventsNum = GetMaximumEventsNum(); ++ xEvent *events = (xEvent*) calloc(sizeof(xEvent), maxEventsNum); ++ EventListPtr evls= calloc(sizeof(EventList), maxEventsNum); + int nevents, i; ++ for (i = 0; i < maxEventsNum; i++) { ++ evls[i].event = &events[i]; ++ evls[i].evlen = sizeof(xEvent); ++ } + if (!ptrDev) { + ErrorF("VNC: In EnqueueButton() ptrDev=NULL\n"); + return; + } +- nevents = GetPointerEvents(events, ptrDev, type, detail, ++ nevents = GetPointerEvents(evls, ptrDev, type, detail, + POINTER_ABSOLUTE, 0, 0, NULL/*valuators*/); + for (i = 0; i < nevents; i++) + mieqEnqueue(ptrDev, events + i); + free(events); ++ free(evls); + } + + + static void + EnqueueKey(DeviceIntPtr kbdDev, int type, int detail) + { +- xEvent *events = (xEvent*) calloc(sizeof(xEvent), GetMaximumEventsNum()); ++ int maxEventsNum = GetMaximumEventsNum(); ++ xEvent *events = (xEvent*) calloc(sizeof(xEvent), maxEventsNum); ++ EventListPtr evls= calloc(sizeof(EventList), maxEventsNum); + int nevents, i; ++ for (i = 0; i < maxEventsNum; i++) { ++ evls[i].event = &events[i]; ++ evls[i].evlen = sizeof(xEvent); ++ } + if (!kbdDev) { + ErrorF("VNC: In EnqueueKey() kbdDev=NULL\n"); + return; + } +- nevents = GetKeyboardEvents(events, kbdDev, type, detail); ++ nevents = GetKeyboardEvents(evls, kbdDev, type, detail); + for (i = 0; i < nevents; i++) + mieqEnqueue(kbdDev, events + i); + free(events); ++ free(evls); + } + + +@@ -256,7 +277,7 @@ KbdAddEvent(Bool down, KeySym keySym, rf + shiftMustBePressed = TRUE; + } + +- SendMappingNotify(MappingKeyboard, keyCode, 1, serverClient); ++ SendMappingNotify(kbdDevice, MappingKeyboard, keyCode, 1, serverClient); + + ErrorF("KbdAddEvent: unknown KeySym 0x%x - allocating KeyCode %d\n", + (int)keySym, keyCode); +Index: xorg-server-1.6.1/hw/vnc/rfbkeyb.c +=================================================================== +--- xorg-server-1.6.1.orig/hw/vnc/rfbkeyb.c ++++ xorg-server-1.6.1/hw/vnc/rfbkeyb.c +@@ -388,7 +388,7 @@ static XF86ModuleVersionInfo xf86rfbKeyb + "xf4vnc Project, see http://xf4vnc.sf.net", + MODINFOSTRING1, + MODINFOSTRING2, +- XF86_VERSION_CURRENT, ++ XORG_VERSION_CURRENT, + 1, 0, 0, + ABI_CLASS_XINPUT, + ABI_XINPUT_VERSION, +Index: xorg-server-1.6.1/hw/vnc/rfbmouse.c +=================================================================== +--- xorg-server-1.6.1.orig/hw/vnc/rfbmouse.c ++++ xorg-server-1.6.1/hw/vnc/rfbmouse.c +@@ -98,10 +98,12 @@ xf86rfbMouseControlProc(DeviceIntPtr dev + void *func1; + int (*func2)(void); + ++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 3 + if (LoaderSymbol("GetMotionHistory")) + func1 = LoaderSymbol("GetMotionHistory"); + else + func1 = LoaderSymbol("miPointerGetMotionEvents"); ++#endif + + if (LoaderSymbol("GetMotionHistorySize")) + func2 = LoaderSymbol("GetMotionHistorySize"); +@@ -120,7 +122,9 @@ xf86rfbMouseControlProc(DeviceIntPtr dev + map[4] = 4; + map[5] = 5; + InitPointerDeviceStruct(pDev, map, 5, ++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 3 + func1, ++#endif + PtrDeviceControl, + (*func2)(), 2); + break; +@@ -243,7 +247,7 @@ static XF86ModuleVersionInfo xf86rfbMous + "xf4vnc Project, see http://xf4vnc.sf.net", + MODINFOSTRING1, + MODINFOSTRING2, +- XF86_VERSION_CURRENT, ++ XORG_VERSION_CURRENT, + 1, 0, 0, + ABI_CLASS_XINPUT, + ABI_XINPUT_VERSION, +Index: xorg-server-1.6.1/hw/vnc/rfbserver.c +=================================================================== +--- xorg-server-1.6.1.orig/hw/vnc/rfbserver.c ++++ xorg-server-1.6.1/hw/vnc/rfbserver.c +@@ -1122,8 +1122,8 @@ rfbProcessClientNormalMessage(cl) + + { + int x, y; +- miPointerPosition(&x, &y); /*XXX deprecated*/ +- (*pVNC->spriteFuncs->SetCursor)(cl->pScreen, pVNC->pCurs, x, y); ++ miPointerGetPosition(inputInfo.pointer, &x, &y); ++ (*pVNC->spriteFuncs->SetCursor)(inputInfo.pointer, cl->pScreen, pVNC->pCurs, x, y); + } + #endif + +Index: xorg-server-1.6.1/hw/vnc/sprite.c +=================================================================== +--- xorg-server-1.6.1.orig/hw/vnc/sprite.c ++++ xorg-server-1.6.1/hw/vnc/sprite.c +@@ -112,7 +112,8 @@ static void rfbSpriteSaveDoomedAreas + static RegionPtr rfbSpriteRestoreAreas(WindowPtr pWin, RegionPtr pRgnExposed); + static void rfbSpriteComputeSaved(ScreenPtr pScreen); + +-static DevPrivateKey rfbSpriteScreenKey = &rfbSpriteScreenKey; ++static int rfbSpriteScreenKeyStore; ++static DevPrivateKey rfbSpriteScreenKey = &rfbSpriteScreenKeyStore; + + #define SCREEN_PROLOGUE(pScreen, field) ((pScreen)->field = \ + ((rfbSpriteScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, \ +@@ -144,7 +145,8 @@ static GCFuncs rfbSpriteGCFuncs = { + rfbSpriteCopyClip, + }; + +-static DevPrivateKey rfbSpriteGCKey = &rfbSpriteGCKey; ++static int rfbSpriteGCKeyStore; ++static DevPrivateKey rfbSpriteGCKey = &rfbSpriteGCKeyStore; + + #define GC_FUNC_PROLOGUE(pGC) \ + rfbSpriteGCPtr pGCPriv = \ +@@ -289,23 +291,27 @@ static GCOps rfbSpriteGCOps = { + * pointer-sprite method table + */ + +-static Bool rfbSpriteRealizeCursor (ScreenPtr pScreen, CursorPtr pCursor); +-static Bool rfbSpriteUnrealizeCursor (ScreenPtr pScreen, CursorPtr pCursor); +-static void rfbSpriteSetCursor (ScreenPtr pScreen, CursorPtr pCursor, int x, int y); +-static void rfbSpriteMoveCursor (ScreenPtr pScreen, int x, int y); ++static Bool rfbSpriteRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor); ++static Bool rfbSpriteUnrealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor); ++static void rfbSpriteSetCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, int x, int y); ++static void rfbSpriteMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y); ++static Bool rfbSpriteInitializeCursor (DeviceIntPtr pDev, ScreenPtr pScreen); ++static void rfbSpriteCleanupCursor (DeviceIntPtr pDev, ScreenPtr pScreen); + + miPointerSpriteFuncRec rfbSpritePointerFuncs = { + rfbSpriteRealizeCursor, + rfbSpriteUnrealizeCursor, + rfbSpriteSetCursor, + rfbSpriteMoveCursor, ++ rfbSpriteInitializeCursor, ++ rfbSpriteCleanupCursor, + }; + + /* + * other misc functions + */ + +-static Bool rfbDisplayCursor (ScreenPtr pScreen, CursorPtr pCursor); ++static Bool rfbDisplayCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor); + + + /* +@@ -1963,7 +1969,7 @@ rfbSpriteLineHelper() + #define SPRITE_PAD 8 + + static Bool +-rfbSpriteRealizeCursor (ScreenPtr pScreen, CursorPtr pCursor) ++rfbSpriteRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) + { + rfbSpriteScreenPtr pScreenPriv; + +@@ -1975,7 +1981,7 @@ rfbSpriteRealizeCursor (ScreenPtr pScree + } + + static Bool +-rfbSpriteUnrealizeCursor (ScreenPtr pScreen, CursorPtr pCursor) ++rfbSpriteUnrealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) + { + rfbSpriteScreenPtr pScreenPriv; + +@@ -1985,7 +1991,7 @@ rfbSpriteUnrealizeCursor (ScreenPtr pScr + } + + static void +-rfbSpriteSetCursor (ScreenPtr pScreen, CursorPtr pCursor, int x, int y) ++rfbSpriteSetCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, int x, int y) + { + rfbSpriteScreenPtr pScreenPriv; + rfbClientPtr cl, nextCl; +@@ -2101,13 +2107,24 @@ rfbSpriteSetCursor (ScreenPtr pScreen, C + } + + static void +-rfbSpriteMoveCursor (ScreenPtr pScreen, int x, int y) ++rfbSpriteMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y) + { + rfbSpriteScreenPtr pScreenPriv; + + pScreenPriv = (rfbSpriteScreenPtr)dixLookupPrivate(&pScreen->devPrivates, + rfbSpriteScreenKey); +- rfbSpriteSetCursor (pScreen, pScreenPriv->pCursor, x, y); ++ rfbSpriteSetCursor (pDev, pScreen, pScreenPriv->pCursor, x, y); ++} ++ ++static Bool ++rfbSpriteInitializeCursor (DeviceIntPtr pDev, ScreenPtr pScreen) ++{ ++ return TRUE; ++} ++ ++static void ++rfbSpriteCleanupCursor (DeviceIntPtr pDev, ScreenPtr pScreen) ++{ + } + + /* +@@ -2215,9 +2232,7 @@ rfbSpriteComputeSaved (pScreen) + */ + + static Bool +-rfbDisplayCursor(pScreen, pCursor) +- ScreenPtr pScreen; +- CursorPtr pCursor; ++rfbDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) + { + rfbClientPtr cl; + rfbSpriteScreenPtr pPriv; +@@ -2230,7 +2245,7 @@ rfbDisplayCursor(pScreen, pCursor) + + pPriv = (rfbSpriteScreenPtr)dixLookupPrivate(&pScreen->devPrivates, + rfbSpriteScreenKey); +- status = (*pPriv->DisplayCursor)(pScreen, pCursor); ++ status = (*pPriv->DisplayCursor)(pDev, pScreen, pCursor); + + /* send new cursor shape to interested viewers */ + for (cl = rfbClientHead; cl ; cl = cl->next) { +Index: xorg-server-1.6.1/hw/xfree86/vnc/vncInit.c +=================================================================== +--- xorg-server-1.6.1.orig/hw/xfree86/vnc/vncInit.c ++++ xorg-server-1.6.1/hw/xfree86/vnc/vncInit.c +@@ -35,7 +35,7 @@ + #include "xf86.h" + #include "xf86_OSproc.h" + #include "xf86Resources.h" +-#include "xf86Version.h" ++#include "xorgVersion.h" + + int vncScreenPrivateIndex = -1; + int inetdSock = -1; +@@ -56,11 +56,11 @@ static unsigned long VNCGeneration = 0; + static const OptionInfoRec *VNCAvailableOptions(void *unused); + static void rfbWakeupHandler (int i, pointer blockData, unsigned long err, pointer pReadmask); + +-static Bool vncCursorRealizeCursor(ScreenPtr, CursorPtr); +-static Bool vncCursorUnrealizeCursor(ScreenPtr, CursorPtr); +-static void vncCursorSetCursor(ScreenPtr, CursorPtr, int, int); +-static void vncCursorMoveCursor(ScreenPtr, int, int); +-static Bool vncDisplayCursor(ScreenPtr, CursorPtr); ++static Bool vncCursorRealizeCursor(DeviceIntPtr, ScreenPtr, CursorPtr); ++static Bool vncCursorUnrealizeCursor(DeviceIntPtr, ScreenPtr, CursorPtr); ++static void vncCursorSetCursor(DeviceIntPtr, ScreenPtr, CursorPtr, int, int); ++static void vncCursorMoveCursor(DeviceIntPtr, ScreenPtr, int, int); ++static Bool vncDisplayCursor(DeviceIntPtr, ScreenPtr, CursorPtr); + + static miPointerSpriteFuncRec vncCursorSpriteFuncs = { + vncCursorRealizeCursor, +@@ -389,23 +389,23 @@ VNCInit(ScreenPtr pScreen, unsigned char + /****** miPointerSpriteFunctions *******/ + + static Bool +-vncCursorRealizeCursor(ScreenPtr pScreen, CursorPtr pCurs) ++vncCursorRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs) + { + vncScreenPtr pScreenPriv = VNCPTR(pScreen); + +- return (*pScreenPriv->spriteFuncs->RealizeCursor)(pScreen, pCurs); ++ return (*pScreenPriv->spriteFuncs->RealizeCursor)(pDev, pScreen, pCurs); + } + + static Bool +-vncCursorUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCurs) ++vncCursorUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs) + { + vncScreenPtr pScreenPriv = VNCPTR(pScreen); + +- return (*pScreenPriv->spriteFuncs->UnrealizeCursor)(pScreen, pCurs); ++ return (*pScreenPriv->spriteFuncs->UnrealizeCursor)(pDev, pScreen, pCurs); + } + + static void +-vncCursorSetCursor(ScreenPtr pScreen, CursorPtr pCurs, int x, int y) ++vncCursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs, int x, int y) + { + vncScreenPtr pScreenPriv = VNCPTR(pScreen); + +@@ -426,11 +426,11 @@ vncCursorSetCursor(ScreenPtr pScreen, Cu + pScreenPriv->cursorIsDrawn = TRUE; + #endif + +- (*pScreenPriv->spriteFuncs->SetCursor)(pScreen, pCurs, x, y); ++ (*pScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, pCurs, x, y); + } + + static void +-vncCursorMoveCursor(ScreenPtr pScreen, int x, int y) ++vncCursorMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y) + { + vncScreenPtr pScreenPriv = VNCPTR(pScreen); + rfbClientPtr cl; +@@ -440,7 +440,7 @@ vncCursorMoveCursor(ScreenPtr pScreen, i + cl->cursorWasMoved = TRUE; + } + +- (*pScreenPriv->spriteFuncs->MoveCursor)(pScreen, x, y); ++ (*pScreenPriv->spriteFuncs->MoveCursor)(pDev, pScreen, x, y); + } + + Bool +@@ -505,9 +505,7 @@ vncUseHWCursorARGB(pScreen, pCursor) + #endif + + static Bool +-vncDisplayCursor(pScreen, pCursor) +- ScreenPtr pScreen; +- CursorPtr pCursor; ++vncDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) + { + vncScreenPtr pScreenPriv = VNCPTR(pScreen); + rfbClientPtr cl; +@@ -520,7 +518,7 @@ vncDisplayCursor(pScreen, pCursor) + cl->cursorWasChanged = TRUE; + } + +- ret = (*pScreen->DisplayCursor)(pScreen, pCursor); ++ ret = (*pScreen->DisplayCursor)(pDev, pScreen, pCursor); + + pScreen->DisplayCursor = vncDisplayCursor; + +Index: xorg-server-1.6.1/hw/vnc/vncext.c +=================================================================== +--- xorg-server-1.6.1.orig/hw/vnc/vncext.c ++++ xorg-server-1.6.1/hw/vnc/vncext.c +@@ -36,8 +36,9 @@ + #include + #include + +-DevPrivateKey vncCreateScreenResourcesKey = &vncCreateScreenResourcesKey; +-DevPrivateKey rfbGCKey = &rfbGCKey; ++static int vncCreateScreenResourcesKeyStore, rfbGCKeyStore; ++DevPrivateKey vncCreateScreenResourcesKey = &vncCreateScreenResourcesKeyStore; ++DevPrivateKey rfbGCKey = &rfbGCKeyStore; + + int VncSelectNotify(ClientPtr client, BOOL onoff); + void VncExtensionInit(void); +@@ -514,7 +515,7 @@ GenerateVncConnectedEvent(int sock) + else + conn.ipaddress = (CARD32)peer.sin_addr.s_addr; + +- (void) TryClientEvents(pn->client, (xEventPtr)&conn, 1, NoEventMask, ++ (void) TryClientEvents(pn->client, NULL, (xEventPtr)&conn, 1, NoEventMask, + NoEventMask, NullGrab); + } + pn = pn->next; +@@ -557,7 +558,7 @@ GenerateVncChromiumConnectedEvent(int so + else + conn.ipaddress = (CARD32)peer.sin_addr.s_addr; + +- (void) TryClientEvents(pn->client, (xEventPtr)&conn, 1, NoEventMask, ++ (void) TryClientEvents(pn->client, NULL, (xEventPtr)&conn, 1, NoEventMask, + NoEventMask, NullGrab); + } + pn = pn->next; +@@ -586,7 +587,7 @@ GenerateVncDisconnectedEvent(int sock) + conn.type = VncEventBase + XVncDisconnected; + conn.sequenceNumber = pn->client->sequence; + conn.connected = sock; +- (void) TryClientEvents(pn->client, (xEventPtr)&conn, 1, NoEventMask, ++ (void) TryClientEvents(pn->client, NULL, (xEventPtr)&conn, 1, NoEventMask, + NoEventMask, NullGrab); + } + pn = pn->next; +Index: xorg-server-1.6.1/hw/vnc/cursor.c +=================================================================== +--- xorg-server-1.6.1.orig/hw/vnc/cursor.c ++++ xorg-server-1.6.1/hw/vnc/cursor.c +@@ -262,7 +262,7 @@ rfbSendCursorPos(cl, pScreen) + + #if XFREE86VNC + if (pScreen == pCursorScreen) +- miPointerPosition(&x, &y); ++ miPointerGetPosition(inputInfo.pointer, &x, &y); + #else + rfbSpriteGetCursorPos(pScreen, &x, &y); + #endif +Index: xorg-server-1.6.1/hw/vnc/init.c +=================================================================== +--- xorg-server-1.6.1.orig/hw/vnc/init.c ++++ xorg-server-1.6.1/hw/vnc/init.c +@@ -138,7 +138,7 @@ static void rfbCrossScreen(ScreenPtr pSc + + + static void +-PointerWarpCursor(ScreenPtr pScreen, int x, int y) ++PointerWarpCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y) + { + #if 0 + DeviceIntPtr pDev = NULL; +@@ -775,8 +775,8 @@ InitInput(argc, argv) + char *argv[]; + { + DeviceIntPtr p, k; +- k = AddInputDevice(rfbKeybdProc, TRUE); +- p = AddInputDevice(rfbMouseProc, TRUE); ++ k = AddInputDevice(serverClient, rfbKeybdProc, TRUE); ++ p = AddInputDevice(serverClient, rfbMouseProc, TRUE); + RegisterKeyboardDevice(k); + RegisterPointerDevice(p); + +@@ -843,7 +843,6 @@ rfbMouseProc(pDevice, onoff) + map[4] = 4; + map[5] = 5; + InitPointerDeviceStruct(pDev, map, 5, +- GetMotionHistory, + PtrDeviceControl, + GetMaximumEventsNum(), 2 /* numAxes */); + vncSetPointerDevice(pDevice); +Index: xorg-server-1.6.1/hw/vnc/dispcur.c +=================================================================== +--- xorg-server-1.6.1.orig/hw/vnc/dispcur.c ++++ xorg-server-1.6.1/hw/vnc/dispcur.c +@@ -74,7 +74,10 @@ in this Software without prior written a + + /* per-screen private data */ + +-static DevPrivateKey rfbDCScreenKey = &rfbDCScreenKey; ++static int rfbDCScreenKeyStore; ++static DevPrivateKey rfbDCScreenKey = &rfbDCScreenKeyStore; ++static int rfbScreenKeyStore; ++static DevPrivateKey rfbScreenKey = &rfbScreenKeyStore; + + static Bool rfbDCCloseScreen(int index, ScreenPtr pScreen); + +@@ -205,7 +208,7 @@ rfbDCRealizeCursor (pScreen, pCursor) + CursorPtr pCursor; + { + if (pCursor->bits->refcnt <= 1) +- dixSetPrivate(&pCursor->bits->devPrivates, pScreen, NULL); ++ dixSetPrivate(&pCursor->bits->devPrivates, rfbScreenKey, NULL); + return TRUE; + } + +@@ -303,7 +306,7 @@ rfbDCRealize (ScreenPtr pScreen, CursorP + xfree ((pointer) pPriv); + return (rfbDCCursorPtr)NULL; + } +- dixSetPrivate(&pCursor->bits->devPrivates, pScreen, pPriv); ++ dixSetPrivate(&pCursor->bits->devPrivates, rfbScreenKey, pPriv); + return pPriv; + } + pPriv->pPicture = 0; +@@ -321,7 +324,7 @@ rfbDCRealize (ScreenPtr pScreen, CursorP + xfree ((pointer) pPriv); + return (rfbDCCursorPtr)NULL; + } +- dixSetPrivate(&pCursor->bits->devPrivates, pScreen, pPriv); ++ dixSetPrivate(&pCursor->bits->devPrivates, rfbScreenKey, pPriv); + + /* create the two sets of bits, clipping as appropriate */ + +@@ -368,7 +371,7 @@ rfbDCUnrealizeCursor (pScreen, pCursor) + rfbDCCursorPtr pPriv; + + pPriv = (rfbDCCursorPtr)dixLookupPrivate(&pCursor->bits->devPrivates, +- pScreen); ++ rfbScreenKey); + if (pPriv && (pCursor->bits->refcnt <= 1)) + { + if (pPriv->sourceBits) +@@ -380,7 +383,7 @@ rfbDCUnrealizeCursor (pScreen, pCursor) + FreePicture (pPriv->pPicture, 0); + #endif + xfree ((pointer) pPriv); +- dixSetPrivate(&pCursor->bits->devPrivates, pScreen, NULL); ++ dixSetPrivate(&pCursor->bits->devPrivates, rfbScreenKey, NULL); + } + return TRUE; + } +@@ -439,7 +442,7 @@ rfbDCPutUpCursor (pScreen, pCursor, x, y + WindowPtr pWin; + + pPriv = (rfbDCCursorPtr)dixLookupPrivate(&pCursor->bits->devPrivates, +- pScreen); ++ rfbScreenKey); + if (!pPriv) + { + pPriv = rfbDCRealize(pScreen, pCursor); +@@ -690,7 +693,7 @@ rfbDCMoveCursor (pScreen, pCursor, x, y, + PixmapPtr pTemp; + + pPriv = (rfbDCCursorPtr)dixLookupPrivate(&pCursor->bits->devPrivates, +- pScreen); ++ rfbScreenKey); + if (!pPriv) + { + pPriv = rfbDCRealize(pScreen, pCursor); diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index aca52d2..aea48d8 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Jul 2 15:51:47 CEST 2009 - mhopf@novell.com + +- Adapt vnc patches to changes in input infrastructure + (fixes bnc #508553) + ------------------------------------------------------------------- Wed Jun 24 18:17:18 CEST 2009 - mhopf@novell.com diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 7392da5..ce7c5eb 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -23,7 +23,7 @@ Name: xorg-x11-server %define dirsuffix 1.6.1 %define fglrx_driver_hack 0 ### FIXME -%define vnc 0 +%define vnc 1 BuildRequires: Mesa-devel bison flex fontconfig-devel freetype2-devel ghostscript-library libdrm-devel libopenssl-devel pkgconfig xorg-x11 xorg-x11-devel xorg-x11-libICE-devel xorg-x11-libSM-devel xorg-x11-libX11-devel xorg-x11-libXau-devel xorg-x11-libXdmcp-devel xorg-x11-libXext-devel xorg-x11-libXfixes-devel xorg-x11-libXmu-devel xorg-x11-libXp-devel xorg-x11-libXpm-devel xorg-x11-libXprintUtil-devel xorg-x11-libXrender-devel xorg-x11-libXt-devel xorg-x11-libXv-devel xorg-x11-libfontenc-devel xorg-x11-libxkbfile-devel xorg-x11-proto-devel xorg-x11-xtrans-devel ### HAL/evdev support BuildRequires: hal-devel @@ -33,7 +33,7 @@ BuildRequires: libjpeg-devel Url: http://xorg.freedesktop.org/ %define EXPERIMENTAL 0 Version: 7.4 -Release: 44 +Release: 45 License: GPL v2 or later ; MIT License (or similar) BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: System/X11/Servers/XF86_4 @@ -85,6 +85,7 @@ Patch43: xorg-server-xf4vnc-abi-version.diff Patch44: xorg-server-xf4vnc-cutpaste.diff Patch46: xorg-server-xf4vnc-busyloop.diff Patch47: xorg-server-xf4vnc-clientTimeout.diff +Patch48: xorg-server-xf4vnc-fix.diff %endif Patch41: loadmod-bug197195.diff Patch45: bug-197858_dpms.diff @@ -164,7 +165,7 @@ This package contains the X.Org Server SDK. %if %vnc %package -n xorg-x11-Xvnc -License: GPL v2 or later; X11/MIT +License: GPL v2 or later ; MIT License (or similar) Summary: VNC Server for the X Window System Group: System/X11/Servers/XF86_4 Requires: xorg-x11-fonts-core xorg-x11 @@ -211,6 +212,7 @@ popd %patch44 %patch46 -p1 %patch47 -p1 +%patch48 -p1 chmod 755 hw/vnc/symlink-vnc.sh %endif %patch41 -p1 @@ -273,7 +275,7 @@ popd autoreconf -fi # DRI2 disabled for Xserver 1.5 as libdrm 2.3.1 doesn't have the # drmBO functionality. -./configure CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" \ +./configure CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -O0 -g" \ %if %fglrx_driver_hack --with-release-major=7 \ --with-release-minor=2 \