From: Eli Zaretskii Date: Sun, 7 Oct 2012 14:50:29 +0000 (+0200) Subject: Add a comment with overview of how Emacs input works on MS-Windows. X-Git-Tag: emacs-24.2.90~237^2~83 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d263a63399d2b9d20ff2fc963b7d01817c3d3368;p=emacs.git Add a comment with overview of how Emacs input works on MS-Windows. --- diff --git a/src/w32fns.c b/src/w32fns.c index 6d5d6822354..0dbeb232db9 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -2246,6 +2246,27 @@ unregister_hot_keys (HWND hwnd) } } +/* Here's an overview of how Emacs input works on MS-Windows. + + System messages are read and processed by w32_msg_pump below. This + function runs in a separate thread. It handles a small number of + custom WM_EMACS_* messages (posted by the main thread, look for + PostMessage calls), and dispatches the rest to w32_wnd_proc, which + is the main window procedure for the entire Emacs application. + + w32_wnd_proc also runs in the same separate input thread. It + handles some messages, mostly those that need GDI calls, by itself. + For the others, it calls my_post_msg, which inserts the messages + into the input queue serviced by w32_read_socket. + + w32_read_socket runs in the main (a.k.a. "Lisp") thread, and is + called synchronously from keyboard.c when it is known or suspected + that some input is available. w32_read_socket either handles + messages immediately, or converts them messages into Emacs input + events and stuffs them into kbd_buffer, where kbd_buffer_get_event + can get at them and process them when read_char and its callers + require input. */ + /* Main message dispatch loop. */ static void diff --git a/src/w32term.c b/src/w32term.c index 1cc8bd2adef..517813672c4 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -4138,6 +4138,9 @@ static char dbcs_lead = 0; This routine is called by the SIGIO handler. We return as soon as there are no more events to be read. + For an overview of how Emacs input works on MS-Windows, see the + commentary before w32_msg_pump in w32fns.c. + We return the number of characters stored into the buffer, thus pretending to be `read'.