(wakeup_from_rne_enabled_p) [MAC_OSX]: Remove variable.

(ENABLE_WAKEUP_FROM_RNE, DISABLE_WAKEUP_FROM_RNE) [MAC_OSX]:
Remove macros.
[MAC_OSX] (socket_callback): Do nothing.
[MAC_OSX] (select_and_poll_event): Use CFRunLoopRunInMode instead of
ReceiveNextEvent.
[MAC_OSX] (sys_select): Likewise.  Don't set context as argument to
socket_callback.
(mac_wakeup_from_rne) [MAC_OSX]: Do nothing.
This commit is contained in:
YAMAMOTO Mitsuharu 2007-08-23 08:45:46 +00:00
parent c21e615131
commit 93b234062e
2 changed files with 62 additions and 42 deletions

View file

@ -1,3 +1,23 @@
2007-08-23 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* Makefile.in (RSVG_LIBS, RSVG_CFLAGS): New variables.
(ALL_CFLAGS): Use ${RSVG_CFLAGS} instead of @RSVG_CFLAGS@.
(LIBX): Remove @RSVG_LIBS@.
(LIBES): Add $(RSVG_LIBS).
* image.c (svg_load_image): Blend with specified background if exists.
Use IMAGE_BACKGROUND. Add Mac OS Support.
* mac.c (wakeup_from_rne_enabled_p) [MAC_OSX]: Remove variable.
(ENABLE_WAKEUP_FROM_RNE, DISABLE_WAKEUP_FROM_RNE) [MAC_OSX]:
Remove macros.
[MAC_OSX] (socket_callback): Do nothing.
[MAC_OSX] (select_and_poll_event): Use CFRunLoopRunInMode instead of
ReceiveNextEvent.
[MAC_OSX] (sys_select): Likewise. Don't set context as argument to
socket_callback.
(mac_wakeup_from_rne) [MAC_OSX]: Do nothing.
2007-08-22 Glenn Morris <rgm@gnu.org>
* image.c (x_find_image_file): Search in etc/images/ rather than

View file

@ -79,6 +79,7 @@ static ComponentInstance as_scripting_component;
/* The single script context used for all script executions. */
static OSAID as_script_context;
#ifndef MAC_OS_X
#if TARGET_API_MAC_CARBON
static int wakeup_from_rne_enabled_p = 0;
#define ENABLE_WAKEUP_FROM_RNE (wakeup_from_rne_enabled_p = 1)
@ -87,6 +88,7 @@ static int wakeup_from_rne_enabled_p = 0;
#define ENABLE_WAKEUP_FROM_RNE 0
#define DISABLE_WAKEUP_FROM_RNE 0
#endif
#endif
#ifndef MAC_OSX
static OSErr posix_pathname_to_fsspec P_ ((const char *, FSSpec *));
@ -5010,12 +5012,6 @@ socket_callback (s, type, address, data, info)
const void *data;
void *info;
{
int fd = CFSocketGetNative (s);
SELECT_TYPE *ofds = (SELECT_TYPE *)info;
if ((type == kCFSocketReadCallBack && FD_ISSET (fd, &ofds[0]))
|| (type == kCFSocketConnectCallBack && FD_ISSET (fd, &ofds[1])))
QuitEventLoop (GetCurrentEventLoop ());
}
#endif /* SELECT_USE_CFSOCKET */
@ -5025,42 +5021,45 @@ select_and_poll_event (nfds, rfds, wfds, efds, timeout)
SELECT_TYPE *rfds, *wfds, *efds;
EMACS_TIME *timeout;
{
OSStatus err = noErr;
int timedout_p = 0;
int r = 0;
EMACS_TIME select_timeout;
EventTimeout timeoutval =
(timeout
? (EMACS_SECS (*timeout) * kEventDurationSecond
+ EMACS_USECS (*timeout) * kEventDurationMicrosecond)
: kEventDurationForever);
/* Try detect_input_pending before ReceiveNextEvent in the same
/* Try detect_input_pending before CFRunLoopRunInMode in the same
BLOCK_INPUT block, in case that some input has already been read
asynchronously. */
BLOCK_INPUT;
ENABLE_WAKEUP_FROM_RNE;
if (!detect_input_pending ())
do
{
EMACS_TIME select_timeout;
EventTimeout timeoutval =
(timeout
? (EMACS_SECS (*timeout) * kEventDurationSecond
+ EMACS_USECS (*timeout) * kEventDurationMicrosecond)
: kEventDurationForever);
if (detect_input_pending ())
break;
EMACS_SET_SECS_USECS (select_timeout, 0, 0);
r = select (nfds, rfds, wfds, efds, &select_timeout);
if (timeoutval == 0.0)
err = eventLoopTimedOutErr;
timedout_p = 1;
else if (r == 0)
{
#if USE_CG_DRAWING
mac_prepare_for_quickdraw (NULL);
#endif
err = ReceiveNextEvent (0, NULL, timeoutval,
kEventLeaveInQueue, NULL);
if (CFRunLoopRunInMode (kCFRunLoopDefaultMode,
timeoutval >= 0 ? timeoutval : 10000.0, true)
== kCFRunLoopRunTimedOut)
timedout_p = 1;
}
}
DISABLE_WAKEUP_FROM_RNE;
while (timeoutval < 0 && timedout_p);
UNBLOCK_INPUT;
if (r != 0)
return r;
else if (err == noErr)
else if (!timedout_p)
{
/* Pretend that `select' is interrupted by a signal. */
detect_input_pending ();
@ -5077,25 +5076,25 @@ sys_select (nfds, rfds, wfds, efds, timeout)
SELECT_TYPE *rfds, *wfds, *efds;
EMACS_TIME *timeout;
{
OSStatus err = noErr;
int timedout_p = 0;
int r;
EMACS_TIME select_timeout;
static SELECT_TYPE ofds[3];
SELECT_TYPE orfds, owfds, oefds;
if (inhibit_window_system || noninteractive
|| nfds < 1 || rfds == NULL || !FD_ISSET (0, rfds))
return select (nfds, rfds, wfds, efds, timeout);
FD_CLR (0, rfds);
ofds[0] = *rfds;
orfds = *rfds;
if (wfds)
ofds[1] = *wfds;
owfds = *wfds;
else
FD_ZERO (&ofds[1]);
FD_ZERO (&owfds);
if (efds)
ofds[2] = *efds;
oefds = *efds;
else
{
EventTimeout timeoutval =
@ -5123,25 +5122,23 @@ sys_select (nfds, rfds, wfds, efds, timeout)
if (r != 0 || timeoutval == 0.0)
return r;
*rfds = ofds[0];
*rfds = orfds;
if (wfds)
*wfds = ofds[1];
*wfds = owfds;
#if SELECT_USE_CFSOCKET
if (timeoutval > 0 && timeoutval <= SELECT_TIMEOUT_THRESHOLD_RUNLOOP)
goto poll_periodically;
/* Try detect_input_pending before ReceiveNextEvent in the same
BLOCK_INPUT block, in case that some input has already been
read asynchronously. */
/* Try detect_input_pending before CFRunLoopRunInMode in the
same 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;
CFRunLoopRef runloop =
(CFRunLoopRef) GetCFRunLoopFromEventLoop (GetCurrentEventLoop ());
static const CFSocketContext context = {0, ofds, NULL, NULL, NULL};
static CFMutableDictionaryRef sources;
if (sources == NULL)
@ -5166,7 +5163,7 @@ sys_select (nfds, rfds, wfds, efds, timeout)
CFSocketCreateWithNative (NULL, fd,
(kCFSocketReadCallBack
| kCFSocketConnectCallBack),
socket_callback, &context);
socket_callback, NULL);
if (socket == NULL)
continue;
@ -5183,8 +5180,10 @@ sys_select (nfds, rfds, wfds, efds, timeout)
#if USE_CG_DRAWING
mac_prepare_for_quickdraw (NULL);
#endif
err = ReceiveNextEvent (0, NULL, timeoutval,
kEventLeaveInQueue, NULL);
if (CFRunLoopRunInMode (kCFRunLoopDefaultMode,
timeoutval >= 0 ? timeoutval : 10000.0, true)
== kCFRunLoopRunTimedOut)
timedout_p = 1;
for (fd = minfd; fd < nfds; fd++)
if (FD_ISSET (fd, rfds) || (wfds && FD_ISSET (fd, wfds)))
@ -5196,10 +5195,9 @@ sys_select (nfds, rfds, wfds, efds, timeout)
CFRunLoopRemoveSource (runloop, source, kCFRunLoopDefaultMode);
}
}
DISABLE_WAKEUP_FROM_RNE;
UNBLOCK_INPUT;
if (err == noErr || err == eventLoopQuitErr)
if (!timedout_p)
{
EMACS_SET_SECS_USECS (select_timeout, 0, 0);
return select_and_poll_event (nfds, rfds, wfds, efds,
@ -5235,11 +5233,11 @@ sys_select (nfds, rfds, wfds, efds, timeout)
if (r != 0)
return r;
*rfds = ofds[0];
*rfds = orfds;
if (wfds)
*wfds = ofds[1];
*wfds = owfds;
if (efds)
*efds = ofds[2];
*efds = oefds;
if (timeout)
{
@ -5402,10 +5400,12 @@ init_mac_osx_environment ()
void
mac_wakeup_from_rne ()
{
#ifndef MAC_OSX
if (wakeup_from_rne_enabled_p)
/* Post a harmless event so as to wake up from
ReceiveNextEvent. */
mac_post_mouse_moved_event ();
#endif
}
#endif