Mercurial > emacs
changeset 74626:04ef1ad19c59
(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.
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
---|---|
date | Fri, 15 Dec 2006 08:05:10 +0000 |
parents | 1fb421aafa71 |
children | 20a6a4a69f48 |
files | src/mac.c |
diffstat | 1 files changed, 25 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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 ()