bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#25875: 26.0.50; Hang logging out of MS-Windows


From: Ken Brown
Subject: bug#25875: 26.0.50; Hang logging out of MS-Windows
Date: Sun, 26 Feb 2017 18:38:19 -0500
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1

On 2/26/2017 2:25 PM, Eli Zaretskii wrote:
Cc: rcopley@gmail.com, 25875@debbugs.gnu.org
From: Ken Brown <kbrown@cornell.edu>
Date: Sun, 26 Feb 2017 13:58:23 -0500

I think the problem in this particular scenario is not that the input
thread sleeps too long, it's that whenever it finishes sleeping and
returns, Emacs will be killed, so the WM_ENDSESSION message that was
posted to the main thread will never have a chance to be processed,
and thus orderly shutdown will never happen.

That is why I thought about using SendMessageTimeout in the main
thread: what we really want is to cause the main thread to wake up and
process the WM_ENDSESSION message.  Right?

Yes, that would obviously be better.

OK.  Can you propose a patch that Richard could try?

Here's a quick and dirty attempt. If I haven't made a mistake, it replaces every relevant call to SendMessage by a call to SendMessageTimeout with a 100ms timeout.

--- a/src/w32term.c
+++ b/src/w32term.c
@@ -537,6 +537,15 @@ x_update_begin (struct frame *f)
 }


+#undef SendMessage
+#define SendMessage DebugSendMessage
+
+static LRESULT WINAPI
+DebugSendMessage (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+  return SendMessageTimeoutA (hWnd, Msg, wParam, lParam, 0, 100, NULL);
+}
+
 /* Start update of window W.  */

 static void

Ken





reply via email to

[Prev in Thread] Current Thread [Next in Thread]