summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2012-10-07 16:50:29 +0200
committerEli Zaretskii <eliz@gnu.org>2012-10-07 16:50:29 +0200
commitd263a63399d2b9d20ff2fc963b7d01817c3d3368 (patch)
tree82c4fd8abd789c7f9020e506f2bae37cd56ca415
parent557337e9a22da64445d64bb9577d178e4d7024d7 (diff)
downloademacs-d263a63399d2b9d20ff2fc963b7d01817c3d3368.tar.gz
Add a comment with overview of how Emacs input works on MS-Windows.
-rw-r--r--src/w32fns.c21
-rw-r--r--src/w32term.c3
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'.