diff options
author | Eli Zaretskii <eliz@gnu.org> | 2012-10-07 16:50:29 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2012-10-07 16:50:29 +0200 |
commit | d263a63399d2b9d20ff2fc963b7d01817c3d3368 (patch) | |
tree | 82c4fd8abd789c7f9020e506f2bae37cd56ca415 | |
parent | 557337e9a22da64445d64bb9577d178e4d7024d7 (diff) | |
download | emacs-d263a63399d2b9d20ff2fc963b7d01817c3d3368.tar.gz |
Add a comment with overview of how Emacs input works on MS-Windows.
-rw-r--r-- | src/w32fns.c | 21 | ||||
-rw-r--r-- | src/w32term.c | 3 |
2 files changed, 24 insertions, 0 deletions
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'. |