From ad3c81f086aafc32477163d7b40117aefac55d76 Mon Sep 17 00:00:00 2001 From: Paul Harrison Date: Sun, 13 Feb 2011 15:39:26 +0000 Subject: [PATCH] When shutting down or rebooting keep trying alternate methods if the first ones fail. The order is user specified command, Dbus then hard coded halt command. Fixes #9102. (cherry picked from commit 4138b324fd7a8c7d9313859e54d4944c55e02519) --- mythtv/programs/mythfrontend/exitprompt.cpp | 25 ++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/mythtv/programs/mythfrontend/exitprompt.cpp b/mythtv/programs/mythfrontend/exitprompt.cpp index dbcdc9d9200..c7c71a476f0 100644 --- a/mythtv/programs/mythfrontend/exitprompt.cpp +++ b/mythtv/programs/mythfrontend/exitprompt.cpp @@ -12,6 +12,7 @@ #include "mythmainwindow.h" #include "mythscreenstack.h" #include "mythsystem.h" +#include "mythverbose.h" void ExitPrompter::quit() { @@ -62,16 +63,18 @@ static bool DBusHalt(void) void ExitPrompter::halt() { - QString halt_cmd = gCoreContext->GetSetting("HaltCommand",""); + int ret = -1; + if (!halt_cmd.isEmpty()) /* Use user specified command if it exists */ { - myth_system(halt_cmd); - } else if (!DBusHalt()) /* If supported, use DBus to shutdown */ - { - myth_system("sudo /sbin/halt -p"); + ret = myth_system(halt_cmd); + if (ret != 0) + VERBOSE(VB_IMPORTANT, "User defined HaltCommand failed, falling back to alternative methods."); } + if (ret != 0 && !DBusHalt()) /* If supported, use DBus to shutdown */ + myth_system("sudo /sbin/halt -p"); } static bool DBusReboot(void) @@ -118,16 +121,18 @@ static bool DBusReboot(void) void ExitPrompter::reboot() { - QString reboot_cmd = gCoreContext->GetSetting("RebootCommand",""); + int ret = -1; + if (!reboot_cmd.isEmpty()) /* Use user specified command if it exists */ { - myth_system(reboot_cmd); - } else if (!DBusReboot()) /* If supported, use DBus to reboot */ - { - myth_system("sudo /sbin/reboot"); + ret = myth_system(reboot_cmd); + if (ret != 0) + VERBOSE(VB_IMPORTANT, "User defined RebootCommand failed, falling back to alternative methods."); } + if (ret != 0 && !DBusReboot()) /* If supported, use DBus to reboot */ + myth_system("sudo /sbin/reboot"); } void ExitPrompter::handleExit()