Browse Source

implement simple shutdown for xbmc via reboot/poweroff

Waldemar Brodkorb 11 years ago
parent
commit
08a80f1b46

+ 1 - 1
package/xbmc/Makefile

@@ -44,7 +44,7 @@ $(eval $(call PKG_template,XBMC,xbmc,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS
 XAKE_FLAGS+=		V=1 TIXML_USE_STL=1
 XAKE_FLAGS+=		GCC_HONOUR_COPTS=s
 TARGET_CPPFLAGS+=	-I$(STAGING_DIR)/usr/include/boost-1_55 \
-			-DTIXML_USE_STL=1
+			-DTIXML_USE_STL=1 -DHAS_SIMPLEPM=1
 
 ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI),y)
 TARGET_CPPFLAGS+=	-I$(STAGING_DIR)/opt/vc/include \

+ 144 - 0
package/xbmc/patches/001-simplepm.patch

@@ -0,0 +1,144 @@
+diff -Nur xbmc-12.3-Frodo.orig/xbmc/powermanagement/linux/LinuxPowerSyscall.cpp xbmc-12.3-Frodo/xbmc/powermanagement/linux/LinuxPowerSyscall.cpp
+--- xbmc-12.3-Frodo.orig/xbmc/powermanagement/linux/LinuxPowerSyscall.cpp	1970-01-01 01:00:00.000000000 +0100
++++ xbmc-12.3-Frodo/xbmc/powermanagement/linux/LinuxPowerSyscall.cpp	2014-01-10 16:23:32.238217592 +0100
+@@ -0,0 +1,55 @@
++/*
++ *      Copyright (C) 2014 Team XBMC
++ *      http://www.xbmc.org
++ *
++ *  This Program is free software; you can redistribute it and/or modify
++ *  it under the terms of the GNU General Public License as published by
++ *  the Free Software Foundation; either version 2, or (at your option)
++ *  any later version.
++ *
++ *  This Program is distributed in the hope that it will be useful,
++ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ *  GNU General Public License for more details.
++ *
++ *  You should have received a copy of the GNU General Public License
++ *  along with XBMC; see the file COPYING.  If not, see
++ *  <http://www.gnu.org/licenses/>.
++ *
++ */
++ 
++#if defined (_LINUX)
++
++#include <stdlib.h>
++#include "LinuxPowerSyscall.h"
++#include "utils/log.h"
++
++CLinuxPowerSyscall::CLinuxPowerSyscall()
++{ 
++	CLog::Log(LOGINFO, "Selected LinuxPower as PowerSyscall");
++}
++
++CLinuxPowerSyscall::~CLinuxPowerSyscall()
++{ }
++
++bool CLinuxPowerSyscall::Powerdown()
++{
++  system("/sbin/poweroff -F");
++  return 0;
++}
++
++bool CLinuxPowerSyscall::Reboot()
++{
++  system("/sbin/reboot -F");
++  return 0;
++}
++
++int CLinuxPowerSyscall::BatteryLevel(void)
++{ }
++
++bool CLinuxPowerSyscall::PumpPowerEvents(IPowerEventsCallback *callback)
++{    
++  return true;
++}
++
++#endif
+diff -Nur xbmc-12.3-Frodo.orig/xbmc/powermanagement/linux/LinuxPowerSyscall.h xbmc-12.3-Frodo/xbmc/powermanagement/linux/LinuxPowerSyscall.h
+--- xbmc-12.3-Frodo.orig/xbmc/powermanagement/linux/LinuxPowerSyscall.h	1970-01-01 01:00:00.000000000 +0100
++++ xbmc-12.3-Frodo/xbmc/powermanagement/linux/LinuxPowerSyscall.h	2014-01-10 14:57:23.365205874 +0100
+@@ -0,0 +1,44 @@
++#pragma once
++/*
++ *      Copyright (C) 2014 Team XBMC
++ *      http://www.xbmc.org
++ *
++ *  This Program is free software; you can redistribute it and/or modify
++ *  it under the terms of the GNU General Public License as published by
++ *  the Free Software Foundation; either version 2, or (at your option)
++ *  any later version.
++ *
++ *  This Program is distributed in the hope that it will be useful,
++ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ *  GNU General Public License for more details.
++ *
++ *  You should have received a copy of the GNU General Public License
++ *  along with XBMC; see the file COPYING.  If not, see
++ *  <http://www.gnu.org/licenses/>.
++ *
++ */
++
++#if defined (_LINUX)
++#include "powermanagement/IPowerSyscall.h"
++
++class CLinuxPowerSyscall : public CPowerSyscallWithoutEvents
++{
++public:
++  CLinuxPowerSyscall();
++  ~CLinuxPowerSyscall();
++
++  virtual bool Powerdown();
++  virtual bool Suspend(void) { return false; }
++  virtual bool Hibernate(void) { return false; }
++  virtual bool Reboot();
++
++  virtual bool CanPowerdown(void) { return true; }
++  virtual bool CanSuspend(void) { return false; }
++  virtual bool CanHibernate(void) { return false; }
++  virtual bool CanReboot(void) { return true; }
++  virtual int  BatteryLevel(void);
++
++  virtual bool PumpPowerEvents(IPowerEventsCallback *callback);
++};
++#endif
+diff -Nur xbmc-12.3-Frodo.orig/xbmc/powermanagement/linux/Makefile xbmc-12.3-Frodo/xbmc/powermanagement/linux/Makefile
+--- xbmc-12.3-Frodo.orig/xbmc/powermanagement/linux/Makefile	2013-12-12 22:47:49.000000000 +0100
++++ xbmc-12.3-Frodo/xbmc/powermanagement/linux/Makefile	2014-01-10 14:27:13.411383558 +0100
+@@ -2,7 +2,8 @@
+      ConsoleUPowerSyscall.cpp \
+      HALPowerSyscall.cpp \
+      UPowerSyscall.cpp \
+-     SystemdUPowerSyscall.cpp
++     SystemdUPowerSyscall.cpp \
++     LinuxPowerSyscall.cpp
+ 
+ LIB=powermanagement_linux.a
+ 
+diff -Nur xbmc-12.3-Frodo.orig/xbmc/powermanagement/PowerManager.cpp xbmc-12.3-Frodo/xbmc/powermanagement/PowerManager.cpp
+--- xbmc-12.3-Frodo.orig/xbmc/powermanagement/PowerManager.cpp	2013-12-12 22:47:49.000000000 +0100
++++ xbmc-12.3-Frodo/xbmc/powermanagement/PowerManager.cpp	2014-01-14 11:19:11.558337441 +0100
+@@ -46,6 +46,9 @@
+ #include "linux/ConsoleDeviceKitPowerSyscall.h"
+ #include "linux/SystemdUPowerSyscall.h"
+ #include "linux/UPowerSyscall.h"
++#ifdef HAS_SIMPLEPM
++#include "linux/LinuxPowerSyscall.h"
++#endif
+ #ifdef HAS_HAL
+ #include "linux/HALPowerSyscall.h"
+ #endif
+@@ -83,6 +86,10 @@
+     m_instance = new CSystemdUPowerSyscall();
+   else if (CUPowerSyscall::HasUPower())
+     m_instance = new CUPowerSyscall();
++#ifdef HAS_SIMPLEPM
++  else
++    m_instance = new CLinuxPowerSyscall();
++#endif
+ #ifdef HAS_HAL
+   else
+     m_instance = new CHALPowerSyscall();

+ 23 - 2
package/xbmc/patches/patch-tools_Linux_xbmc_sh_in

@@ -1,5 +1,26 @@
---- xbmc-12.2.orig/tools/Linux/xbmc.sh.in	2013-05-03 07:57:41.000000000 +0200
-+++ xbmc-12.2/tools/Linux/xbmc.sh.in	2013-08-05 16:24:14.000000000 +0200
+--- xbmc-12.3-Frodo.orig/tools/Linux/xbmc.sh.in	2013-12-12 22:47:49.000000000 +0100
++++ xbmc-12.3-Frodo/tools/Linux/xbmc.sh.in	2014-01-14 09:55:27.409527526 +0100
+@@ -52,7 +52,7 @@ single_stacktrace()
+ 
+ print_crash_report()
+ {
+-  FILE="$HOME/xbmc_crashlog-`date +%Y%m%d_%H%M%S`.log"
++  FILE="/tmp/xbmc_crashlog-`date +%Y%m%d_%H%M%S`.log"
+   echo "############## XBMC CRASH LOG ###############" >> $FILE
+   echo >> $FILE
+   echo "################ SYSTEM INFO ################" >> $FILE
+@@ -91,9 +91,9 @@ print_crash_report()
+   echo >> $FILE
+   echo "################# LOG FILE ##################" >> $FILE
+   echo >> $FILE
+-  if [ -f ~/.xbmc/temp/xbmc.log ]
++  if [ -f /tmp/xbmc/xbmc.log ]
+   then
+-    cat ~/.xbmc/temp/xbmc.log >> $FILE
++    cat /tmp/xbmc/xbmc.log >> $FILE
+     echo >> $FILE
+   else
+     echo "Logfile not found in the usual place." >> $FILE
 @@ -107,12 +107,6 @@ print_crash_report()
    echo "Crash report available at $FILE"
  }