From 4c3e1ace67353f5f1b9cc63844b40512be710e73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 6 Jul 2005 04:48:22 +0000 Subject: [PATCH] Fixed a bug in quit_all_windows(): we need to Unlock() the application because BWindow::QuitRequested() must be allowed to lock it. This fixes a deadlock when trying to quit Tracker. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13479 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/app/Application.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/kits/app/Application.cpp b/src/kits/app/Application.cpp index 39540b331a..89dfbc9676 100644 --- a/src/kits/app/Application.cpp +++ b/src/kits/app/Application.cpp @@ -1173,10 +1173,17 @@ BApplication::quit_all_windows(bool force) { AssertLocked(); - if (window_quit_loop(false, force)) - return true; + // We need to unlock here because BWindow::QuitRequested() must be + // allowed to lock the application - which would cause a deadlock + Unlock(); - return window_quit_loop(true, force); + bool quit = window_quit_loop(false, force); + if (!quit) + quit = window_quit_loop(true, force); + + Lock(); + + return quit; }