diff options
Diffstat (limited to 'xorg-server/hw/xquartz')
-rw-r--r-- | xorg-server/hw/xquartz/pbproxy/x-selection.m | 2 | ||||
-rw-r--r-- | xorg-server/hw/xquartz/pseudoramiX.c | 73 | ||||
-rw-r--r-- | xorg-server/hw/xquartz/xpr/xprEvent.c | 34 |
3 files changed, 65 insertions, 44 deletions
diff --git a/xorg-server/hw/xquartz/pbproxy/x-selection.m b/xorg-server/hw/xquartz/pbproxy/x-selection.m index 13d5e13ad..57ddb743a 100644 --- a/xorg-server/hw/xquartz/pbproxy/x-selection.m +++ b/xorg-server/hw/xquartz/pbproxy/x-selection.m @@ -1499,7 +1499,7 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, /* Allocation */ -- init +- (id) init { unsigned long pixel; diff --git a/xorg-server/hw/xquartz/pseudoramiX.c b/xorg-server/hw/xquartz/pseudoramiX.c index c650dd723..23dbc7328 100644 --- a/xorg-server/hw/xquartz/pseudoramiX.c +++ b/xorg-server/hw/xquartz/pseudoramiX.c @@ -37,7 +37,6 @@ #include <dix-config.h> #endif -#include "darwin.h" #include "pseudoramiX.h" #include "extnsionst.h" #include "extinit.h" @@ -46,6 +45,9 @@ #include <X11/extensions/panoramiXproto.h> #include "globals.h" +#define TRACE PseudoramiXTrace("TRACE " __FILE__ ":%s",__FUNCTION__) +#define DEBUG_LOG PseudoramiXDebug + Bool noPseudoramiXExtension = FALSE; extern int @@ -96,6 +98,26 @@ static int pseudoramiXScreensAllocated = 0; static int pseudoramiXNumScreens = 0; static unsigned long pseudoramiXGeneration = 0; +static void +PseudoramiXTrace(const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + LogVMessageVerb(X_NONE, 10, format, ap); + va_end(ap); +} + +static void +PseudoramiXDebug(const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + LogVMessageVerb(X_NONE, 3, format, ap); + va_end(ap); +} + // Add a PseudoramiX screen. // The rest of the X server will know nothing about this screen. // Can be called before or after extension init. @@ -133,7 +155,7 @@ PseudoramiXExtensionInit(void) if (noPseudoramiXExtension) return; - TRACE(); + TRACE; /* Even with only one screen we need to enable PseudoramiX to allow dynamic screen configuration changes. */ @@ -170,7 +192,7 @@ PseudoramiXExtensionInit(void) void PseudoramiXResetScreens(void) { - TRACE(); + TRACE; pseudoramiXNumScreens = 0; } @@ -178,7 +200,7 @@ PseudoramiXResetScreens(void) static void PseudoramiXResetProc(ExtensionEntry *extEntry) { - TRACE(); + TRACE; PseudoramiXResetScreens(); } @@ -187,7 +209,7 @@ PseudoramiXResetProc(ExtensionEntry *extEntry) static int ProcPseudoramiXQueryVersion(ClientPtr client) { - TRACE(); + TRACE; return ProcPanoramiXQueryVersion(client); } @@ -201,7 +223,7 @@ ProcPseudoramiXGetState(ClientPtr client) xPanoramiXGetStateReply rep; register int rc; - TRACE(); + TRACE; REQUEST_SIZE_MATCH(xPanoramiXGetStateReq); rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); @@ -212,10 +234,11 @@ ProcPseudoramiXGetState(ClientPtr client) rep.length = 0; rep.sequenceNumber = client->sequence; rep.state = !noPseudoramiXExtension; + rep.window = stuff->window; if (client->swapped) { swaps(&rep.sequenceNumber); swapl(&rep.length); - swaps(&rep.state); + swapl(&rep.window); } WriteToClient(client, sizeof(xPanoramiXGetStateReply),&rep); return Success; @@ -230,7 +253,7 @@ ProcPseudoramiXGetScreenCount(ClientPtr client) xPanoramiXGetScreenCountReply rep; register int rc; - TRACE(); + TRACE; REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq); rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); @@ -241,10 +264,11 @@ ProcPseudoramiXGetScreenCount(ClientPtr client) rep.length = 0; rep.sequenceNumber = client->sequence; rep.ScreenCount = pseudoramiXNumScreens; + rep.window = stuff->window; if (client->swapped) { swaps(&rep.sequenceNumber); swapl(&rep.length); - swaps(&rep.ScreenCount); + swapl(&rep.window); } WriteToClient(client, sizeof(xPanoramiXGetScreenCountReply),&rep); return Success; @@ -259,7 +283,10 @@ ProcPseudoramiXGetScreenSize(ClientPtr client) xPanoramiXGetScreenSizeReply rep; register int rc; - TRACE(); + TRACE; + + if (stuff->screen >= pseudoramiXNumScreens) + return BadMatch; REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq); rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); @@ -274,11 +301,15 @@ ProcPseudoramiXGetScreenSize(ClientPtr client) // was screenInfo.screens[stuff->screen]->width; rep.height = pseudoramiXScreens[stuff->screen].h; // was screenInfo.screens[stuff->screen]->height; + rep.window = stuff->window; + rep.screen = stuff->screen; if (client->swapped) { swaps(&rep.sequenceNumber); swapl(&rep.length); - swaps(&rep.width); - swaps(&rep.height); + swapl(&rep.width); + swapl(&rep.height); + swapl(&rep.window); + swapl(&rep.screen); } WriteToClient(client, sizeof(xPanoramiXGetScreenSizeReply),&rep); return Success; @@ -291,7 +322,7 @@ ProcPseudoramiXIsActive(ClientPtr client) /* REQUEST(xXineramaIsActiveReq); */ xXineramaIsActiveReply rep; - TRACE(); + TRACE; REQUEST_SIZE_MATCH(xXineramaIsActiveReq); @@ -360,7 +391,7 @@ static int ProcPseudoramiXDispatch(ClientPtr client) { REQUEST(xReq); - TRACE(); + TRACE; switch (stuff->data) { case X_PanoramiXQueryVersion: return ProcPseudoramiXQueryVersion(client); @@ -388,7 +419,7 @@ SProcPseudoramiXQueryVersion(ClientPtr client) { REQUEST(xPanoramiXQueryVersionReq); - TRACE(); + TRACE; swaps(&stuff->length); REQUEST_SIZE_MATCH(xPanoramiXQueryVersionReq); @@ -400,7 +431,7 @@ SProcPseudoramiXGetState(ClientPtr client) { REQUEST(xPanoramiXGetStateReq); - TRACE(); + TRACE; swaps(&stuff->length); REQUEST_SIZE_MATCH(xPanoramiXGetStateReq); @@ -412,7 +443,7 @@ SProcPseudoramiXGetScreenCount(ClientPtr client) { REQUEST(xPanoramiXGetScreenCountReq); - TRACE(); + TRACE; swaps(&stuff->length); REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq); @@ -424,7 +455,7 @@ SProcPseudoramiXGetScreenSize(ClientPtr client) { REQUEST(xPanoramiXGetScreenSizeReq); - TRACE(); + TRACE; swaps(&stuff->length); REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq); @@ -436,7 +467,7 @@ SProcPseudoramiXIsActive(ClientPtr client) { REQUEST(xXineramaIsActiveReq); - TRACE(); + TRACE; swaps(&stuff->length); REQUEST_SIZE_MATCH(xXineramaIsActiveReq); @@ -448,7 +479,7 @@ SProcPseudoramiXQueryScreens(ClientPtr client) { REQUEST(xXineramaQueryScreensReq); - TRACE(); + TRACE; swaps(&stuff->length); REQUEST_SIZE_MATCH(xXineramaQueryScreensReq); @@ -460,7 +491,7 @@ SProcPseudoramiXDispatch(ClientPtr client) { REQUEST(xReq); - TRACE(); + TRACE; switch (stuff->data) { case X_PanoramiXQueryVersion: diff --git a/xorg-server/hw/xquartz/xpr/xprEvent.c b/xorg-server/hw/xquartz/xpr/xprEvent.c index 73bcc930d..398177ca8 100644 --- a/xorg-server/hw/xquartz/xpr/xprEvent.c +++ b/xorg-server/hw/xquartz/xpr/xprEvent.c @@ -59,13 +59,6 @@ #include "rootlessWindow.h" #include "xprEvent.h" -/* This is important enough to declare here if building against an old - * libXplugin, so we pick it up whenever libXplugin starts to support it. - */ -#if !defined(XPLUGIN_VERSION) || XPLUGIN_VERSION < 6 -extern xp_error xp_window_bring_all_to_front(void) __attribute__((weak_import)); -#endif - Bool QuartzModeEventHandler(int screenNum, XQuartzEvent *e, DeviceIntPtr dev) { @@ -86,21 +79,18 @@ QuartzModeEventHandler(int screenNum, XQuartzEvent *e, DeviceIntPtr dev) /* There's no need to do xp_window_bring_all_to_front on Leopard, * and we don't care about the result, so just do it async. */ -#if defined(HAVE_LIBDISPATCH) -#if (defined(XPLUGIN_VERSION_MIN_REQUIRED) && XPLUGIN_VERSION_MIN_REQUIRED >= 6) || \ - (!defined(XPLUGIN_VERSION_MIN_REQUIRED) && defined(XPLUGIN_VERSION) && XPLUGIN_VERSION >= 6) - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - xp_window_bring_all_to_front(); - }); -#else - if (&xp_window_bring_all_to_front) { - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - xp_window_bring_all_to_front(); - }); - } else { - RootlessOrderAllWindows(e->data[0]); - } -#endif +#if defined(HAVE_LIBDISPATCH) && defined(XPLUGIN_VERSION) && XPLUGIN_VERSION >= 6 +# if defined(XPLUGIN_VERSION_MIN_REQUIRED) && XPLUGIN_VERSION_MIN_REQUIRED < 6 + if (&xp_window_bring_all_to_front) { +# endif + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + xp_window_bring_all_to_front(); + }); +# if defined(XPLUGIN_VERSION_MIN_REQUIRED) && XPLUGIN_VERSION_MIN_REQUIRED < 6 + } else { + RootlessOrderAllWindows(e->data[0]); + } +# endif #else RootlessOrderAllWindows(e->data[0]); #endif |