diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/configure xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/configure --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/configure 2012-07-30 09:39:48.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/configure 2012-09-26 16:32:03.000000000 +0000 @@ -23451,12 +23451,12 @@ pkg_cv_CEC_CFLAGS="$CEC_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcec >= 1.7.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libcec >= 1.7.0") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcec >= 1.9.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcec >= 1.9.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_CEC_CFLAGS=`$PKG_CONFIG --cflags "libcec >= 1.7.0" 2>/dev/null` + pkg_cv_CEC_CFLAGS=`$PKG_CONFIG --cflags "libcec >= 1.9.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -23468,12 +23468,12 @@ pkg_cv_CEC_LIBS="$CEC_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcec >= 1.7.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libcec >= 1.7.0") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcec >= 1.9.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcec >= 1.9.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_CEC_LIBS=`$PKG_CONFIG --libs "libcec >= 1.7.0" 2>/dev/null` + pkg_cv_CEC_LIBS=`$PKG_CONFIG --libs "libcec >= 1.9.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -23494,9 +23494,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - CEC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libcec >= 1.7.0" 2>&1` + CEC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libcec >= 1.9.0" 2>&1` else - CEC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libcec >= 1.7.0" 2>&1` + CEC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libcec >= 1.9.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$CEC_PKG_ERRORS" >&5 diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/configure.in xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/configure.in --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/configure.in 2012-07-30 09:39:36.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/configure.in 2012-09-26 16:31:51.000000000 +0000 @@ -1170,7 +1170,7 @@ # libcec is dyloaded, so we need to check for its headers and link any depends. if test "x$use_libcec" != "xno"; then - PKG_CHECK_MODULES([CEC],[libcec >= 1.7.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)]) + PKG_CHECK_MODULES([CEC],[libcec >= 1.9.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)]) if test "x$use_libcec" != "xno"; then INCLUDES="$INCLUDES $CEC_CFLAGS" diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/debian/changelog xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/debian/changelog --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/debian/changelog 2012-07-30 10:01:04.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/debian/changelog 2012-09-26 16:38:57.000000000 +0000 @@ -1,8 +1,8 @@ -xbmc (2:11.0-pvr+odk76-eden~git20120725.9093fb6-0ubuntu1~ppa1+odk76~oneiric) oneiric; urgency=medium +xbmc (2:11.0-pvr+odk76-eden~git20120911.db0474f-0ubuntu1~ppa1+odk76~oneiric) oneiric; urgency=medium * Upload to XBMC PPA for Ubuntu oneiric. - -- Semen Apukhtin (FANTOM) Mon, 30 Jul 2012 14:01:04 +0400 + -- Semen Apukhtin (FANTOM) Wed, 26 Sep 2012 20:38:57 +0400 xbmc (2:11.0~git20111012.f25c7f0-ppa1~oneiric) oneiric; urgency=medium diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/language/English/strings.xml xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/language/English/strings.xml --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/language/English/strings.xml 2012-07-30 09:39:24.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/language/English/strings.xml 2012-09-26 16:31:37.000000000 +0000 @@ -2878,4 +2878,5 @@ Connection lost This user does not have permissions to open the CEC adapter The port is busy. Only one program can access the CEC adapter + Pause playback when switching to another source diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/lib/libcec/Makefile xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/lib/libcec/Makefile --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/lib/libcec/Makefile 2012-07-30 09:39:29.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/lib/libcec/Makefile 2012-09-26 16:31:39.000000000 +0000 @@ -7,7 +7,7 @@ # lib name, version LIBNAME=libcec -VERSION=1.8.0 +VERSION=1.9.0 SOURCE=$(LIBNAME)-$(VERSION) # download location and format diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/project/BuildDependencies/scripts/libcec_d.txt xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/project/BuildDependencies/scripts/libcec_d.txt --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/project/BuildDependencies/scripts/libcec_d.txt 2012-07-30 09:39:30.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/project/BuildDependencies/scripts/libcec_d.txt 2012-09-26 16:31:45.000000000 +0000 @@ -1,3 +1,3 @@ ; filename source of the file -libcec-1.8.0.zip http://packages.pulse-eight.net/windows/ +libcec-1.9.0.zip http://packages.pulse-eight.net/windows/ diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/system/peripherals.xml xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/system/peripherals.xml --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/system/peripherals.xml 2012-07-30 09:39:30.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/system/peripherals.xml 2012-09-26 16:31:46.000000000 +0000 @@ -9,7 +9,7 @@ - + @@ -19,10 +19,11 @@ - - - - + + + + + diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/tools/darwin/depends/libcec/Makefile xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/tools/darwin/depends/libcec/Makefile --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/tools/darwin/depends/libcec/Makefile 2012-07-30 09:39:30.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/tools/darwin/depends/libcec/Makefile 2012-09-26 16:31:46.000000000 +0000 @@ -3,7 +3,7 @@ # lib name, version LIBNAME=libcec -VERSION=1.8.0 +VERSION=1.9.0 SOURCE=$(LIBNAME)-$(VERSION) ARCHIVE=$(SOURCE).tar.gz LIBCEC_URL="http://packages.pulse-eight.net/pulse/sources/libcec" diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/ApplicationMessenger.cpp xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/ApplicationMessenger.cpp --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/ApplicationMessenger.cpp 2012-07-30 09:39:31.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/ApplicationMessenger.cpp 2012-09-26 16:31:46.000000000 +0000 @@ -74,6 +74,7 @@ #include "storage/DetectDVDType.h" #include "pvr/PVRManager.h" +#include "peripherals/Peripherals.h" using namespace PVR; using namespace std; @@ -272,6 +273,7 @@ case TMSG_SUSPEND: { g_PVRManager.SetWakeupCommand(); + PERIPHERALS::CPeripherals::Get().Suspend(); g_powerManager.Suspend(); } break; diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/Peripherals.cpp xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/Peripherals.cpp --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/Peripherals.cpp 2012-07-30 09:39:36.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/Peripherals.cpp 2012-09-26 16:31:47.000000000 +0000 @@ -658,3 +658,10 @@ return false; } + +void CPeripherals::Suspend(void) +{ + CSingleLock lock(m_critSection); + for (unsigned int iBusPtr = 0; iBusPtr < m_busses.size(); iBusPtr++) + m_busses.at(iBusPtr)->Suspend(); +} diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/Peripherals.h xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/Peripherals.h --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/Peripherals.h 2012-07-30 09:39:36.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/Peripherals.h 2012-09-26 16:31:47.000000000 +0000 @@ -198,6 +198,8 @@ #endif } + void Suspend(void); + private: CPeripherals(void); bool LoadMappings(void); diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/bus/PeripheralBus.cpp xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/bus/PeripheralBus.cpp --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/bus/PeripheralBus.cpp 2012-07-30 09:39:36.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/bus/PeripheralBus.cpp 2012-09-26 16:31:47.000000000 +0000 @@ -348,3 +348,10 @@ { return m_peripherals.size(); } + +void CPeripheralBus::Suspend(void) +{ + CSingleLock lock(m_critSection); + for (unsigned int iDevicePtr = 0; iDevicePtr < m_peripherals.size(); iDevicePtr++) + m_peripherals.at(iDevicePtr)->Suspend(); +} diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/bus/PeripheralBus.h xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/bus/PeripheralBus.h --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/bus/PeripheralBus.h 2012-07-30 09:39:36.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/bus/PeripheralBus.h 2012-09-26 16:31:47.000000000 +0000 @@ -169,6 +169,8 @@ virtual bool FindComPort(CStdString &strLocation) { return false; } + void Suspend(void); + protected: virtual void Process(void); virtual bool ScanForDevices(void); diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/devices/Peripheral.h xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/devices/Peripheral.h --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/devices/Peripheral.h 2012-07-30 09:39:36.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/devices/Peripheral.h 2012-09-26 16:31:47.000000000 +0000 @@ -154,6 +154,8 @@ virtual bool ErrorOccured(void) const { return m_bError; } + virtual void Suspend(void) {} + protected: virtual void ClearSettings(void); diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/devices/PeripheralCecAdapter.cpp xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/devices/PeripheralCecAdapter.cpp --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/devices/PeripheralCecAdapter.cpp 2012-07-30 09:39:36.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/devices/PeripheralCecAdapter.cpp 2012-09-26 16:31:47.000000000 +0000 @@ -27,9 +27,11 @@ #include "DynamicDll.h" #include "threads/SingleLock.h" #include "dialogs/GUIDialogKaiToast.h" +#include "guilib/GUIWindowManager.h" #include "guilib/LocalizeStrings.h" #include "peripherals/Peripherals.h" #include "peripherals/bus/PeripheralBus.h" +#include "pictures/GUIWindowSlideShow.h" #include "settings/GUISettings.h" #include "settings/Settings.h" #include "utils/log.h" @@ -163,7 +165,7 @@ // this will also power off devices when we're the active source { CSingleLock lock(m_critSection); - m_bGoingToStandby = false; + m_bGoingToStandby = true; } StopThread(); } @@ -1032,6 +1034,14 @@ xbmcKey.iButton = XINPUT_IR_REMOTE_TITLE; // context menu PushCecKeypress(xbmcKey); break; + case CEC_USER_CONTROL_CODE_DATA: + xbmcKey.iButton = XINPUT_IR_REMOTE_TELETEXT; + PushCecKeypress(xbmcKey); + break; + case CEC_USER_CONTROL_CODE_SUB_PICTURE: + xbmcKey.iButton = XINPUT_IR_REMOTE_SUBTITLE; + PushCecKeypress(xbmcKey); + break; case CEC_USER_CONTROL_CODE_POWER_ON_FUNCTION: case CEC_USER_CONTROL_CODE_EJECT: case CEC_USER_CONTROL_CODE_INPUT_SELECT: @@ -1040,7 +1050,6 @@ case CEC_USER_CONTROL_CODE_STOP_RECORD: case CEC_USER_CONTROL_CODE_PAUSE_RECORD: case CEC_USER_CONTROL_CODE_ANGLE: - case CEC_USER_CONTROL_CODE_SUB_PICTURE: case CEC_USER_CONTROL_CODE_VIDEO_ON_DEMAND: case CEC_USER_CONTROL_CODE_TIMER_PROGRAMMING: case CEC_USER_CONTROL_CODE_PLAY_FUNCTION: @@ -1057,7 +1066,6 @@ case CEC_USER_CONTROL_CODE_POWER_TOGGLE_FUNCTION: case CEC_USER_CONTROL_CODE_POWER_OFF_FUNCTION: case CEC_USER_CONTROL_CODE_F5: - case CEC_USER_CONTROL_CODE_DATA: case CEC_USER_CONTROL_CODE_UNKNOWN: default: break; @@ -1126,11 +1134,33 @@ } } -void CPeripheralCecAdapter::CecSourceActivated(void *param, const CEC::cec_logical_address address, const uint8_t activated) +void CPeripheralCecAdapter::CecSourceActivated(void *cbParam, const CEC::cec_logical_address address, const uint8_t activated) { + CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam; + if (!adapter) + return; + // wake up the screensaver, so the user doesn't switch to a black screen if (activated == 1) g_application.WakeUpScreenSaverAndDPMS(); + + if (adapter->GetSettingBool("pause_playback_on_deactivate")) + { + bool bShowingSlideshow = (g_windowManager.GetActiveWindow() == WINDOW_SLIDESHOW); + CGUIWindowSlideShow *pSlideShow = bShowingSlideshow ? (CGUIWindowSlideShow *)g_windowManager.GetWindow(WINDOW_SLIDESHOW) : NULL; + + if (pSlideShow) + { + // pause/resume slideshow + pSlideShow->OnAction(CAction(ACTION_PAUSE)); + } + else if ((g_application.IsPlaying() && activated == 0) || + (g_application.IsPaused() && activated == 1)) + { + // pause/resume player + g_application.getApplicationMessenger().MediaPause(); + } + } } int CPeripheralCecAdapter::CecLogMessage(void *cbParam, const cec_log_message &message) @@ -1585,4 +1615,14 @@ Create(); } +void CPeripheralCecAdapter::Suspend(void) +{ + { + CSingleLock lock(m_critSection); + m_bGoingToStandby = true; + } + + StopThread(); +} + #endif diff -Nru xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/devices/PeripheralCecAdapter.h xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/devices/PeripheralCecAdapter.h --- xbmc-11.0-pvr+odk76-eden~git20120725.9093fb6/xbmc/peripherals/devices/PeripheralCecAdapter.h 2012-07-30 09:39:36.000000000 +0000 +++ xbmc-11.0-pvr+odk76-eden~git20120911.db0474f/xbmc/peripherals/devices/PeripheralCecAdapter.h 2012-09-26 16:31:47.000000000 +0000 @@ -109,6 +109,8 @@ void PushCecKeypress(const CEC::cec_keypress &key); + void Suspend(void); + protected: bool OpenConnection(void); void SetConfigurationFromSettings(void);