Mercurial > emacs
changeset 48818:5030a4c296d2
* macterm.c (mac_check_for_quit_char): Correctly set the
modifiers of the event to 0.
* mac.c (sys_select): Duplicate rfds before calling select to
ensure that rfds survive the while loop.
author | Steven Tamm <steventamm@mac.com> |
---|---|
date | Thu, 12 Dec 2002 17:10:34 +0000 |
parents | 8bbce2893414 |
children | c7fb53597300 |
files | src/ChangeLog src/mac.c src/macterm.c |
diffstat | 3 files changed, 23 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Thu Dec 12 10:43:03 2002 +0000 +++ b/src/ChangeLog Thu Dec 12 17:10:34 2002 +0000 @@ -1,3 +1,10 @@ +2002-12-12 Steven Tamm <steventamm@mac.com> + + * macterm.c (mac_check_for_quit_char): Correctly set the + modifiers of the event to 0. + * mac.c (sys_select): Duplicate rfds before calling select to + ensure that rfds survive the while loop. + 2002-12-11 Kim F. Storm <storm@cua.dk> * xdisp.c (try_window_id): Don't call set_cursor_from_row if
--- a/src/mac.c Thu Dec 12 10:43:03 2002 +0000 +++ b/src/mac.c Thu Dec 12 17:10:34 2002 +0000 @@ -2776,7 +2776,7 @@ else { EMACS_TIME end_time, now; - + EMACS_GET_TIME (end_time); if (timeout) EMACS_ADD_TIME (end_time, end_time, *timeout); @@ -2785,6 +2785,13 @@ { int r; EMACS_TIME one_second; + SELECT_TYPE orfds; + + FD_ZERO (&orfds); + if (rfds) + { + orfds = *rfds; + } EMACS_SET_SECS (one_second, 1); EMACS_SET_USECS (one_second, 0); @@ -2792,9 +2799,12 @@ if (timeout && EMACS_TIME_LT(*timeout, one_second)) one_second = *timeout; - if ((r = select (n, rfds, wfds, efds, &one_second)) > 0) - return r; - + if ((r = select (n, &orfds, wfds, efds, &one_second)) > 0) + { + *rfds = orfds; + return r; + } + mac_check_for_quit_char(); EMACS_GET_TIME (now);
--- a/src/macterm.c Thu Dec 12 10:43:03 2002 +0000 +++ b/src/macterm.c Thu Dec 12 17:10:34 2002 +0000 @@ -13561,6 +13561,8 @@ /* Use an input_event to emulate what the interrupt handler does. */ e.kind = ASCII_KEYSTROKE_EVENT; e.code = quit_char; + e.arg = NULL; + e.modifiers = NULL; e.timestamp = EventTimeToTicks(GetEventTime(event))*(1000/60); XSETFRAME(e.frame_or_window, mwp->mFP); /* Remove event from queue to prevent looping. */