From 946d88f90b9c740ffbfd3ceb123e376a7d0cfa95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 12 Sep 2006 11:11:22 +0000 Subject: [PATCH] We're now using the same priorities for windows as BeOS does - this should improve the responsiveness of the GUI, and should also fix bug #742. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18821 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/interface/MenuBar.cpp | 10 ++++++---- src/kits/interface/PopUpMenu.cpp | 9 ++++----- src/kits/interface/Window.cpp | 8 +++----- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/kits/interface/MenuBar.cpp b/src/kits/interface/MenuBar.cpp index 9c25160e42..90967d3e62 100644 --- a/src/kits/interface/MenuBar.cpp +++ b/src/kits/interface/MenuBar.cpp @@ -7,6 +7,7 @@ * Stefano Ceccherini (burton666@libero.it) */ + #include #include @@ -21,6 +22,7 @@ using BPrivate::gDefaultTokens; + struct menubar_data { BMenuBar *menuBar; int32 menuIndex; @@ -34,9 +36,9 @@ struct menubar_data { BMenuBar::BMenuBar(BRect frame, const char *title, uint32 resizeMask, - menu_layout layout, bool resizeToFit) - : BMenu(frame, title, resizeMask, - B_WILL_DRAW | B_FRAME_EVENTS, layout, resizeToFit), + menu_layout layout, bool resizeToFit) + : BMenu(frame, title, resizeMask, B_WILL_DRAW | B_FRAME_EVENTS, layout, + resizeToFit), fBorder(B_BORDER_FRAME), fTrackingPID(-1), fPrevFocusToken(-1), @@ -349,7 +351,7 @@ BMenuBar::StartMenuBar(int32 menuIndex, bool sticky, bool showMenu, BRect *speci fMenuSem = create_sem(0, "window close sem"); _set_menu_sem_(window, fMenuSem); - fTrackingPID = spawn_thread(TrackTask, "menu_tracking", B_NORMAL_PRIORITY, NULL); + fTrackingPID = spawn_thread(TrackTask, "menu_tracking", B_DISPLAY_PRIORITY, NULL); if (fTrackingPID >= 0) { menubar_data data; data.menuBar = this; diff --git a/src/kits/interface/PopUpMenu.cpp b/src/kits/interface/PopUpMenu.cpp index 06627b2d56..f11906f2fa 100644 --- a/src/kits/interface/PopUpMenu.cpp +++ b/src/kits/interface/PopUpMenu.cpp @@ -293,11 +293,8 @@ BPopUpMenu::_go(BPoint where, bool autoInvoke, bool startOpened, data->lock = sem; // Spawn the tracking thread - fTrackThread = spawn_thread(entry, "popup", B_NORMAL_PRIORITY, data); - - if (fTrackThread >= 0) - resume_thread(fTrackThread); - else { + fTrackThread = spawn_thread(entry, "popup", B_DISPLAY_PRIORITY, data); + if (fTrackThread < B_OK) { // Something went wrong. Cleanup and return NULL delete_sem(sem); if (async && window != NULL) @@ -306,6 +303,8 @@ BPopUpMenu::_go(BPoint where, bool autoInvoke, bool startOpened, return NULL; } + resume_thread(fTrackThread); + // Synchronous menu: we block on the sem till // the other thread deletes it. if (!async) { diff --git a/src/kits/interface/Window.cpp b/src/kits/interface/Window.cpp index 457c446c94..917ceaa685 100644 --- a/src/kits/interface/Window.cpp +++ b/src/kits/interface/Window.cpp @@ -40,7 +40,6 @@ //#define DEBUG_WIN #ifdef DEBUG_WIN -# include # define STRACE(x) printf x #else # define STRACE(x) ; @@ -269,7 +268,7 @@ BWindow::Shortcut::PrepareKey(uint32 key) BWindow::BWindow(BRect frame, const char* title, window_type type, uint32 flags, uint32 workspace) - : BLooper(title) + : BLooper(title, B_DISPLAY_PRIORITY) { window_look look; window_feel feel; @@ -281,7 +280,7 @@ BWindow::BWindow(BRect frame, const char* title, window_type type, BWindow::BWindow(BRect frame, const char* title, window_look look, window_feel feel, uint32 flags, uint32 workspace) - : BLooper(title) + : BLooper(title, B_DISPLAY_PRIORITY) { _InitData(frame, title, look, feel, flags, workspace); } @@ -350,9 +349,8 @@ BWindow::BWindow(BRect frame, int32 bitmapToken) BWindow::~BWindow() { - if (BMenu *menu = dynamic_cast(fFocus)) { + if (BMenu *menu = dynamic_cast(fFocus)) menu->QuitTracking(); - } // The BWindow is locked when the destructor is called, // we need to unlock because the menubar thread tries