From 2f8398025dcaf52f606fd8655c4e24788e14bbef Mon Sep 17 00:00:00 2001 From: Tobias Arrskog Date: Sat, 23 Mar 2013 14:48:26 +0100 Subject: [PowerManagement] Made busy dialog open when something issues suspend, hibernation, powerdown or reboot --- xbmc/powermanagement/PowerManager.cpp | 45 ++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/xbmc/powermanagement/PowerManager.cpp b/xbmc/powermanagement/PowerManager.cpp index ca94f49034..0756b1e1b1 100644 --- a/xbmc/powermanagement/PowerManager.cpp +++ b/xbmc/powermanagement/PowerManager.cpp @@ -31,6 +31,8 @@ #include "interfaces/AnnouncementManager.h" #include "guilib/LocalizeStrings.h" #include "guilib/GraphicContext.h" +#include "guilib/GUIWindowManager.h" +#include "dialogs/GUIDialogBusy.h" #include "dialogs/GUIDialogKaiToast.h" #if defined(TARGET_DARWIN) @@ -137,25 +139,58 @@ void CPowerManager::SetDefaults() bool CPowerManager::Powerdown() { - return CanPowerdown() ? m_instance->Powerdown() : false; + if (CanPowerdown() && m_instance->Powerdown()) + { + CGUIDialogBusy* dialog = (CGUIDialogBusy*)g_windowManager.GetWindow(WINDOW_DIALOG_BUSY); + if (dialog) + dialog->Show(); + + return true; + } + + return false; } bool CPowerManager::Suspend() { - return CanSuspend() ? m_instance->Suspend() : false; + if (CanSuspend() && m_instance->Suspend()) + { + CGUIDialogBusy* dialog = (CGUIDialogBusy*)g_windowManager.GetWindow(WINDOW_DIALOG_BUSY); + if (dialog) + dialog->Show(); + + return true; + } + + return false; } bool CPowerManager::Hibernate() { - return CanHibernate() ? m_instance->Hibernate() : false; + if (CanHibernate() && m_instance->Hibernate()) + { + CGUIDialogBusy* dialog = (CGUIDialogBusy*)g_windowManager.GetWindow(WINDOW_DIALOG_BUSY); + if (dialog) + dialog->Show(); + + return true; + } + + return false; } bool CPowerManager::Reboot() { bool success = CanReboot() ? m_instance->Reboot() : false; if (success) + { CAnnouncementManager::Announce(System, "xbmc", "OnRestart"); + CGUIDialogBusy* dialog = (CGUIDialogBusy*)g_windowManager.GetWindow(WINDOW_DIALOG_BUSY); + if (dialog) + dialog->Show(); + } + return success; } @@ -209,6 +244,10 @@ void CPowerManager::OnWake() // reset out timers g_application.ResetShutdownTimers(); + CGUIDialogBusy* dialog = (CGUIDialogBusy*)g_windowManager.GetWindow(WINDOW_DIALOG_BUSY); + if (dialog) + dialog->Close(); + #if defined(HAS_SDL) || defined(TARGET_WINDOWS) if (g_Windowing.IsFullScreen()) { -- cgit v1.2.3