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:
parent
cf46897b4c
commit
2e0ba90d3f
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user