From c29028f94cace32084a6cfdf8e159d233fa1c41d Mon Sep 17 00:00:00 2001 From: Enrico Forestieri Date: Sun, 30 Aug 2009 16:06:51 +0000 Subject: [PATCH] During an emergency cleanup, better to not indefinitely wait for the pipe server to finish. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31241 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/Server.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Server.cpp b/src/Server.cpp index 2bcd85ccc3..da4cd618e5 100644 --- a/src/Server.cpp +++ b/src/Server.cpp @@ -502,7 +502,12 @@ void LyXComm::closeConnection() return; } - emergencyCleanup(); + SetEvent(stopserver_); + // Wait for the pipe server to finish + WaitForSingleObject(server_thread_, INFINITE); + CloseHandle(server_thread_); + ResetEvent(stopserver_); + CloseHandle(stopserver_); } @@ -510,8 +515,10 @@ void LyXComm::emergencyCleanup() { if (ready_) { SetEvent(stopserver_); - // Wait for the pipe server to finish - WaitForSingleObject(server_thread_, INFINITE); + // Forcibly terminate the pipe server thread if it does + // not finish quickly. + if (WaitForSingleObject(server_thread_, 200) != WAIT_OBJECT_0) + TerminateThread(server_thread_, 0); CloseHandle(server_thread_); ResetEvent(stopserver_); CloseHandle(stopserver_); -- 2.39.5