Mercurial > emacs
changeset 54169:8b5313e6b324
(w32_console_read_socket): Remove bufp_r and
numcharsp args. Add hold_quit arg.
Rework to use just one, local, inev input_event. Store inev
directly in fifo using kbd_buffer_store_event_hold.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Fri, 27 Feb 2004 23:48:59 +0000 |
parents | 0827d50296b5 |
children | 9f3ff0d515be |
files | src/w32inevt.c |
diffstat | 1 files changed, 14 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/w32inevt.c Fri Feb 27 23:48:49 2004 +0000 +++ b/src/w32inevt.c Fri Feb 27 23:48:59 2004 +0000 @@ -642,8 +642,7 @@ } int -w32_console_read_socket (int sd, struct input_event *bufp, int numchars, - int expected) +w32_console_read_socket (int sd, int expected, struct input_event *hold_quit) { BOOL no_events = TRUE; int nev, ret = 0, add; @@ -670,27 +669,31 @@ return nev; } - while (nev > 0 && numchars > 0) + while (nev > 0) { + struct input_event inev; + + EVENT_INIT (inev); + inev.kind = NO_EVENT; + inev.arg = Qnil; + switch (queue_ptr->EventType) { case KEY_EVENT: - add = key_event (&queue_ptr->Event.KeyEvent, bufp, &isdead); + add = key_event (&queue_ptr->Event.KeyEvent, &inev, &isdead); if (add == -1) /* 95.7.25 by himi */ { queue_ptr--; add = 1; } - bufp += add; - ret += add; - numchars -= add; + if (add) + kbd_buffer_store_event_hold (&inev, hold_quit); break; case MOUSE_EVENT: - add = do_mouse_event (&queue_ptr->Event.MouseEvent, bufp); - bufp += add; - ret += add; - numchars -= add; + add = do_mouse_event (&queue_ptr->Event.MouseEvent, &inev); + if (add) + kbd_buffer_store_event_hold (&inev, hold_quit); break; case WINDOW_BUFFER_SIZE_EVENT: