diff options
author | marha <marha@users.sourceforge.net> | 2012-07-31 10:00:43 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-07-31 10:00:43 +0200 |
commit | bd27b3d008b0abf9ae2edcb127302728808533e4 (patch) | |
tree | a73a74f04a31a0f44465ed82bcf58b180ca53dbd /xorg-server/hw/xquartz/xpr | |
parent | 2ff5448bcca8cba4b62026d5493cb08aaf2838d8 (diff) | |
download | vcxsrv-bd27b3d008b0abf9ae2edcb127302728808533e4.tar.gz vcxsrv-bd27b3d008b0abf9ae2edcb127302728808533e4.tar.bz2 vcxsrv-bd27b3d008b0abf9ae2edcb127302728808533e4.zip |
fontconfig libXext mesa xserver pixman git update 31 Jul 2012
Diffstat (limited to 'xorg-server/hw/xquartz/xpr')
-rw-r--r-- | xorg-server/hw/xquartz/xpr/xprEvent.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/xorg-server/hw/xquartz/xpr/xprEvent.c b/xorg-server/hw/xquartz/xpr/xprEvent.c index 106a91931..73bcc930d 100644 --- a/xorg-server/hw/xquartz/xpr/xprEvent.c +++ b/xorg-server/hw/xquartz/xpr/xprEvent.c @@ -52,9 +52,20 @@ #include <sys/uio.h> #include <unistd.h> +#ifdef HAVE_LIBDISPATCH +#include <dispatch/dispatch.h> +#endif + #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) { @@ -72,7 +83,28 @@ QuartzModeEventHandler(int screenNum, XQuartzEvent *e, DeviceIntPtr dev) case kXquartzBringAllToFront: DEBUG_LOG("kXquartzBringAllToFront\n"); + /* 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 +#else RootlessOrderAllWindows(e->data[0]); +#endif + return TRUE; default: |