diff options
| author | Eli Zaretskii | 2015-11-21 19:44:02 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2015-11-21 19:44:02 +0200 |
| commit | d696d62fea48096680d6d511a71c4df56d00a51f (patch) | |
| tree | ec9d8707142e396e0de00fffbc5dd9df28800d80 /src/w32term.c | |
| parent | e6b1818f87f559fdd854bdace2801637caffe6ae (diff) | |
| download | emacs-d696d62fea48096680d6d511a71c4df56d00a51f.tar.gz emacs-d696d62fea48096680d6d511a71c4df56d00a51f.zip | |
Simplify recording of main thread's ID on MS-Windows
* src/w32term.c (w32_initialize):
* src/w32console.c (initialize_w32_display):
* src/w32fns.c (globals_of_w32fns): Don't record the main thread
ID independently for each type of session (GUI, TTY, batch).
* src/w32term.c (w32_init_main_thread): New function, records the
main thread's thread ID.
* src/w32term.h: Add prototype for w32_init_main_thread.
* src/emacs.c (main) [WINDOWSNT]: Call w32_init_main_thread.
* src/emacs-module.c [WINDOWSNT]: Rename main_thread_id to
main_thread, for consistency with other threading libraries. All
users changed. Include w32term.h.
(check_main_thread) [WINDOWSNT]: Simplify the test: no need to
make sure the main thread is alive, as we hold a handle on it
opened by w32_init_main_thread.
(module_init) [WINDOWSNT]: Reuse the thread ID recorded by
w32_init_main_thread, instead of calling the requisite APIs once
more.
Diffstat (limited to 'src/w32term.c')
| -rw-r--r-- | src/w32term.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/w32term.c b/src/w32term.c index f764e250aa8..f48e72553a5 100644 --- a/src/w32term.c +++ b/src/w32term.c | |||
| @@ -6925,6 +6925,15 @@ x_delete_display (struct w32_display_info *dpyinfo) | |||
| 6925 | 6925 | ||
| 6926 | /* Set up use of W32. */ | 6926 | /* Set up use of W32. */ |
| 6927 | 6927 | ||
| 6928 | void | ||
| 6929 | w32_init_main_thread (void) | ||
| 6930 | { | ||
| 6931 | dwMainThreadId = GetCurrentThreadId (); | ||
| 6932 | DuplicateHandle (GetCurrentProcess (), GetCurrentThread (), | ||
| 6933 | GetCurrentProcess (), &hMainThread, 0, TRUE, | ||
| 6934 | DUPLICATE_SAME_ACCESS); | ||
| 6935 | } | ||
| 6936 | |||
| 6928 | DWORD WINAPI w32_msg_worker (void * arg); | 6937 | DWORD WINAPI w32_msg_worker (void * arg); |
| 6929 | 6938 | ||
| 6930 | static void | 6939 | static void |
| @@ -6985,10 +6994,6 @@ w32_initialize (void) | |||
| 6985 | terminates */ | 6994 | terminates */ |
| 6986 | init_crit (); | 6995 | init_crit (); |
| 6987 | 6996 | ||
| 6988 | dwMainThreadId = GetCurrentThreadId (); | ||
| 6989 | DuplicateHandle (GetCurrentProcess (), GetCurrentThread (), | ||
| 6990 | GetCurrentProcess (), &hMainThread, 0, TRUE, DUPLICATE_SAME_ACCESS); | ||
| 6991 | |||
| 6992 | /* Wait for thread to start */ | 6997 | /* Wait for thread to start */ |
| 6993 | { | 6998 | { |
| 6994 | MSG msg; | 6999 | MSG msg; |