From 92766f93e2c9bed157a32589ab01a566d9e14468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 30 Nov 2005 15:31:33 +0000 Subject: [PATCH] EventDispatcher::_Unset() did not wait for the event looper thread under BeOS, as wait_for_thread() always returns B_BAD_ADDRESS when the second argument is NULL (it works fine under Haiku). Instead of enqueuing a B_QUIT_REQUESTED message, InputStream now directly quits when the 'quit' code is read from the port (B_QUIT_REQUESTED was never handled by the event loop either, it just didn't get noticed because of the wrong wait_for_thread() usage). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15240 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/EventDispatcher.cpp | 5 +++-- src/servers/app/EventStream.cpp | 9 ++------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/servers/app/EventDispatcher.cpp b/src/servers/app/EventDispatcher.cpp index c05b4d92da..44deb3b388 100644 --- a/src/servers/app/EventDispatcher.cpp +++ b/src/servers/app/EventDispatcher.cpp @@ -269,8 +269,9 @@ EventDispatcher::_Unset() fStream->SendQuit(); - wait_for_thread(fThread, NULL); - wait_for_thread(fCursorThread, NULL); + status_t status; + wait_for_thread(fThread, &status); + wait_for_thread(fCursorThread, &status); fThread = fCursorThread = -1; diff --git a/src/servers/app/EventStream.cpp b/src/servers/app/EventStream.cpp index ffa0b006d6..6284c01060 100644 --- a/src/servers/app/EventStream.cpp +++ b/src/servers/app/EventStream.cpp @@ -213,13 +213,8 @@ InputServerStream::_MessageFromPort(BMessage** _message, bigtime_t timeout) } if (code == 'quit') { - // special code to tell our client to quit - BMessage* message = new BMessage(B_QUIT_REQUESTED); - if (message == NULL) - return B_NO_MEMORY; - - *_message = message; - return B_OK; + // this will cause GetNextEvent() to return false + return B_BAD_PORT_ID; } // we have the message, now let's unflatten it