# HG changeset patch # User YAMAMOTO Mitsuharu # Date 1166169910 0 # Node ID 04ef1ad19c5901a8b9c60375188f2ab96a5cac96 # Parent 1fb421aafa715a3117dfa89a716b70a782f5e085 (wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New variable. (ENABLE_WAKEUP_FROM_RNE, DISABLE_WAKEUP_FROM_RNE): New macros. [!MAC_OSX] (select): Use them. [MAC_OSX] (select_and_poll_event, sys_select): Likewise. (mac_wakeup_from_rne) [TARGET_API_MAC_CARBON]: New function. diff -r 1fb421aafa71 -r 04ef1ad19c59 src/mac.c --- a/src/mac.c Fri Dec 15 08:04:47 2006 +0000 +++ b/src/mac.c Fri Dec 15 08:05:10 2006 +0000 @@ -79,6 +79,15 @@ /* The single script context used for all script executions. */ static OSAID as_script_context; +#if TARGET_API_MAC_CARBON +static int wakeup_from_rne_enabled_p = 0; +#define ENABLE_WAKEUP_FROM_RNE (wakeup_from_rne_enabled_p = 1) +#define DISABLE_WAKEUP_FROM_RNE (wakeup_from_rne_enabled_p = 0) +#else +#define ENABLE_WAKEUP_FROM_RNE 0 +#define DISABLE_WAKEUP_FROM_RNE 0 +#endif + #ifndef MAC_OSX static OSErr posix_pathname_to_fsspec P_ ((const char *, FSSpec *)); static OSErr fsspec_to_posix_pathname P_ ((const FSSpec *, char *, int)); @@ -2431,6 +2440,7 @@ BLOCK_INPUT block, in case that some input has already been read asynchronously. */ BLOCK_INPUT; + ENABLE_WAKEUP_FROM_RNE; if (!detect_input_pending ()) { #if TARGET_API_MAC_CARBON @@ -2461,6 +2471,7 @@ } #endif /* not TARGET_API_MAC_CARBON */ } + DISABLE_WAKEUP_FROM_RNE; UNBLOCK_INPUT; if (err == noErr) @@ -5023,6 +5034,7 @@ BLOCK_INPUT block, in case that some input has already been read asynchronously. */ BLOCK_INPUT; + ENABLE_WAKEUP_FROM_RNE; if (!detect_input_pending ()) { EMACS_TIME select_timeout; @@ -5045,6 +5057,7 @@ kEventLeaveInQueue, NULL); } } + DISABLE_WAKEUP_FROM_RNE; UNBLOCK_INPUT; if (r != 0) @@ -5124,6 +5137,7 @@ BLOCK_INPUT block, in case that some input has already been read asynchronously. */ BLOCK_INPUT; + ENABLE_WAKEUP_FROM_RNE; if (!detect_input_pending ()) { int minfd, fd; @@ -5184,6 +5198,7 @@ CFRunLoopRemoveSource (runloop, source, kCFRunLoopDefaultMode); } } + DISABLE_WAKEUP_FROM_RNE; UNBLOCK_INPUT; if (err == noErr || err == eventLoopQuitErr) @@ -5385,6 +5400,16 @@ } #endif /* MAC_OSX */ +#if TARGET_API_MAC_CARBON +void +mac_wakeup_from_rne () +{ + if (wakeup_from_rne_enabled_p) + /* Post a harmless event so as to wake up from + ReceiveNextEvent. */ + mac_post_mouse_moved_event (); +} +#endif void syms_of_mac ()