Mercurial > emacs
changeset 46856:eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
* mac.c (sys_select) [MAC_OSX]: New function.
* macterm.c (MakeMeTheFrontProcess): New function.
(mac_initialize): Call MakeMeTheFrontProcess.
* s/darwin.h: Define select to sys_select.
author | Andrew Choi <akochoi@shaw.ca> |
---|---|
date | Sun, 11 Aug 2002 00:26:24 +0000 |
parents | f3a9fdb839d2 |
children | 31feee29e69a |
files | src/ChangeLog src/mac.c src/macterm.c src/s/darwin.h |
diffstat | 4 files changed, 56 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Sat Aug 10 03:48:12 2002 +0000 +++ b/src/ChangeLog Sun Aug 11 00:26:24 2002 +0000 @@ -1,3 +1,12 @@ +2002-08-10 Andrew Choi <akochoi@shaw.ca> + + * mac.c (sys_select) [MAC_OSX]: New function. + + * macterm.c (MakeMeTheFrontProcess): New function. + (mac_initialize): Call MakeMeTheFrontProcess. + + * s/darwin.h: Define select to sys_select. + 2002-08-09 Richard M. Stallman <rms@gnu.org> * keyboard.c (make_lispy_event): Test WINDOWSNT, not WINDOWS_NT.
--- a/src/mac.c Sat Aug 10 03:48:12 2002 +0000 +++ b/src/mac.c Sun Aug 11 00:26:24 2002 +0000 @@ -2745,6 +2745,30 @@ return Qnil; } +#ifdef MAC_OSX +#undef select + +extern int inhibit_window_system; + +/* When Emacs is started from the Finder, SELECT always immediately + returns as if input is present when file descriptor 0 is polled for + input. Strangely, when Emacs is run as a GUI application from the + command line, it blocks in the same situation. This `wrapper' of + the system call SELECT corrects this discrepancy. */ +int +sys_select (n, rfds, wfds, efds, timeout) + int n; + SELECT_TYPE *rfds; + SELECT_TYPE *wfds; + SELECT_TYPE *efds; + struct timeval *timeout; +{ + if (!inhibit_window_system && rfds && FD_ISSET (0, rfds)) + return 1; + else + return select (n, rfds, wfds, efds, timeout); +} +#endif /* MAC_OSX */ void syms_of_mac ()
--- a/src/macterm.c Sat Aug 10 03:48:12 2002 +0000 +++ b/src/macterm.c Sun Aug 11 00:26:24 2002 +0000 @@ -366,6 +366,7 @@ extern Lisp_Object x_icon_type P_ ((struct frame *)); +extern int inhibit_window_system; #if __MRC__ QDGlobals qd; /* QuickDraw global information structure. */ @@ -13405,6 +13406,18 @@ return dpyinfo; } +#ifdef MAC_OSX +void MakeMeTheFrontProcess () +{ + ProcessSerialNumber psn; + OSErr err; + + err = GetCurrentProcess (&psn); + if (err == noErr) + (void) SetFrontProcess (&psn); +} +#endif /* MAC_OSX */ + /* Set up use of X before we make the first connection. */ static struct redisplay_interface x_redisplay_interface = @@ -13514,6 +13527,9 @@ #endif DisableMenuCommand (NULL, kHICommandQuit); + + if (!inhibit_window_system) + MakeMeTheFrontProcess (); #endif }
--- a/src/s/darwin.h Sat Aug 10 03:48:12 2002 +0000 +++ b/src/s/darwin.h Sun Aug 11 00:26:24 2002 +0000 @@ -308,3 +308,10 @@ #define realloc unexec_realloc #define free unexec_free #endif + +/* Reroute calls to SELECT to the version defined in mac.c to fix the + problem of Emacs requiring an extra return to be typed to start + working when started from the command line. */ +#if defined (emacs) || defined (temacs) +#define select sys_select +#endif