Commit 8030369c authored by Andrew Choi's avatar Andrew Choi
Browse files

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.
parent 1e7c162f
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.
......
......@@ -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 ()
......
......@@ -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
}
......
......@@ -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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment