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
This commit is contained in:
Stefano Ceccherini 2008-02-18 08:15:29 +00:00
parent cf46897b4c
commit 2e0ba90d3f

View File

@ -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;
}