From 2e0ba90d3fb77f4975b8bfea02b5b580dffc75ba Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Mon, 18 Feb 2008 08:15:29 +0000 Subject: [PATCH] We can't use the be_app looper, since it can be already locked from another thread (for example, when quitting the app/window), and that would cause a deadlock. Fixes bug #1645. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23995 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/storage/PathMonitor.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/kits/storage/PathMonitor.cpp b/src/kits/storage/PathMonitor.cpp index 01fe91e71d..3d20597844 100644 --- a/src/kits/storage/PathMonitor.cpp +++ b/src/kits/storage/PathMonitor.cpp @@ -177,14 +177,11 @@ PathHandler::PathHandler(const char* path, uint32 flags, BMessenger target) return; BLooper* looper; - if (be_app != NULL) { - looper = be_app; - } else { - // TODO: only have a single global looper! - looper = new BLooper("PathMonitor looper"); - looper->Run(); - fOwnsLooper = true; - } + // TODO: only have a single global looper! + // TODO: Use BLooper::LooperForThread(find_looper(NULL)) ? + looper = new BLooper("PathMonitor looper"); + looper->Run(); + fOwnsLooper = true; looper->Lock(); looper->AddHandler(this); @@ -492,6 +489,7 @@ PathHandler::MessageReceived(BMessage* message) if (fOwnsLooper) looper->Quit(); + return; }