Commit 0926dd96 authored by Vincent Povirk's avatar Vincent Povirk Committed by Alexandre Julliard

wineboot: Terminate processes immediately after WM_ENDSESSION.

Once a process returns from WM_ENDSESSION, we can assume it has finished doing any cleanup it needs but will most likely not shut down on its own.
parent decf64b8
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(wineboot); WINE_DEFAULT_DEBUG_CHANNEL(wineboot);
#define MESSAGE_TIMEOUT 5000 #define MESSAGE_TIMEOUT 5000
#define PROCQUIT_TIMEOUT 20000
struct window_info struct window_info
{ {
...@@ -278,12 +277,13 @@ static DWORD_PTR send_end_session_messages( struct window_info *win, UINT count, ...@@ -278,12 +277,13 @@ static DWORD_PTR send_end_session_messages( struct window_info *win, UINT count,
return 1; return 1;
} }
/* wait for app to quit on its own for a while */ /* Check whether the app quit on its own */
ret = WaitForSingleObject( process_handle, PROCQUIT_TIMEOUT ); ret = WaitForSingleObject( process_handle, 0 );
CloseHandle( process_handle ); CloseHandle( process_handle );
if (ret == WAIT_TIMEOUT) if (ret == WAIT_TIMEOUT)
{ {
/* it didn't quit by itself in time, so terminate it with extreme prejudice */ /* If not, it returned from all WM_ENDSESSION and is finished cleaning
* up, so we can safely kill the process. */
HANDLE handle = OpenProcess( PROCESS_TERMINATE, FALSE, win[0].pid ); HANDLE handle = OpenProcess( PROCESS_TERMINATE, FALSE, win[0].pid );
if (handle) if (handle)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment