1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-24 07:20:37 +00:00

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.
This commit is contained in:
Andrew Choi 2002-08-11 00:26:24 +00:00
parent 1e7c162fa4
commit 8030369ccb
4 changed files with 56 additions and 0 deletions

View File

@ -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.

View File

@ -2745,6 +2745,30 @@ and t is the same as `SECONDARY'. */)
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 ()

View File

@ -366,6 +366,7 @@ extern XrmDatabase x_load_resources P_ ((Display *, char *, char *, char *));
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 @@ mac_term_init (display_name, xrm_option, resource_name)
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 @@ mac_initialize ()
#endif
DisableMenuCommand (NULL, kHICommandQuit);
if (!inhibit_window_system)
MakeMeTheFrontProcess ();
#endif
}

View File

@ -308,3 +308,10 @@ struct kboard;
#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