diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index eb863c0e..23e26d79 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -2388,7 +2388,9 @@ int main(int argc, char **argv) # ifdef ENABLE_VISUALIZER // visualizer sets timmeout to 40ms, but since only it needs such small // value, we should restore defalt one after switching to another screen. - if (wFooter->GetTimeout() < ncmpcpp_window_timeout && !isVisible(myVisualizer)) + if (wFooter->GetTimeout() < ncmpcpp_window_timeout + && !(myScreen == myVisualizer || myLockedScreen == myVisualizer || myInactiveScreen == myVisualizer) + ) wFooter->SetTimeout(ncmpcpp_window_timeout); # endif // ENABLE_VISUALIZER } diff --git a/src/screen.cpp b/src/screen.cpp index 6ce9a105..96b4d5e9 100644 --- a/src/screen.cpp +++ b/src/screen.cpp @@ -29,7 +29,7 @@ using Global::myInactiveScreen; void ApplyToVisibleWindows(void (BasicScreen::*f)()) { - if (myLockedScreen) + if (myLockedScreen && myScreen->isMergable()) { if (myScreen == myLockedScreen) { @@ -51,7 +51,7 @@ bool isVisible(BasicScreen *screen) { assert(screen != 0); if (myLockedScreen && myScreen->isMergable()) - return screen == myScreen || screen == myInactiveScreen || screen == myLockedScreen; + return screen == myInactiveScreen || screen == myLockedScreen; else return screen == myScreen; } diff --git a/src/status.cpp b/src/status.cpp index 0104f759..c2040617 100644 --- a/src/status.cpp +++ b/src/status.cpp @@ -158,17 +158,7 @@ void TraceMpdStatus() Global::UpdateStatusImmediately = 0; } - if (myLockedScreen) - { - if (myScreen == myLockedScreen) - { - if (myInactiveScreen) - myInactiveScreen->Update(); - } - else - myLockedScreen->Update(); - } - myScreen->Update(); + ApplyToVisibleWindows(&BasicScreen::Update); if (isVisible(myPlaylist) && myPlaylist->ActiveWindow() == myPlaylist->Items && Timer.tv_sec == myPlaylist->Timer()+Config.playlist_disable_highlight_delay