summaryrefslogtreecommitdiff
path: root/src/w32fns.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/w32fns.c')
-rw-r--r--src/w32fns.c21
1 files changed, 21 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