mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
xbmc-pvr: merge with package 'xbmc'
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
0e7f129621
commit
352d53effa
@ -19,11 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc-theme-Confluence"
|
||||
if [ "$PVR" = yes ]; then
|
||||
PKG_VERSION="pvr-11.0.2"
|
||||
else
|
||||
PKG_VERSION="11.0.1"
|
||||
fi
|
||||
PKG_VERSION="11.0.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -1,14 +0,0 @@
|
||||
--- xbmc-theme-Confluence-11.0.1/720p/IncludesHomeMenuItems.xml 2012-03-31 08:37:23.304505434 +0400
|
||||
+++ xbmc-theme-Confluence-11.0.1/720p/IncludesHomeMenuItems.patch.xml 2012-03-31 08:39:57.894660377 +0400
|
||||
@@ -183,6 +183,11 @@
|
||||
<label>5</label>
|
||||
<onclick>ActivateWindow(Settings)</onclick>
|
||||
</control>
|
||||
+ <control type="button" id="90120">
|
||||
+ <include>ButtonHomeSubCommonValues</include>
|
||||
+ <label>[COLOR FF757677]Open[/COLOR][COLOR FF8ABEE2]ELEC[/COLOR]</label>
|
||||
+ <onclick>RunAddon(os.openelec.settings)</onclick>
|
||||
+ </control>
|
||||
<control type="button" id="90123">
|
||||
<include>ButtonHomeSubCommonValues</include>
|
||||
<label>7</label>
|
@ -1,62 +0,0 @@
|
||||
From 3e1367b680b26123e9e1aa09f8caf2a932d47572 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Op den Kamp <lars@opdenkamp.eu>
|
||||
Date: Tue, 17 Apr 2012 01:57:43 +0200
|
||||
Subject: [PATCH 2/2] cec: libCEC 1.6 support and fixes. libCEC 1.6+ is needed
|
||||
when using firmware v2 on the CEC adapter, which adds
|
||||
wake over CEC * added a new setting to control
|
||||
whether to put the TV in standby when the player is put
|
||||
in standby. * added some button mappings: all menu
|
||||
related buttons -> menu, previous channel -> teletext,
|
||||
added support for the channels list on samsung, mapped
|
||||
next fav -> menu (when available) * display the
|
||||
firmware version in the peripheral manager (if
|
||||
available) * handle the new CEC alert callback
|
||||
(libCEC 1.6+) * replaced 'Put this PC in standby mode
|
||||
when the TV is switched off' with an enum that allows
|
||||
the user to chose between 'Ignore', 'Suspend' and
|
||||
'Shutdown' * fixed - crash when changing settings
|
||||
without libCEC started. * fixed - range of wake and
|
||||
power-off devices * fixed - update the correct
|
||||
standby device setting ('standby_devices' not
|
||||
'wake_devices') * fixed - don't get the settings from
|
||||
the eeprom, but always use the settings provided in
|
||||
xbmc
|
||||
|
||||
---
|
||||
.../720p/DialogPeripheralManager.xml | 4 +-
|
||||
configure.in | 2 +-
|
||||
language/English/strings.xml | 5 +-
|
||||
project/BuildDependencies/scripts/libcec_d.txt | 2 +-
|
||||
system/peripherals.xml | 15 +-
|
||||
tools/darwin/depends/libcec/Makefile | 2 +-
|
||||
xbmc/peripherals/bus/PeripheralBus.cpp | 1 +
|
||||
xbmc/peripherals/devices/Peripheral.h | 2 +
|
||||
xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 160 ++++++++++++++++----
|
||||
xbmc/peripherals/devices/PeripheralCecAdapter.h | 4 +
|
||||
10 files changed, 152 insertions(+), 45 deletions(-)
|
||||
|
||||
diff --git a/720p/DialogPeripheralManager.xml b/720p/DialogPeripheralManager.xml
|
||||
index 07954d0..5717017 100644
|
||||
--- a/720p/DialogPeripheralManager.xml
|
||||
+++ b/720p/DialogPeripheralManager.xml
|
||||
@@ -117,7 +117,7 @@
|
||||
<posy>50</posy>
|
||||
<width>520</width>
|
||||
<height>20</height>
|
||||
- <label>$LOCALIZE[35501]: [COLOR=grey2]$INFO[ListItem.Property(Class)][/COLOR]</label>
|
||||
+ <label>$LOCALIZE[35501]: [COLOR=grey2]$INFO[ListItem.Property(Class)][/COLOR] $LOCALIZE[19114]: [COLOR=grey2]$INFO[ListItem.Property(Version)][/COLOR]</label>
|
||||
<align>left</align>
|
||||
<aligny>center</aligny>
|
||||
<font>font12</font>
|
||||
@@ -173,7 +173,7 @@
|
||||
<posy>50</posy>
|
||||
<width>520</width>
|
||||
<height>20</height>
|
||||
- <label>$LOCALIZE[35501]: [COLOR=grey2]$INFO[ListItem.Property(Class)][/COLOR]</label>
|
||||
+ <label>$LOCALIZE[35501]: [COLOR=grey2]$INFO[ListItem.Property(Class)][/COLOR] $LOCALIZE[19114]: [COLOR=grey2]$INFO[ListItem.Property(Version)][/COLOR]</label>
|
||||
<align>left</align>
|
||||
<aligny>center</aligny>
|
||||
<font>font12</font>
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -29,9 +29,7 @@ mkdir -p $INSTALL/usr/bin
|
||||
cp $PKG_DIR/scripts/gputemp $INSTALL/usr/bin
|
||||
cp $PKG_DIR/scripts/wait_on_xbmc_exit $INSTALL/usr/bin
|
||||
cp $PKG_BUILD/tools/EventClients/Clients/XBMC\ Send/xbmc-send.py $INSTALL/usr/bin/xbmc-send
|
||||
if [ "$PVR" = yes ]; then
|
||||
cp $PKG_DIR/scripts/setwakeup.sh $INSTALL/usr/bin
|
||||
fi
|
||||
cp $PKG_DIR/scripts/setwakeup.sh $INSTALL/usr/bin
|
||||
|
||||
mkdir -p $INSTALL/usr/lib/xbmc
|
||||
cp $PKG_BUILD/xbmc.bin $INSTALL/usr/lib/xbmc
|
||||
|
@ -19,11 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc"
|
||||
if [ "$PVR" = yes ]; then
|
||||
PKG_VERSION="pvr-11.0.2"
|
||||
else
|
||||
PKG_VERSION="11.0.1"
|
||||
fi
|
||||
PKG_VERSION="11.0.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
@ -46,6 +42,10 @@ PKG_AUTORECONF="no"
|
||||
PKG_DEPENDS="$PKG_DEPENDS Imaging"
|
||||
PKG_DEPENDS="$PKG_DEPENDS simplejson"
|
||||
|
||||
# various PVR clients
|
||||
PKG_DEPENDS="$PKG_DEPENDS xbmc-addon-xvdr xbmc-addon-njoy"
|
||||
PKG_DEPENDS="$PKG_DEPENDS xbmc-addon-xvdr xbmc-addon-vuplus"
|
||||
|
||||
if [ "$DISPLAYSERVER" = "xorg-server" ]; then
|
||||
# for libX11 support
|
||||
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS libX11 libXext"
|
||||
@ -149,8 +149,3 @@ fi
|
||||
if [ "$XVBA" = yes ]; then
|
||||
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS xf86-video-fglrx"
|
||||
fi
|
||||
|
||||
if [ "$PVR" = yes ]; then
|
||||
PKG_DEPENDS="$PKG_DEPENDS xbmc-addon-xvdr xbmc-addon-njoy"
|
||||
PKG_DEPENDS="$PKG_DEPENDS xbmc-addon-xvdr xbmc-addon-vuplus"
|
||||
fi
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,29 +0,0 @@
|
||||
From 35e4a2eb5515fe72d87b6d78b0567609df79df2b Mon Sep 17 00:00:00 2001
|
||||
From: bobo1on1 <bob-nospam-@xbmc.org>
|
||||
Date: Wed, 28 Mar 2012 21:30:25 +0200
|
||||
Subject: [PATCH] fixed: possible deadlock
|
||||
|
||||
---
|
||||
xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 6 ++++--
|
||||
1 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
|
||||
index 0cb6602..1c91341 100644
|
||||
--- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
|
||||
+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
|
||||
@@ -140,8 +140,10 @@ void CPeripheralCecAdapter::Announce(AnnouncementFlag flag, const char *sender,
|
||||
else if (flag == System && !strcmp(sender, "xbmc") && !strcmp(message, "OnSleep"))
|
||||
{
|
||||
// this will also power off devices when we're the active source
|
||||
- CSingleLock lock(m_critSection);
|
||||
- m_bStop = true;
|
||||
+ {
|
||||
+ CSingleLock lock(m_critSection);
|
||||
+ m_bStop = true;
|
||||
+ }
|
||||
WaitForThreadExit(0);
|
||||
}
|
||||
else if (flag == System && !strcmp(sender, "xbmc") && !strcmp(message, "OnWake"))
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,41 +0,0 @@
|
||||
From de4cd8d63257af1cb9060c4b2b304a82655adb99 Mon Sep 17 00:00:00 2001
|
||||
From: bobo1on1 <bob-nospam-@xbmc.org>
|
||||
Date: Wed, 28 Mar 2012 21:31:46 +0200
|
||||
Subject: [PATCH] fixed: make sure the old thread is stopped before starting a
|
||||
new one, fixes throwing an exception in the main thread
|
||||
|
||||
---
|
||||
xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 14 ++++++++------
|
||||
1 files changed, 8 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
|
||||
index 1c91341..a898a16 100644
|
||||
--- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
|
||||
+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
|
||||
@@ -148,15 +148,17 @@ void CPeripheralCecAdapter::Announce(AnnouncementFlag flag, const char *sender,
|
||||
}
|
||||
else if (flag == System && !strcmp(sender, "xbmc") && !strcmp(message, "OnWake"))
|
||||
{
|
||||
- // reconnect to the device
|
||||
- CSingleLock lock(m_critSection);
|
||||
- CLog::Log(LOGDEBUG, "%s - reconnecting to the CEC adapter after standby mode", __FUNCTION__);
|
||||
+ {
|
||||
+ // reconnect to the device
|
||||
+ CSingleLock lock(m_critSection);
|
||||
+ CLog::Log(LOGDEBUG, "%s - reconnecting to the CEC adapter after standby mode", __FUNCTION__);
|
||||
|
||||
- // close the previous connection
|
||||
- m_cecAdapter->Close();
|
||||
+ // close the previous connection
|
||||
+ m_cecAdapter->Close();
|
||||
+ }
|
||||
|
||||
// and open a new one
|
||||
- m_bStop = false;
|
||||
+ StopThread();
|
||||
Create();
|
||||
}
|
||||
}
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,630 +0,0 @@
|
||||
diff -Naur xbmc-pvr-11.0.1/configure.in xbmc-pvr-11.0.1.patch/configure.in
|
||||
--- xbmc-pvr-11.0.1/configure.in 2012-04-17 14:08:05.972587511 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/configure.in 2012-04-17 14:18:39.755586920 +0200
|
||||
@@ -1173,7 +1173,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.5.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
|
||||
+ PKG_CHECK_MODULES([CEC],[libcec >= 1.6.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
|
||||
|
||||
if test "x$use_libcec" != "xno"; then
|
||||
INCLUDES="$INCLUDES $CEC_CFLAGS"
|
||||
diff -Naur xbmc-pvr-11.0.1/language/English/strings.xml xbmc-pvr-11.0.1.patch/language/English/strings.xml
|
||||
--- xbmc-pvr-11.0.1/language/English/strings.xml 2012-04-17 14:08:05.974587546 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/language/English/strings.xml 2012-04-17 14:18:39.757586958 +0200
|
||||
@@ -2853,7 +2853,7 @@
|
||||
<string id="36011">Could not detect the CEC port. Set it up manually.</string>
|
||||
<string id="36012">Could not initialise the CEC adapter. Check your settings.</string>
|
||||
<string id="36013">Unsupported libCEC interface version. %d is greater than the version XBMC supports (%d)</string>
|
||||
- <string id="36014">Put this PC in standby mode when the TV is switched off</string>
|
||||
+ <string id="36014">When the TV is switched off</string>
|
||||
<string id="36015">HDMI port number</string>
|
||||
<string id="36016">Connected</string> <!-- max. 13 characters -->
|
||||
<string id="36017">Adapter found, but libCEC is not available</string>
|
||||
@@ -2865,4 +2865,7 @@
|
||||
<string id="36023">Configuration updated</string>
|
||||
<string id="36024">Failed to set the new configuration. Please check your settings.</string>
|
||||
<string id="36025">Send 'inactive source' command when stopping XBMC</string>
|
||||
+ <string id="36026">Put devices in standby mode when putting the PC in standby</string>
|
||||
+ <string id="36027">This device needs servicing</string>
|
||||
+ <string id="36028">Ignore</string>
|
||||
</strings>
|
||||
diff -Naur xbmc-pvr-11.0.1/system/peripherals.xml xbmc-pvr-11.0.1.patch/system/peripherals.xml
|
||||
--- xbmc-pvr-11.0.1/system/peripherals.xml 2012-04-17 14:08:05.975587564 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/system/peripherals.xml 2012-04-17 14:18:39.757586958 +0200
|
||||
@@ -14,13 +14,14 @@
|
||||
<setting key="wake_devices" type="string" value="0" label="36007" order="3" />
|
||||
<setting key="standby_devices" type="string" value="0" label="36008" order="4" />
|
||||
<setting key="cec_standby_screensaver" type="bool" value="1" label="36009" order="5" />
|
||||
- <setting key="standby_pc_on_tv_standby" type="bool" value="1" label="36014" order="6" />
|
||||
- <setting key="send_inactive_source" type="bool" value="1" label="36025" order="7" />
|
||||
- <setting key="use_tv_menu_language" type="bool" value="1" label="36018" order="8" />
|
||||
- <setting key="physical_address" type="string" label="36021" value="0" order="9" />
|
||||
- <setting key="cec_hdmi_port" type="int" value="1" min="1" max="16" label="36015" order="10" />
|
||||
- <setting key="connected_device" type="int" label="36019" value="0" min="0" max="15" step="1" order="11" />
|
||||
- <setting key="port" type="string" value="" label="36022" order="12" />
|
||||
+ <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36014" order="6" lvalues="36028|13005|13011" />
|
||||
+ <setting key="standby_tv_on_pc_standby" type="bool" value="1" label="36026" order="7" />
|
||||
+ <setting key="send_inactive_source" type="bool" value="1" label="36025" order="8" />
|
||||
+ <setting key="use_tv_menu_language" type="bool" value="1" label="36018" order="9" />
|
||||
+ <setting key="physical_address" type="string" label="36021" value="0" order="10" />
|
||||
+ <setting key="cec_hdmi_port" type="int" value="1" min="1" max="15" label="36015" order="11" />
|
||||
+ <setting key="connected_device" type="int" label="36019" value="0" min="0" max="15" step="1" order="12" />
|
||||
+ <setting key="port" type="string" value="" label="36022" order="13" />
|
||||
|
||||
<setting key="tv_vendor" type="int" value="0" configurable="0" />
|
||||
<setting key="device_name" type="string" value="XBMC" configurable="0" />
|
||||
diff -Naur xbmc-pvr-11.0.1/xbmc/peripherals/bus/PeripheralBus.cpp xbmc-pvr-11.0.1.patch/xbmc/peripherals/bus/PeripheralBus.cpp
|
||||
--- xbmc-pvr-11.0.1/xbmc/peripherals/bus/PeripheralBus.cpp 2012-03-27 17:55:34.000000000 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/xbmc/peripherals/bus/PeripheralBus.cpp 2012-04-17 14:18:39.758586977 +0200
|
||||
@@ -323,6 +323,7 @@
|
||||
peripheralFile->SetProperty("bus", PeripheralTypeTranslator::BusTypeToString(peripheral->GetBusType()));
|
||||
peripheralFile->SetProperty("location", peripheral->Location());
|
||||
peripheralFile->SetProperty("class", PeripheralTypeTranslator::TypeToString(peripheral->Type()));
|
||||
+ peripheralFile->SetProperty("version", peripheral->GetVersionInfo());
|
||||
items.Add(peripheralFile);
|
||||
}
|
||||
}
|
||||
diff -Naur xbmc-pvr-11.0.1/xbmc/peripherals/devices/PeripheralCecAdapter.cpp xbmc-pvr-11.0.1.patch/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
|
||||
--- xbmc-pvr-11.0.1/xbmc/peripherals/devices/PeripheralCecAdapter.cpp 2012-04-17 14:17:35.207364830 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/xbmc/peripherals/devices/PeripheralCecAdapter.cpp 2012-04-17 14:18:39.760587015 +0200
|
||||
@@ -41,7 +41,7 @@
|
||||
using namespace ANNOUNCEMENT;
|
||||
using namespace CEC;
|
||||
|
||||
-#define CEC_LIB_SUPPORTED_VERSION 0x1500
|
||||
+#define CEC_LIB_SUPPORTED_VERSION 0x1600
|
||||
|
||||
/* time in seconds to ignore standby commands from devices after the screensaver has been activated */
|
||||
#define SCREENSAVER_TIMEOUT 10
|
||||
@@ -80,7 +80,9 @@
|
||||
m_lastKeypress(0),
|
||||
m_lastChange(VOLUME_CHANGE_NONE),
|
||||
m_iExitCode(0),
|
||||
- m_bIsMuted(false) // TODO fetch the correct initial value when system audiostatus is implemented in libCEC
|
||||
+ m_bIsMuted(false), // TODO fetch the correct initial value when system audiostatus is implemented in libCEC
|
||||
+ m_bGoingToStandby(false),
|
||||
+ m_bIsRunning(false)
|
||||
{
|
||||
m_button.iButton = 0;
|
||||
m_button.iDuration = 0;
|
||||
@@ -96,6 +98,7 @@
|
||||
|
||||
m_bStop = true;
|
||||
StopThread(true);
|
||||
+ CAnnouncementManager::RemoveAnnouncer(this);
|
||||
|
||||
if (m_dll && m_cecAdapter)
|
||||
{
|
||||
@@ -110,7 +113,11 @@
|
||||
{
|
||||
if (flag == System && !strcmp(sender, "xbmc") && !strcmp(message, "OnQuit") && m_bIsReady)
|
||||
{
|
||||
- m_iExitCode = data.asInteger(0);
|
||||
+ {
|
||||
+ CSingleLock lock(m_critSection);
|
||||
+ m_iExitCode = data.asInteger(0);
|
||||
+ }
|
||||
+ CAnnouncementManager::RemoveAnnouncer(this);
|
||||
StopThread(false);
|
||||
}
|
||||
else if (flag == GUI && !strcmp(sender, "xbmc") && !strcmp(message, "OnScreensaverDeactivated") && m_bIsReady)
|
||||
@@ -142,23 +149,22 @@
|
||||
// this will also power off devices when we're the active source
|
||||
{
|
||||
CSingleLock lock(m_critSection);
|
||||
- m_bStop = true;
|
||||
+ m_bGoingToStandby = false;
|
||||
}
|
||||
- WaitForThreadExit(0);
|
||||
+ StopThread();
|
||||
}
|
||||
else if (flag == System && !strcmp(sender, "xbmc") && !strcmp(message, "OnWake"))
|
||||
{
|
||||
{
|
||||
- // reconnect to the device
|
||||
CSingleLock lock(m_critSection);
|
||||
- CLog::Log(LOGDEBUG, "%s - reconnecting to the CEC adapter after standby mode", __FUNCTION__);
|
||||
-
|
||||
- // close the previous connection
|
||||
- m_cecAdapter->Close();
|
||||
+ m_iExitCode = EXITCODE_RESTARTAPP;
|
||||
}
|
||||
|
||||
- // and open a new one
|
||||
+ CLog::Log(LOGDEBUG, "%s - reconnecting to the CEC adapter after standby mode", __FUNCTION__);
|
||||
+ CAnnouncementManager::RemoveAnnouncer(this);
|
||||
StopThread();
|
||||
+
|
||||
+ // and open a new one
|
||||
Create();
|
||||
}
|
||||
}
|
||||
@@ -172,6 +178,7 @@
|
||||
m_callbacks.CBCecKeyPress = &CecKeyPress;
|
||||
m_callbacks.CBCecCommand = &CecCommand;
|
||||
m_callbacks.CBCecConfigurationChanged = &CecConfiguration;
|
||||
+ m_callbacks.CBCecAlert = &CecAlert;
|
||||
m_configuration.callbackParam = this;
|
||||
m_configuration.callbacks = &m_callbacks;
|
||||
|
||||
@@ -200,6 +207,8 @@
|
||||
else
|
||||
{
|
||||
CLog::Log(LOGDEBUG, "%s - using libCEC v%s", __FUNCTION__, m_cecAdapter->ToString((cec_server_version)m_configuration.serverVersion));
|
||||
+ if (m_configuration.serverVersion >= CEC_SERVER_VERSION_1_6_0)
|
||||
+ m_strVersionInfo.Format("%d", m_configuration.iFirmwareVersion);
|
||||
}
|
||||
|
||||
m_bStarted = true;
|
||||
@@ -297,6 +306,13 @@
|
||||
if (!OpenConnection())
|
||||
return;
|
||||
|
||||
+ {
|
||||
+ CSingleLock lock(m_critSection);
|
||||
+ m_iExitCode = EXITCODE_QUIT;
|
||||
+ m_bGoingToStandby = false;
|
||||
+ m_bIsRunning = true;
|
||||
+ }
|
||||
+
|
||||
CAnnouncementManager::AddAnnouncer(this);
|
||||
|
||||
m_queryThread = new CPeripheralCecAdapterUpdateThread(this, &m_configuration);
|
||||
@@ -312,8 +328,17 @@
|
||||
}
|
||||
|
||||
delete m_queryThread;
|
||||
+ m_queryThread = NULL;
|
||||
+
|
||||
+ bool bSendStandbyCommands(false);
|
||||
+ {
|
||||
+ CSingleLock lock(m_critSection);
|
||||
+ bSendStandbyCommands = m_iExitCode != EXITCODE_REBOOT &&
|
||||
+ m_iExitCode != EXITCODE_RESTARTAPP &&
|
||||
+ (!m_bGoingToStandby || GetSettingBool("standby_tv_on_pc_standby"));
|
||||
+ }
|
||||
|
||||
- if (m_iExitCode != EXITCODE_REBOOT)
|
||||
+ if (bSendStandbyCommands)
|
||||
{
|
||||
if (m_cecAdapter->IsLibCECActiveSource())
|
||||
{
|
||||
@@ -337,7 +362,12 @@
|
||||
m_cecAdapter->Close();
|
||||
|
||||
CLog::Log(LOGDEBUG, "%s - CEC adapter processor thread ended", __FUNCTION__);
|
||||
- m_bStarted = false;
|
||||
+
|
||||
+ {
|
||||
+ CSingleLock lock(m_critSection);
|
||||
+ m_bStarted = false;
|
||||
+ m_bIsRunning = false;
|
||||
+ }
|
||||
}
|
||||
|
||||
bool CPeripheralCecAdapter::HasConnectedAudioSystem(void)
|
||||
@@ -556,11 +586,15 @@
|
||||
case CEC_OPCODE_STANDBY:
|
||||
/* a device was put in standby mode */
|
||||
CLog::Log(LOGDEBUG, "%s - device %1x was put in standby mode", __FUNCTION__, command.initiator);
|
||||
- if (command.initiator == CECDEVICE_TV && adapter->m_configuration.bPowerOffOnStandby == 1 &&
|
||||
+ if (command.initiator == CECDEVICE_TV &&
|
||||
+ (adapter->m_configuration.bPowerOffOnStandby == 1 || adapter->m_configuration.bShutdownOnStandby == 1) &&
|
||||
(!adapter->m_screensaverLastActivated.IsValid() || CDateTime::GetCurrentDateTime() - adapter->m_screensaverLastActivated > CDateTimeSpan(0, 0, 0, SCREENSAVER_TIMEOUT)))
|
||||
{
|
||||
adapter->m_bStarted = false;
|
||||
- g_application.getApplicationMessenger().Suspend();
|
||||
+ if (adapter->m_configuration.bPowerOffOnStandby == 1)
|
||||
+ g_application.getApplicationMessenger().Suspend();
|
||||
+ else if (adapter->m_configuration.bShutdownOnStandby == 1)
|
||||
+ g_application.getApplicationMessenger().Shutdown();
|
||||
}
|
||||
break;
|
||||
case CEC_OPCODE_SET_MENU_LANGUAGE:
|
||||
@@ -634,6 +668,30 @@
|
||||
return 1;
|
||||
}
|
||||
|
||||
+int CPeripheralCecAdapter::CecAlert(void *cbParam, const libcec_alert alert, const libcec_parameter &data)
|
||||
+{
|
||||
+ (void)data;
|
||||
+
|
||||
+ CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
|
||||
+ if (!adapter)
|
||||
+ return 0;
|
||||
+
|
||||
+ int iAlertString(0);
|
||||
+ switch (alert)
|
||||
+ {
|
||||
+ case CEC_ALERT_SERVICE_DEVICE:
|
||||
+ iAlertString = 36027;
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (iAlertString)
|
||||
+ CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Info, g_localizeStrings.Get(36000), g_localizeStrings.Get(iAlertString));
|
||||
+
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
int CPeripheralCecAdapter::CecKeyPress(void *cbParam, const cec_keypress &key)
|
||||
{
|
||||
CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
|
||||
@@ -695,6 +753,10 @@
|
||||
case CEC_USER_CONTROL_CODE_RIGHT_DOWN:
|
||||
iButton = XINPUT_IR_REMOTE_RIGHT;
|
||||
break;
|
||||
+ case CEC_USER_CONTROL_CODE_NEXT_FAVORITE:
|
||||
+ case CEC_USER_CONTROL_CODE_SETUP_MENU:
|
||||
+ case CEC_USER_CONTROL_CODE_CONTENTS_MENU:
|
||||
+ case CEC_USER_CONTROL_CODE_FAVORITE_MENU:
|
||||
case CEC_USER_CONTROL_CODE_ROOT_MENU:
|
||||
iButton = XINPUT_IR_REMOTE_MENU;
|
||||
break;
|
||||
@@ -711,7 +773,11 @@
|
||||
iButton = XINPUT_IR_REMOTE_CHANNEL_PLUS;
|
||||
break;
|
||||
case CEC_USER_CONTROL_CODE_PREVIOUS_CHANNEL:
|
||||
+#if defined(XINPUT_IR_REMOTE_TELETEXT)
|
||||
+ iButton = XINPUT_IR_REMOTE_TELETEXT; // only supported by the pvr branch
|
||||
+#else
|
||||
iButton = XINPUT_IR_REMOTE_BACK;
|
||||
+#endif
|
||||
break;
|
||||
case CEC_USER_CONTROL_CODE_SOUND_SELECT:
|
||||
iButton = XINPUT_IR_REMOTE_LANGUAGE;
|
||||
@@ -806,13 +872,23 @@
|
||||
case CEC_USER_CONTROL_CODE_F4_YELLOW:
|
||||
iButton = XINPUT_IR_REMOTE_YELLOW;
|
||||
break;
|
||||
+ case CEC_USER_CONTROL_CODE_ELECTRONIC_PROGRAM_GUIDE:
|
||||
+#if defined(XINPUT_IR_REMOTE_GUIDE)
|
||||
+ iButton = XINPUT_IR_REMOTE_GUIDE;
|
||||
+#else
|
||||
+ bHasButton = false;
|
||||
+#endif
|
||||
+ break;
|
||||
+ case CEC_USER_CONTROL_CODE_AN_CHANNELS_LIST:
|
||||
+#if defined(XINPUT_IR_REMOTE_LIVE_TV)
|
||||
+ iButton = XINPUT_IR_REMOTE_LIVE_TV;
|
||||
+#else
|
||||
+ bHasButton = false;
|
||||
+#endif
|
||||
+ break;
|
||||
case CEC_USER_CONTROL_CODE_POWER_ON_FUNCTION:
|
||||
case CEC_USER_CONTROL_CODE_EJECT:
|
||||
- case CEC_USER_CONTROL_CODE_SETUP_MENU:
|
||||
- case CEC_USER_CONTROL_CODE_CONTENTS_MENU:
|
||||
- case CEC_USER_CONTROL_CODE_FAVORITE_MENU:
|
||||
case CEC_USER_CONTROL_CODE_DOT:
|
||||
- case CEC_USER_CONTROL_CODE_NEXT_FAVORITE:
|
||||
case CEC_USER_CONTROL_CODE_INPUT_SELECT:
|
||||
case CEC_USER_CONTROL_CODE_INITIAL_CONFIGURATION:
|
||||
case CEC_USER_CONTROL_CODE_HELP:
|
||||
@@ -821,7 +897,6 @@
|
||||
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_ELECTRONIC_PROGRAM_GUIDE:
|
||||
case CEC_USER_CONTROL_CODE_TIMER_PROGRAMMING:
|
||||
case CEC_USER_CONTROL_CODE_PLAY_FUNCTION:
|
||||
case CEC_USER_CONTROL_CODE_PAUSE_PLAY_FUNCTION:
|
||||
@@ -894,11 +969,15 @@
|
||||
else if (bEnabled && !m_cecAdapter && m_bStarted)
|
||||
InitialiseFeature(FEATURE_CEC);
|
||||
}
|
||||
- else
|
||||
+ else if (IsRunning())
|
||||
{
|
||||
SetConfigurationFromSettings();
|
||||
m_queryThread->UpdateConfiguration(&m_configuration);
|
||||
}
|
||||
+ else
|
||||
+ {
|
||||
+ InitialiseFeature(FEATURE_CEC);
|
||||
+ }
|
||||
}
|
||||
|
||||
int CPeripheralCecAdapter::CecLogMessage(void *cbParam, const cec_log_message &message)
|
||||
@@ -962,7 +1041,7 @@
|
||||
|
||||
// set the physical address, when baseDevice or iHDMIPort are not set
|
||||
if (m_configuration.baseDevice == CECDEVICE_UNKNOWN ||
|
||||
- m_configuration.iHDMIPort == 0 || m_configuration.iHDMIPort > 4)
|
||||
+ m_configuration.iHDMIPort == 0 || m_configuration.iHDMIPort > 15)
|
||||
{
|
||||
m_configuration.iPhysicalAddress = config.iPhysicalAddress;
|
||||
CStdString strPhysicalAddress;
|
||||
@@ -977,7 +1056,7 @@
|
||||
// set the devices to wake when starting
|
||||
m_configuration.wakeDevices = config.wakeDevices;
|
||||
CStdString strWakeDevices;
|
||||
- for (unsigned int iPtr = 0; iPtr <= 16; iPtr++)
|
||||
+ for (unsigned int iPtr = CECDEVICE_TV; iPtr <= CECDEVICE_BROADCAST; iPtr++)
|
||||
if (config.wakeDevices[iPtr])
|
||||
strWakeDevices.AppendFormat(" %X", iPtr);
|
||||
SetSetting("wake_devices", strWakeDevices.Trim());
|
||||
@@ -985,10 +1064,10 @@
|
||||
// set the devices to power off when stopping
|
||||
m_configuration.powerOffDevices = config.powerOffDevices;
|
||||
CStdString strPowerOffDevices;
|
||||
- for (unsigned int iPtr = 0; iPtr <= 16; iPtr++)
|
||||
+ for (unsigned int iPtr = CECDEVICE_TV; iPtr <= CECDEVICE_BROADCAST; iPtr++)
|
||||
if (config.powerOffDevices[iPtr])
|
||||
strPowerOffDevices.AppendFormat(" %X", iPtr);
|
||||
- SetSetting("wake_devices", strPowerOffDevices.Trim());
|
||||
+ SetSetting("standby_devices", strPowerOffDevices.Trim());
|
||||
|
||||
// set the boolean settings
|
||||
m_configuration.bUseTVMenuLanguage = config.bUseTVMenuLanguage;
|
||||
@@ -1001,17 +1080,27 @@
|
||||
SetSetting("cec_standby_screensaver", m_configuration.bPowerOffScreensaver == 1);
|
||||
|
||||
m_configuration.bPowerOffOnStandby = config.bPowerOffOnStandby;
|
||||
- SetSetting("standby_pc_on_tv_standby", m_configuration.bPowerOffOnStandby == 1);
|
||||
|
||||
if (config.serverVersion >= CEC_SERVER_VERSION_1_5_1)
|
||||
m_configuration.bSendInactiveSource = config.bSendInactiveSource;
|
||||
SetSetting("send_inactive_source", m_configuration.bSendInactiveSource == 1);
|
||||
+
|
||||
+ if (config.serverVersion >= CEC_SERVER_VERSION_1_6_0)
|
||||
+ {
|
||||
+ m_configuration.iFirmwareVersion = config.iFirmwareVersion;
|
||||
+ m_strVersionInfo.Format("%d", m_configuration.iFirmwareVersion);
|
||||
+ m_configuration.bShutdownOnStandby = config.bShutdownOnStandby;
|
||||
+ }
|
||||
+
|
||||
+ SetSetting("standby_pc_on_tv_standby",
|
||||
+ m_configuration.bPowerOffOnStandby == 1 ? 13011 :
|
||||
+ m_configuration.bShutdownOnStandby == 1 ? 13005 : 36028);
|
||||
}
|
||||
|
||||
void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
|
||||
{
|
||||
- // client version 1.5.0
|
||||
- m_configuration.clientVersion = CEC_CLIENT_VERSION_1_5_1;
|
||||
+ // client version 1.6.0
|
||||
+ m_configuration.clientVersion = CEC_CLIENT_VERSION_1_6_0;
|
||||
|
||||
// device name 'XBMC'
|
||||
snprintf(m_configuration.strDeviceName, 13, "%s", GetSettingString("device_name").c_str());
|
||||
@@ -1061,15 +1150,16 @@
|
||||
m_configuration.powerOffDevices.Clear();
|
||||
ReadLogicalAddresses(strStandbyDevices, m_configuration.powerOffDevices);
|
||||
|
||||
- // always get the settings from the rom, when supported by the firmware
|
||||
- m_configuration.bGetSettingsFromROM = 1;
|
||||
-
|
||||
// read the boolean settings
|
||||
m_configuration.bUseTVMenuLanguage = GetSettingBool("use_tv_menu_language") ? 1 : 0;
|
||||
m_configuration.bActivateSource = GetSettingBool("activate_source") ? 1 : 0;
|
||||
m_configuration.bPowerOffScreensaver = GetSettingBool("cec_standby_screensaver") ? 1 : 0;
|
||||
- m_configuration.bPowerOffOnStandby = GetSettingBool("standby_pc_on_tv_standby") ? 1 : 0;
|
||||
m_configuration.bSendInactiveSource = GetSettingBool("send_inactive_source") ? 1 : 0;
|
||||
+
|
||||
+ // read the mutually exclusive boolean settings
|
||||
+ int iStandbyAction(GetSettingInt("standby_pc_on_tv_standby"));
|
||||
+ m_configuration.bPowerOffOnStandby = iStandbyAction == 13011 ? 1 : 0;
|
||||
+ m_configuration.bShutdownOnStandby = iStandbyAction == 13005 ? 1 : 0;
|
||||
}
|
||||
|
||||
void CPeripheralCecAdapter::ReadLogicalAddresses(const CStdString &strString, cec_logical_addresses &addresses)
|
||||
@@ -1203,6 +1293,12 @@
|
||||
return true;
|
||||
}
|
||||
|
||||
+bool CPeripheralCecAdapter::IsRunning(void) const
|
||||
+{
|
||||
+ CSingleLock lock(m_critSection);
|
||||
+ return m_bIsRunning;
|
||||
+}
|
||||
+
|
||||
void CPeripheralCecAdapterUpdateThread::Process(void)
|
||||
{
|
||||
// set the initial configuration
|
||||
diff -Naur xbmc-pvr-11.0.1/xbmc/peripherals/devices/PeripheralCecAdapter.h xbmc-pvr-11.0.1.patch/xbmc/peripherals/devices/PeripheralCecAdapter.h
|
||||
--- xbmc-pvr-11.0.1/xbmc/peripherals/devices/PeripheralCecAdapter.h 2012-04-17 14:08:06.071589381 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/xbmc/peripherals/devices/PeripheralCecAdapter.h 2012-04-17 14:18:39.761587034 +0200
|
||||
@@ -115,6 +115,8 @@
|
||||
static int CecLogMessage(void *cbParam, const CEC::cec_log_message &message);
|
||||
static int CecCommand(void *cbParam, const CEC::cec_command &command);
|
||||
static int CecConfiguration(void *cbParam, const CEC::libcec_configuration &config);
|
||||
+ static int CecAlert(void *cbParam, const CEC::libcec_alert alert, const CEC::libcec_parameter &data);
|
||||
+ bool IsRunning(void) const;
|
||||
|
||||
virtual bool GetNextKey(void);
|
||||
virtual bool GetNextCecKey(CEC::cec_keypress &key);
|
||||
@@ -140,6 +142,8 @@
|
||||
CecVolumeChange m_lastChange;
|
||||
int m_iExitCode;
|
||||
bool m_bIsMuted;
|
||||
+ bool m_bGoingToStandby;
|
||||
+ bool m_bIsRunning;
|
||||
CPeripheralCecAdapterUpdateThread*m_queryThread;
|
||||
CEC::ICECCallbacks m_callbacks;
|
||||
CCriticalSection m_critSection;
|
||||
diff -Naur xbmc-pvr-11.0.1/xbmc/peripherals/devices/Peripheral.cpp xbmc-pvr-11.0.1.patch/xbmc/peripherals/devices/Peripheral.cpp
|
||||
--- xbmc-pvr-11.0.1/xbmc/peripherals/devices/Peripheral.cpp 2012-04-17 14:08:06.104590004 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/xbmc/peripherals/devices/Peripheral.cpp 2012-04-17 14:18:39.752586865 +0200
|
||||
@@ -211,7 +211,15 @@
|
||||
case SETTINGS_TYPE_INT:
|
||||
{
|
||||
const CSettingInt *mappedSetting = (const CSettingInt *) setting;
|
||||
- CSettingInt *intSetting = new CSettingInt(mappedSetting->GetOrder(), strKey.c_str(), mappedSetting->GetLabel(), mappedSetting->GetData(), mappedSetting->m_iMin, mappedSetting->m_iStep, mappedSetting->m_iMax, mappedSetting->GetControlType(), mappedSetting->m_strFormat);
|
||||
+ CSettingInt *intSetting(NULL);
|
||||
+ if (mappedSetting->GetControlType() == SPIN_CONTROL_INT)
|
||||
+ {
|
||||
+ intSetting = new CSettingInt(mappedSetting->GetOrder(), strKey.c_str(), mappedSetting->GetLabel(), mappedSetting->GetData(), mappedSetting->m_iMin, mappedSetting->m_iStep, mappedSetting->m_iMax, mappedSetting->GetControlType(), mappedSetting->m_strFormat);
|
||||
+ }
|
||||
+ else if (mappedSetting->GetControlType() == SPIN_CONTROL_TEXT)
|
||||
+ {
|
||||
+ intSetting = new CSettingInt(mappedSetting->GetOrder(), strKey.c_str(), mappedSetting->GetLabel(), mappedSetting->GetData(), mappedSetting->m_entries, mappedSetting->GetControlType());
|
||||
+ }
|
||||
if (intSetting)
|
||||
{
|
||||
intSetting->SetVisible(mappedSetting->IsVisible());
|
||||
diff -Naur xbmc-pvr-11.0.1/xbmc/peripherals/devices/Peripheral.h xbmc-pvr-11.0.1.patch/xbmc/peripherals/devices/Peripheral.h
|
||||
--- xbmc-pvr-11.0.1/xbmc/peripherals/devices/Peripheral.h 2012-04-17 14:08:06.104590004 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/xbmc/peripherals/devices/Peripheral.h 2012-04-17 14:18:39.758586977 +0200
|
||||
@@ -53,6 +53,7 @@
|
||||
const CStdString &DeviceName(void) const { return m_strDeviceName; }
|
||||
bool IsHidden(void) const { return m_bHidden; }
|
||||
void SetHidden(bool bSetTo = true) { m_bHidden = bSetTo; }
|
||||
+ const CStdString &GetVersionInfo(void) const { return m_strVersionInfo; }
|
||||
|
||||
/*!
|
||||
* @brief Check whether this device has the given feature.
|
||||
@@ -161,6 +162,7 @@
|
||||
CStdString m_strVendorId;
|
||||
int m_iProductId;
|
||||
CStdString m_strProductId;
|
||||
+ CStdString m_strVersionInfo;
|
||||
bool m_bInitialised;
|
||||
bool m_bHidden;
|
||||
bool m_bError;
|
||||
diff -Naur xbmc-pvr-11.0.1/xbmc/peripherals/dialogs/GUIDialogPeripheralSettings.cpp xbmc-pvr-11.0.1.patch/xbmc/peripherals/dialogs/GUIDialogPeripheralSettings.cpp
|
||||
--- xbmc-pvr-11.0.1/xbmc/peripherals/dialogs/GUIDialogPeripheralSettings.cpp 2012-04-17 14:08:06.105590023 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/xbmc/peripherals/dialogs/GUIDialogPeripheralSettings.cpp 2012-04-17 14:18:39.753586884 +0200
|
||||
@@ -51,6 +51,7 @@
|
||||
delete m_item;
|
||||
m_boolSettings.clear();
|
||||
m_intSettings.clear();
|
||||
+ m_intTextSettings.clear();
|
||||
m_floatSettings.clear();
|
||||
m_stringSettings.clear();
|
||||
m_settings.clear();
|
||||
@@ -96,8 +97,23 @@
|
||||
CSettingInt *intSetting = (CSettingInt *) setting;
|
||||
if (intSetting)
|
||||
{
|
||||
- m_intSettings.insert(make_pair(CStdString(intSetting->GetSetting()), (float) intSetting->GetData()));
|
||||
- AddSlider(intSetting->GetOrder(), intSetting->GetLabel(), &m_intSettings[intSetting->GetSetting()], (float)intSetting->m_iMin, (float)intSetting->m_iStep, (float)intSetting->m_iMax, CGUIDialogVideoSettings::FormatInteger, false);
|
||||
+ if (intSetting->GetControlType() == SPIN_CONTROL_INT)
|
||||
+ {
|
||||
+ m_intSettings.insert(make_pair(CStdString(intSetting->GetSetting()), (float) intSetting->GetData()));
|
||||
+ AddSlider(intSetting->GetOrder(), intSetting->GetLabel(), &m_intSettings[intSetting->GetSetting()], (float)intSetting->m_iMin, (float)intSetting->m_iStep, (float)intSetting->m_iMax, CGUIDialogVideoSettings::FormatInteger, false);
|
||||
+ }
|
||||
+ else if (intSetting->GetControlType() == SPIN_CONTROL_TEXT)
|
||||
+ {
|
||||
+ m_intTextSettings.insert(make_pair(CStdString(intSetting->GetSetting()), intSetting->GetData()));
|
||||
+ vector<pair<int, int> > entries;
|
||||
+ map<int, int>::iterator entriesItr = intSetting->m_entries.begin();
|
||||
+ while (entriesItr != intSetting->m_entries.end())
|
||||
+ {
|
||||
+ entries.push_back(make_pair(entriesItr->first, entriesItr->second));
|
||||
+ ++entriesItr;
|
||||
+ }
|
||||
+ AddSpin(intSetting->GetOrder(), intSetting->GetLabel(), &m_intTextSettings[intSetting->GetSetting()], entries);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -160,6 +176,13 @@
|
||||
++intItr;
|
||||
}
|
||||
|
||||
+ map<CStdString, int>::iterator intTextItr = m_intTextSettings.begin();
|
||||
+ while (intTextItr != m_intTextSettings.end())
|
||||
+ {
|
||||
+ peripheral->SetSetting((*intTextItr).first, (*intTextItr).second);
|
||||
+ ++intTextItr;
|
||||
+ }
|
||||
+
|
||||
map<CStdString, float>::iterator floatItr = m_floatSettings.begin();
|
||||
while (floatItr != m_floatSettings.end())
|
||||
{
|
||||
@@ -210,6 +233,7 @@
|
||||
/* clear the settings */
|
||||
m_boolSettings.clear();
|
||||
m_intSettings.clear();
|
||||
+ m_intTextSettings.clear();
|
||||
m_floatSettings.clear();
|
||||
m_stringSettings.clear();
|
||||
m_settings.clear();
|
||||
diff -Naur xbmc-pvr-11.0.1/xbmc/peripherals/dialogs/GUIDialogPeripheralSettings.h xbmc-pvr-11.0.1.patch/xbmc/peripherals/dialogs/GUIDialogPeripheralSettings.h
|
||||
--- xbmc-pvr-11.0.1/xbmc/peripherals/dialogs/GUIDialogPeripheralSettings.h 2012-03-27 17:55:34.000000000 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/xbmc/peripherals/dialogs/GUIDialogPeripheralSettings.h 2012-04-17 14:18:39.753586884 +0200
|
||||
@@ -44,6 +44,7 @@
|
||||
bool m_bIsInitialising;
|
||||
std::map<CStdString, bool> m_boolSettings;
|
||||
std::map<CStdString, float> m_intSettings;
|
||||
+ std::map<CStdString, int> m_intTextSettings;
|
||||
std::map<CStdString, float> m_floatSettings;
|
||||
std::map<CStdString, CStdString> m_stringSettings;
|
||||
};
|
||||
diff -Naur xbmc-pvr-11.0.1/xbmc/peripherals/Peripherals.cpp xbmc-pvr-11.0.1.patch/xbmc/peripherals/Peripherals.cpp
|
||||
--- xbmc-pvr-11.0.1/xbmc/peripherals/Peripherals.cpp 2012-04-17 14:08:06.106590043 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/xbmc/peripherals/Peripherals.cpp 2012-04-17 14:18:39.752586865 +0200
|
||||
@@ -41,6 +41,7 @@
|
||||
#include "guilib/LocalizeStrings.h"
|
||||
#include "dialogs/GUIDialogKaiToast.h"
|
||||
#include "utils/StringUtils.h"
|
||||
+#include "Util.h"
|
||||
#include "guilib/Key.h"
|
||||
|
||||
using namespace PERIPHERALS;
|
||||
@@ -486,29 +487,46 @@
|
||||
float fMax = currentNode->Attribute("max") ? (float) atof(currentNode->Attribute("max")) : 0;
|
||||
setting = new CSettingFloat(0, strKey, iLabelId, fValue, fMin, fStep, fMax, SPIN_CONTROL_FLOAT);
|
||||
}
|
||||
+ else if (strSettingsType.Equals("enum"))
|
||||
+ {
|
||||
+ CStdString strEnums(currentNode->Attribute("lvalues"));
|
||||
+ if (!strEnums.IsEmpty())
|
||||
+ {
|
||||
+ map<int,int> enums;
|
||||
+ vector<CStdString> valuesVec;
|
||||
+ CUtil::Tokenize(strEnums, valuesVec, "|");
|
||||
+ for (unsigned int i = 0; i < valuesVec.size(); i++)
|
||||
+ enums.insert(make_pair(atoi(valuesVec[i]), atoi(valuesVec[i])));
|
||||
+ int iValue = currentNode->Attribute("value") ? atoi(currentNode->Attribute("value")) : 0;
|
||||
+ setting = new CSettingInt(0, strKey, iLabelId, iValue, enums, SPIN_CONTROL_TEXT);
|
||||
+ }
|
||||
+ }
|
||||
else
|
||||
{
|
||||
CStdString strValue(currentNode->Attribute("value"));
|
||||
setting = new CSettingString(0, strKey, iLabelId, strValue, EDIT_CONTROL_INPUT, !bConfigurable, -1);
|
||||
}
|
||||
|
||||
- //TODO add more types if needed
|
||||
+ if (setting)
|
||||
+ {
|
||||
+ //TODO add more types if needed
|
||||
|
||||
- /* set the visibility */
|
||||
- setting->SetVisible(bConfigurable);
|
||||
+ /* set the visibility */
|
||||
+ setting->SetVisible(bConfigurable);
|
||||
|
||||
- /* set the order */
|
||||
- int iOrder(0);
|
||||
- currentNode->Attribute("order", &iOrder);
|
||||
- /* if the order attribute is invalid or 0, then the setting will be added at the end */
|
||||
- if (iOrder < 0)
|
||||
- iOrder = 0;
|
||||
- setting->SetOrder(iOrder);
|
||||
- if (iOrder > iMaxOrder)
|
||||
- iMaxOrder = iOrder;
|
||||
+ /* set the order */
|
||||
+ int iOrder(0);
|
||||
+ currentNode->Attribute("order", &iOrder);
|
||||
+ /* if the order attribute is invalid or 0, then the setting will be added at the end */
|
||||
+ if (iOrder < 0)
|
||||
+ iOrder = 0;
|
||||
+ setting->SetOrder(iOrder);
|
||||
+ if (iOrder > iMaxOrder)
|
||||
+ iMaxOrder = iOrder;
|
||||
|
||||
- /* and add this new setting */
|
||||
- m_settings[strKey] = setting;
|
||||
+ /* and add this new setting */
|
||||
+ m_settings[strKey] = setting;
|
||||
+ }
|
||||
|
||||
currentNode = currentNode->NextSiblingElement("setting");
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,39 +0,0 @@
|
||||
diff -Naur xbmc-9389dc8/configure.in xbmc-9389dc8.patch/configure.in
|
||||
--- xbmc-9389dc8/configure.in 2011-09-01 17:21:47.000000000 +0200
|
||||
+++ xbmc-9389dc8.patch/configure.in 2011-09-01 23:30:40.419399392 +0200
|
||||
@@ -428,6 +428,14 @@
|
||||
esac
|
||||
AC_SUBST([ARCH])
|
||||
|
||||
+AC_CHECK_PROG(HAVE_GIT,git,"yes","no",)
|
||||
+if test "$HAVE_GIT" = "yes" -a "$GIT_REV" = ""; then
|
||||
+ GIT_REV=$(git --no-pager log --abbrev=7 -n 1 --pretty=format:"%h %ci" HEAD | awk '{gsub("-", "");print $2"-"$1}')
|
||||
+elif test "$GIT_REV" = ""; then
|
||||
+ GIT_REV="Unknown"
|
||||
+fi
|
||||
+final_message="$final_message\n git Rev.:\t${GIT_REV}"
|
||||
+
|
||||
# platform debug flags
|
||||
if test "$use_debug" = "yes"; then
|
||||
final_message="$final_message\n Debugging:\tYes"
|
||||
@@ -1177,7 +1185,6 @@
|
||||
fi
|
||||
fi
|
||||
|
||||
-AC_CHECK_PROG(HAVE_GIT,git,"yes","no",)
|
||||
|
||||
# Checks for header files.
|
||||
AC_HEADER_DIRENT
|
||||
@@ -1408,12 +1415,6 @@
|
||||
final_message="$final_message\n Avahi:\tNo"
|
||||
fi
|
||||
|
||||
-if test "$HAVE_GIT" = "yes"; then
|
||||
- GIT_REV=$(git --no-pager log --abbrev=7 -n 1 --pretty=format:"%h %ci" HEAD | awk '{gsub("-", "");print $2"-"$1}')
|
||||
-fi
|
||||
-if test "$GIT_REV" = ""; then
|
||||
- GIT_REV="Unknown"
|
||||
-fi
|
||||
if test "$host_vendor" = "apple"; then
|
||||
echo "#define GIT_REV \"$GIT_REV\"" > git_revision.h
|
||||
else
|
@ -1,119 +0,0 @@
|
||||
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdcss/src/libdvdcss.pc.in xbmc-pvr-3513480.patch/lib/libdvd/libdvdcss/src/libdvdcss.pc.in
|
||||
--- xbmc-pvr-3513480/lib/libdvd/libdvdcss/src/libdvdcss.pc.in 2011-04-25 02:36:42.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdcss/src/libdvdcss.pc.in 2011-04-25 05:01:20.091837122 +0200
|
||||
@@ -6,5 +6,5 @@
|
||||
Name: libdvdcss
|
||||
Description: DVD access and decryption library.
|
||||
Version: @VERSION@
|
||||
-Libs: -L${libdir} -ldvdcss
|
||||
-Cflags: -I{includedir} -I${includedir}/@PACKAGE@
|
||||
+Libs: -ldvdcss
|
||||
+Cflags: -I.
|
||||
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnav-config2.sh xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnav-config2.sh
|
||||
--- xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnav-config2.sh 2011-04-25 02:36:42.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnav-config2.sh 2011-04-25 05:01:20.549828701 +0200
|
||||
@@ -56,17 +56,17 @@
|
||||
fi
|
||||
|
||||
if test "$echo_cflags" = "yes"; then
|
||||
- echo -I$prefix/include $dvdread_cflags $extracflags $threadcflags
|
||||
+ echo $dvdread_cflags $extracflags $threadcflags
|
||||
fi
|
||||
|
||||
if test "$echo_minicflags" = "yes"; then
|
||||
- echo -I$prefix/include -I$prefix/include/dvdnav $extracflags $threadcflags
|
||||
+ echo $extracflags $threadcflags
|
||||
fi
|
||||
|
||||
if test "$echo_libs" = "yes"; then
|
||||
- echo -L$libdir -ldvdnav $dvdread_libs $threadlib
|
||||
+ echo -ldvdnav $dvdread_libs $threadlib
|
||||
fi
|
||||
|
||||
if test "$echo_minilibs" = "yes"; then
|
||||
- echo -L$libdir -ldvdnavmini $threadlib
|
||||
+ echo -ldvdnavmini $threadlib
|
||||
fi
|
||||
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnav-config.in xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnav-config.in
|
||||
--- xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnav-config.in 2011-04-25 02:36:42.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnav-config.in 2011-04-25 05:01:20.624827321 +0200
|
||||
@@ -76,13 +76,13 @@
|
||||
fi
|
||||
|
||||
if test "$echo_cflags" = "yes"; then
|
||||
- echo -I@includedir@ -I@includedir@/libdvdread @THREAD_CFLAGS@
|
||||
+ echo @THREAD_CFLAGS@
|
||||
fi
|
||||
|
||||
if test "$echo_libs" = "yes"; then
|
||||
- echo -L@libdir@ -ldvdnav -ldvdread @THREAD_LIBS@
|
||||
+ echo -ldvdnav -ldvdread @THREAD_LIBS@
|
||||
fi
|
||||
|
||||
if test "$echo_minilibs" = "yes"; then
|
||||
- echo -L@libdir@ -ldvdnavmini @THREAD_LIBS@
|
||||
+ echo -ldvdnavmini @THREAD_LIBS@
|
||||
fi
|
||||
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnavmini.pc.in xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnavmini.pc.in
|
||||
--- xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnavmini.pc.in 2011-04-25 02:36:42.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnavmini.pc.in 2011-04-25 05:01:21.042819641 +0200
|
||||
@@ -7,5 +7,5 @@
|
||||
Description: DVD Navigation mini library
|
||||
Version: @VERSION@
|
||||
|
||||
-Cflags: -I${includedir} @DVDREAD_CFLAGS@ @THREAD_CFLAGS@
|
||||
-Libs: -L${libdir} -ldvdnav @THREAD_LIBS@
|
||||
+Cflags: @DVDREAD_CFLAGS@ @THREAD_CFLAGS@
|
||||
+Libs: -ldvdnav @THREAD_LIBS@
|
||||
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnav.pc.in xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnav.pc.in
|
||||
--- xbmc-pvr-3513480/lib/libdvd/libdvdnav/misc/dvdnav.pc.in 2011-04-25 02:36:42.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdnav/misc/dvdnav.pc.in 2011-04-25 05:01:21.262815601 +0200
|
||||
@@ -8,5 +8,5 @@
|
||||
Version: @VERSION@
|
||||
|
||||
Requires.private: dvdread >= 4.1.2
|
||||
-Cflags: -I${includedir} @THREAD_CFLAGS@
|
||||
-Libs: -L${libdir} -ldvdnav @THREAD_LIBS@
|
||||
+Cflags: @THREAD_CFLAGS@
|
||||
+Libs: -ldvdnav @THREAD_LIBS@
|
||||
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdread/misc/dvdread-config.in xbmc-pvr-3513480.patch/lib/libdvd/libdvdread/misc/dvdread-config.in
|
||||
--- xbmc-pvr-3513480/lib/libdvd/libdvdread/misc/dvdread-config.in 2011-04-25 02:36:42.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdread/misc/dvdread-config.in 2011-04-25 05:01:21.278815307 +0200
|
||||
@@ -72,9 +72,9 @@
|
||||
fi
|
||||
|
||||
if test "$echo_cflags" = "yes"; then
|
||||
- echo -I@includedir@
|
||||
+ echo ""
|
||||
fi
|
||||
|
||||
if test "$echo_libs" = "yes"; then
|
||||
- echo -L@libdir@ -ldvdread
|
||||
+ echo -ldvdread
|
||||
fi
|
||||
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdread/misc/dvdread-config.sh xbmc-pvr-3513480.patch/lib/libdvd/libdvdread/misc/dvdread-config.sh
|
||||
--- xbmc-pvr-3513480/lib/libdvd/libdvdread/misc/dvdread-config.sh 2011-04-25 02:36:42.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdread/misc/dvdread-config.sh 2011-04-25 05:01:21.278815307 +0200
|
||||
@@ -48,9 +48,9 @@
|
||||
fi
|
||||
|
||||
if test "$echo_cflags" = "yes"; then
|
||||
- echo -I$prefix/include $extracflags
|
||||
+ echo $extracflags
|
||||
fi
|
||||
|
||||
if test "$echo_libs" = "yes"; then
|
||||
- echo -L$libdir $dvdreadlib
|
||||
+ echo $dvdreadlib
|
||||
fi
|
||||
diff -Naur xbmc-pvr-3513480/lib/libdvd/libdvdread/misc/dvdread.pc.in xbmc-pvr-3513480.patch/lib/libdvd/libdvdread/misc/dvdread.pc.in
|
||||
--- xbmc-pvr-3513480/lib/libdvd/libdvdread/misc/dvdread.pc.in 2011-04-25 02:36:42.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/lib/libdvd/libdvdread/misc/dvdread.pc.in 2011-04-25 05:01:21.279815289 +0200
|
||||
@@ -7,5 +7,5 @@
|
||||
Description: Low level DVD access library
|
||||
Version: @VERSION@
|
||||
|
||||
-Cflags: -I${includedir}
|
||||
-Libs: -L${libdir} -ldvdread
|
||||
+Cflags: -I.
|
||||
+Libs: -ldvdread
|
@ -1,12 +0,0 @@
|
||||
diff -Naur xbmc-dab646e/xbmc/screensavers/rsxs-0.9/lib/argp-namefrob.h xbmc-dab646e.patch/xbmc/screensavers/rsxs-0.9/lib/argp-namefrob.h
|
||||
--- xbmc-dab646e/xbmc/screensavers/rsxs-0.9/lib/argp-namefrob.h 2011-09-27 15:56:19.000000000 +0200
|
||||
+++ xbmc-dab646e.patch/xbmc/screensavers/rsxs-0.9/lib/argp-namefrob.h 2011-10-16 02:13:13.805433847 +0200
|
||||
@@ -17,7 +17,7 @@
|
||||
with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
-#if !_LIBC
|
||||
+#if 0
|
||||
/* This code is written for inclusion in gnu-libc, and uses names in the
|
||||
namespace reserved for libc. If we're not compiling in libc, define those
|
||||
names to be the normal ones instead. */
|
@ -1,199 +0,0 @@
|
||||
diff -Naur xbmc-pvr-11.0.1/configure.in xbmc-pvr-11.0.1.patch/configure.in
|
||||
--- xbmc-pvr-11.0.1/configure.in 2012-03-27 17:55:54.000000000 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/configure.in 2012-06-19 04:44:55.985036378 +0200
|
||||
@@ -385,6 +385,12 @@
|
||||
[use_texturepacker=$enableval],
|
||||
[use_texturepacker=auto])
|
||||
|
||||
+AC_ARG_WITH([texturepacker-root],
|
||||
+ [AS_HELP_STRING([--with-texturepacker-root],
|
||||
+ [root dir to search for librarys and includes if building native TexturePacker (default is \$prefix)])],
|
||||
+ [use_texturepacker_root=$withval],
|
||||
+ [use_texturepacker_root=$prefix])
|
||||
+
|
||||
AC_ARG_WITH([lirc-device],
|
||||
[AS_HELP_STRING([--with-lirc-device=file],
|
||||
[specify the default LIRC device (default is /dev/lircd)])],
|
||||
@@ -466,8 +472,7 @@
|
||||
use_cpu=cortex-a8
|
||||
check_sdl_arch=[`file /opt/local/lib/libSDL_image.dylib | awk '{V=7; print $V}'`]
|
||||
if test "x$check_sdl_arch" = "xi386"; then
|
||||
- use_texturepacker_native=yes
|
||||
- USE_TEXTUREPACKER_NATIVE_ROOT="/opt/local"
|
||||
+ use_texturepacker_root="/opt/local"
|
||||
else
|
||||
use_texturepacker=no
|
||||
fi
|
||||
@@ -484,8 +489,6 @@
|
||||
*86-apple-darwin*)
|
||||
use_joystick=no
|
||||
use_vtbdecoder=no
|
||||
- use_texturepacker_native=yes
|
||||
- USE_TEXTUREPACKER_NATIVE_ROOT="$prefix"
|
||||
ARCH="x86-osx"
|
||||
AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_OSX -D_LINUX")
|
||||
;;
|
||||
@@ -1649,17 +1652,17 @@
|
||||
|
||||
USE_TEXTUREPACKER_NATIVE=0
|
||||
if test "x$use_texturepacker" != "xno"; then
|
||||
- final_message="$final_message\n TexturePacker:Yes"
|
||||
- USE_TEXTUREPACKER=1
|
||||
- if test "x$use_texturepacker_native" = "xyes"; then
|
||||
+ if test "x$cross_compiling" = "xyes"; then
|
||||
USE_TEXTUREPACKER_NATIVE=1
|
||||
- if [[ ! -d "$USE_TEXTUREPACKER_NATIVE_ROOT" ]]; then
|
||||
- USE_TEXTUREPACKER_NATIVE_ROOT=
|
||||
- fi
|
||||
+ USE_TEXTUREPACKER_NATIVE_ROOT="$use_texturepacker_root"
|
||||
+ final_message="$final_message\n TexturePacker:Native ($USE_TEXTUREPACKER_NATIVE_ROOT)"
|
||||
+ else
|
||||
+ USE_TEXTUREPACKER=1
|
||||
+ final_message="$final_message\n TexturePacker:Yes"
|
||||
fi
|
||||
else
|
||||
- final_message="$final_message\n TexturePacker:No"
|
||||
USE_TEXTUREPACKER=0
|
||||
+ final_message="$final_message\n TexturePacker:No"
|
||||
fi
|
||||
|
||||
if test "$use_mid" = "yes"; then
|
||||
diff -Naur xbmc-pvr-11.0.1/lib/libsquish/Makefile.in xbmc-pvr-11.0.1.patch/lib/libsquish/Makefile.in
|
||||
--- xbmc-pvr-11.0.1/lib/libsquish/Makefile.in 2012-03-27 17:55:41.000000000 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/lib/libsquish/Makefile.in 2012-06-19 02:45:32.926185206 +0200
|
||||
@@ -1,6 +1,6 @@
|
||||
ARCH=@ARCH@
|
||||
|
||||
-SRCS= \
|
||||
+SRCS = \
|
||||
alpha.cpp \
|
||||
clusterfit.cpp \
|
||||
colourblock.cpp \
|
||||
@@ -11,27 +11,30 @@
|
||||
singlecolourfit.cpp \
|
||||
squish.cpp
|
||||
|
||||
-CXXFLAGS+=-I.
|
||||
+LIB = libsquish.a
|
||||
+NATIVE_LIB = libsquish-native.so
|
||||
+CLEAN_FILES += $(NATIVE_LIB)
|
||||
+
|
||||
+HOST_CXX ?= g++
|
||||
+CXXFLAGS += -I.
|
||||
+HOST_CXXFLAGS += -I.
|
||||
+
|
||||
ifeq ($(findstring powerpc,$(ARCH)),powerpc)
|
||||
- CXXFLAGS+=-DSQUISH_USE_ALTIVEC=1 -maltivec
|
||||
+ CXXFLAGS += -DSQUISH_USE_ALTIVEC=1 -maltivec
|
||||
+ HOST_CXXFLAGS += -DSQUISH_USE_ALTIVEC=1 -maltivec
|
||||
else ifeq ($(findstring x86,$(ARCH)), x86)
|
||||
- CXXFLAGS+=-DSQUISH_USE_SSE=2 -msse2
|
||||
+ CXXFLAGS += -DSQUISH_USE_SSE=2 -msse2
|
||||
+ HOST_CXXFLAGS += -DSQUISH_USE_SSE=2 -msse2
|
||||
endif
|
||||
|
||||
-LIB=libsquish.a
|
||||
-
|
||||
-ifeq (@USE_TEXTUREPACKER_NATIVE@,1)
|
||||
-NATIVE_LIB=libsquish-native.so
|
||||
-CLEAN_FILES+=$(NATIVE_LIB)
|
||||
+$(LIB): $(SRCS)
|
||||
|
||||
-all: $(LIB) $(NATIVE_LIB)
|
||||
# TexturePacker links to libsquish and needs to run on build system, so make a native flavor.
|
||||
$(NATIVE_LIB): $(SRCS)
|
||||
ifeq ($(findstring osx,$(ARCH)),osx)
|
||||
- g++ -m32 -DSQUISH_USE_SSE=2 -msse2 -I. $(SRCS) -dynamiclib -install_name `pwd`/libsquish-native.so -o $@
|
||||
+ $(HOST_CXX) -m32 $(HOST_CXXFLAGS) $(SRCS) -dynamiclib -install_name `pwd`/libsquish-native.so -o $@
|
||||
else
|
||||
- g++ -DSQUISH_USE_SSE=2 -msse2 -I. $(SRCS) -shared -fPIC -Wl,-soname,`pwd`/libsquish-native.so -o $@
|
||||
-endif
|
||||
+ $(HOST_CXX) $(HOST_CXXFLAGS) $(SRCS) -shared -fPIC -Wl,-soname,`pwd`/libsquish-native.so -o $@
|
||||
endif
|
||||
|
||||
include ../../Makefile.include
|
||||
diff -Naur xbmc-pvr-11.0.1/tools/TexturePacker/Makefile.in xbmc-pvr-11.0.1.patch/tools/TexturePacker/Makefile.in
|
||||
--- xbmc-pvr-11.0.1/tools/TexturePacker/Makefile.in 2012-03-27 17:55:51.000000000 +0200
|
||||
+++ xbmc-pvr-11.0.1.patch/tools/TexturePacker/Makefile.in 2012-06-19 04:47:54.700638167 +0200
|
||||
@@ -1,47 +1,52 @@
|
||||
-DEFINES += -D_LINUX -DUSE_LZO_PACKING
|
||||
+DEFINES += -D_LINUX -DUSE_LZO_PACKING
|
||||
ifneq ($(or $(findstring powerpc,@ARCH@),$(findstring ppc, @ARCH@)),)
|
||||
-DEFINES += -DHOST_BIGENDIAN
|
||||
+DEFINES += -DHOST_BIGENDIAN
|
||||
endif
|
||||
|
||||
-CXXFLAGS+= \
|
||||
- -I. \
|
||||
- -I@abs_top_srcdir@/lib \
|
||||
- -I@abs_top_srcdir@/xbmc \
|
||||
- -I@abs_top_srcdir@/xbmc/linux
|
||||
-
|
||||
-ifeq (@USE_TEXTUREPACKER_NATIVE@,1)
|
||||
-NATIVE_ROOT_PATH=@USE_TEXTUREPACKER_NATIVE_ROOT@
|
||||
-ifdef NATIVE_ROOT_PATH
|
||||
-ifeq ($(findstring osx,@ARCH@),osx)
|
||||
-CXXFLAGS+= -m32
|
||||
-endif
|
||||
-CXXFLAGS+= -I$(NATIVE_ROOT_PATH)/include
|
||||
-LIBS += -L$(NATIVE_ROOT_PATH)/lib
|
||||
-endif
|
||||
-LIBS += -L@abs_top_srcdir@/lib/libsquish -lsquish-native
|
||||
-else
|
||||
-LIBS += -L@abs_top_srcdir@/lib/libsquish -lsquish
|
||||
-endif
|
||||
-
|
||||
-LIBS += -lSDL_image -lSDL -llzo2
|
||||
-
|
||||
-SRCS = \
|
||||
+SRCS = \
|
||||
md5.cpp \
|
||||
SDL_anigif.cpp \
|
||||
XBTFWriter.cpp \
|
||||
XBMCTex.cpp \
|
||||
@abs_top_srcdir@/xbmc/guilib/XBTF.cpp
|
||||
|
||||
-
|
||||
-TARGET = TexturePacker
|
||||
-CLEAN_FILES=$(TARGET)
|
||||
+TARGET = TexturePacker
|
||||
+CLEAN_FILES = $(TARGET)
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
+HOST_CXX ?= g++
|
||||
+HOST_ROOT_PATH = @USE_TEXTUREPACKER_NATIVE_ROOT@
|
||||
+
|
||||
+LIBS += -lSDL_image -lSDL -llzo2
|
||||
+LIBS += -L@abs_top_srcdir@/lib/libsquish -lsquish
|
||||
+HOST_LIBS += -L$(HOST_ROOT_PATH)/lib -lSDL_image -lSDL -llzo2
|
||||
+HOST_LIBS += -L@abs_top_srcdir@/lib/libsquish -lsquish-native
|
||||
+
|
||||
+CXXFLAGS += \
|
||||
+ -I. \
|
||||
+ -I@abs_top_srcdir@/lib \
|
||||
+ -I@abs_top_srcdir@/xbmc \
|
||||
+ -I@abs_top_srcdir@/xbmc/linux
|
||||
+
|
||||
+HOST_CXXFLAGS += \
|
||||
+ -I. \
|
||||
+ -I@abs_top_srcdir@/lib \
|
||||
+ -I@abs_top_srcdir@/xbmc \
|
||||
+ -I@abs_top_srcdir@/xbmc/linux \
|
||||
+ -I$(HOST_ROOT_PATH)/include
|
||||
+
|
||||
+ifeq ($(findstring osx,@ARCH@),osx)
|
||||
+CXXFLAGS += -m32
|
||||
+HOST_CXXFLAGS += -m32
|
||||
+endif
|
||||
+
|
||||
ifeq (@USE_TEXTUREPACKER_NATIVE@,1)
|
||||
# TexturePacker run native on build system, build it with native tools
|
||||
$(TARGET): $(SRCS)
|
||||
- g++ $(DEFINES) $(CXXFLAGS) $(SRCS) $(LIBS) -o $(TARGET)
|
||||
+ make -C @abs_top_srcdir@/lib/libsquish libsquish-native.so
|
||||
+ $(HOST_CXX) $(DEFINES) $(HOST_CXXFLAGS) $(SRCS) $(HOST_LIBS) -o $(TARGET)
|
||||
+
|
||||
clean:
|
||||
rm -f $(TARGET)
|
||||
else
|
@ -1,13 +0,0 @@
|
||||
diff -Naur xbmc-10.1-Dharma/xbmc/Application.cpp xbmc-10.1-Dharma.patch/xbmc/Application.cpp
|
||||
--- xbmc-10.1-Dharma/xbmc/Application.cpp 2011-03-08 02:49:14.000000000 +0100
|
||||
+++ xbmc-10.1-Dharma.patch/xbmc/Application.cpp 2011-05-06 01:41:52.853741840 +0200
|
||||
@@ -2515,8 +2515,8 @@
|
||||
if (!m_pPlayer->IsPaused())
|
||||
{ // unpaused - set the playspeed back to normal
|
||||
SetPlaySpeed(1);
|
||||
+ g_audioManager.Enable(m_pPlayer->IsPaused() && !g_audioContext.IsPassthroughActive());
|
||||
}
|
||||
- g_audioManager.Enable(m_pPlayer->IsPaused() && !g_audioContext.IsPassthroughActive());
|
||||
return true;
|
||||
}
|
||||
if (!m_pPlayer->IsPaused())
|
@ -1,21 +0,0 @@
|
||||
diff -Naur xbmc-pvr-3513480/configure.in xbmc-pvr-3513480.patch/configure.in
|
||||
--- xbmc-pvr-3513480/configure.in 2011-04-25 02:36:33.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/configure.in 2011-04-25 05:14:49.220848143 +0200
|
||||
@@ -885,6 +885,9 @@
|
||||
AC_MSG_NOTICE($external_ffmpeg_disabled)
|
||||
USE_EXTERNAL_FFMPEG=0
|
||||
AC_DEFINE([PIX_FMT_VDPAU_MPEG4_IN_AVUTIL], [1], [Whether AVUtil defines PIX_FMT_VDPAU_MPEG4.])
|
||||
+
|
||||
+ # check for yasm
|
||||
+ AC_CHECK_PROG(HAVE_YASM,yasm,"yes","no",)
|
||||
fi
|
||||
|
||||
# Python
|
||||
@@ -1547,6 +1550,7 @@
|
||||
`if test "$use_arch" != "no"; then echo --arch=$use_arch; fi`\
|
||||
`if test "$use_cpu" != "no"; then echo --cpu=$use_cpu; fi`\
|
||||
--target-os=$(tolower $(uname -s)) \
|
||||
+ `if test "$HAVE_YASM" = "yes"; then echo --enable-yasm; fi` \
|
||||
--disable-muxers \
|
||||
--enable-muxer=spdif \
|
||||
--enable-muxer=adts \
|
@ -1,125 +0,0 @@
|
||||
diff -Naur xbmc-pvr-3513480/configure.in xbmc-pvr-3513480.patch/configure.in
|
||||
--- xbmc-pvr-3513480/configure.in 2011-04-25 05:46:35.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/configure.in 2011-04-25 05:50:02.982401390 +0200
|
||||
@@ -72,6 +72,8 @@
|
||||
rsxs_disabled="== RSXS disabled. =="
|
||||
pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
|
||||
pulse_disabled="== PulseAudio support manually disabled. =="
|
||||
+lame_not_found="== Could not find libmp3lame. LAME support disabled. =="
|
||||
+lame_disabled="== LAME support manually disabled. =="
|
||||
dvdcss_enabled="== DVDCSS support enabled. =="
|
||||
dvdcss_disabled="== DVDCSS support disabled. =="
|
||||
hal_not_found="== Could not find hal. HAL support disabled. =="
|
||||
@@ -244,6 +246,12 @@
|
||||
[use_ffmpeg_libvorbis=$enableval],
|
||||
[use_ffmpeg_libvorbis=no])
|
||||
|
||||
+AC_ARG_ENABLE([lame],
|
||||
+ [AS_HELP_STRING([--enable-lame],
|
||||
+ [enable lame support (default is yes)])],
|
||||
+ [use_lame=$enableval],
|
||||
+ [use_lame=yes])
|
||||
+
|
||||
AC_ARG_ENABLE([dvdcss],
|
||||
[AS_HELP_STRING([--enable-dvdcss],
|
||||
[enable DVDCSS support (default is yes)])],
|
||||
@@ -758,6 +766,20 @@
|
||||
USE_PULSE=0
|
||||
fi
|
||||
|
||||
+# LAME
|
||||
+if test "$use_lame" = "yes"; then
|
||||
+ AC_CHECK_LIB([mp3lame], [main],
|
||||
+ AC_DEFINE([HAVE_LIBMP3LAME], [1], [Define to 1 if you have the 'libmp3lame' library (-lmp3lame).]),
|
||||
+ use_lame=no;AC_MSG_RESULT($lame_not_found))
|
||||
+else
|
||||
+ AC_MSG_RESULT($lame_disabled)
|
||||
+fi
|
||||
+if test "$use_lame" = "yes"; then
|
||||
+ AC_SUBST([HAVE_LIBMP3LAME], 1)
|
||||
+else
|
||||
+ AC_SUBST([HAVE_LIBMP3LAME], 0)
|
||||
+fi
|
||||
+
|
||||
# HAL
|
||||
if test "$host_vendor" = "apple" ; then
|
||||
use_hal="no"
|
||||
@@ -1311,6 +1333,12 @@
|
||||
final_message="$final_message\n HAL Support:\tNo"
|
||||
fi
|
||||
|
||||
+if test "$use_lame" = "yes"; then
|
||||
+ final_message="$final_message\n LAME:\t\tYes"
|
||||
+else
|
||||
+ final_message="$final_message\n LAME:\t\tNo"
|
||||
+fi
|
||||
+
|
||||
# DVDCSS
|
||||
if test "$use_dvdcss" = "yes"; then
|
||||
AC_MSG_NOTICE($dvdcss_enabled)
|
||||
diff -Naur xbmc-pvr-3513480/configure.in.orig xbmc-pvr-3513480.patch/configure.in.orig
|
||||
diff -Naur xbmc-pvr-3513480/Makefile.in.orig xbmc-pvr-3513480.patch/Makefile.in.orig
|
||||
diff -Naur xbmc-pvr-3513480/xbmc/cdrip/CDDARipper.cpp xbmc-pvr-3513480.patch/xbmc/cdrip/CDDARipper.cpp
|
||||
--- xbmc-pvr-3513480/xbmc/cdrip/CDDARipper.cpp 2011-04-25 02:36:33.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/xbmc/cdrip/CDDARipper.cpp 2011-04-25 05:48:10.487548571 +0200
|
||||
@@ -27,7 +27,11 @@
|
||||
#include "CDDAReader.h"
|
||||
#include "utils/StringUtils.h"
|
||||
#include "Util.h"
|
||||
+
|
||||
+#ifdef HAVE_LIBMP3LAME
|
||||
#include "EncoderLame.h"
|
||||
+#endif
|
||||
+
|
||||
#include "EncoderWav.h"
|
||||
#include "EncoderVorbis.h"
|
||||
#include "EncoderFFmpeg.h"
|
||||
@@ -78,9 +82,16 @@
|
||||
case CDDARIP_ENCODER_FLAC:
|
||||
m_pEncoder = new CEncoderFlac();
|
||||
break;
|
||||
- default:
|
||||
+#ifdef HAVE_LIBMP3LAME
|
||||
+ case CDDARIP_ENCODER_LAME:
|
||||
m_pEncoder = new CEncoderLame();
|
||||
break;
|
||||
+#else
|
||||
+ default:
|
||||
+ CLog::Log(LOGERROR,"invalid encoder selected");
|
||||
+ return false;
|
||||
+ break;
|
||||
+#endif
|
||||
}
|
||||
|
||||
// we have to set the tags before we init the Encoder
|
||||
diff -Naur xbmc-pvr-3513480/xbmc/cdrip/Makefile.in xbmc-pvr-3513480.patch/xbmc/cdrip/Makefile.in
|
||||
--- xbmc-pvr-3513480/xbmc/cdrip/Makefile.in 2011-04-25 02:36:33.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/xbmc/cdrip/Makefile.in 2011-04-25 05:51:13.013064387 +0200
|
||||
@@ -3,10 +3,13 @@
|
||||
Encoder.cpp \
|
||||
EncoderFFmpeg.cpp \
|
||||
EncoderFlac.cpp \
|
||||
- EncoderLame.cpp \
|
||||
EncoderVorbis.cpp \
|
||||
EncoderWav.cpp \
|
||||
|
||||
+ifeq (@HAVE_LIBMP3LAME@,1)
|
||||
+ SRCS+=EncoderLame.cpp
|
||||
+endif
|
||||
+
|
||||
LIB=cdrip.a
|
||||
|
||||
include @abs_top_srcdir@/Makefile.include
|
||||
diff -Naur xbmc-pvr-3513480/xbmc/settings/GUISettings.cpp xbmc-pvr-3513480.patch/xbmc/settings/GUISettings.cpp
|
||||
--- xbmc-pvr-3513480/xbmc/settings/GUISettings.cpp 2011-04-25 05:47:12.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/xbmc/settings/GUISettings.cpp 2011-04-25 05:48:47.956833472 +0200
|
||||
@@ -324,7 +324,9 @@
|
||||
AddPath(acd,"audiocds.recordingpath",20000,"select writable folder",BUTTON_CONTROL_PATH_INPUT,false,657);
|
||||
AddString(acd, "audiocds.trackpathformat", 13307, "%A - %B/[%N. ][%A - ]%T", EDIT_CONTROL_INPUT, false, 16016);
|
||||
map<int,int> encoders;
|
||||
+#ifdef HAVE_LIBMP3LAME
|
||||
encoders.insert(make_pair(34000,CDDARIP_ENCODER_LAME));
|
||||
+#endif
|
||||
encoders.insert(make_pair(34001,CDDARIP_ENCODER_VORBIS));
|
||||
encoders.insert(make_pair(34002,CDDARIP_ENCODER_WAV));
|
||||
encoders.insert(make_pair(34005,CDDARIP_ENCODER_FLAC));
|
@ -1,18 +0,0 @@
|
||||
diff -Naur xbmc-a3c804b/xbmc/interfaces/python/XBPython.cpp xbmc-a3c804b.patch/xbmc/interfaces/python/XBPython.cpp
|
||||
--- xbmc-a3c804b/xbmc/interfaces/python/XBPython.cpp 2011-08-17 23:40:00.000000000 +0200
|
||||
+++ xbmc-a3c804b.patch/xbmc/interfaces/python/XBPython.cpp 2011-08-18 03:50:49.652475572 +0200
|
||||
@@ -335,11 +335,9 @@
|
||||
// at http://docs.python.org/using/cmdline.html#environment-variables
|
||||
|
||||
#if !defined(_WIN32)
|
||||
- /* PYTHONOPTIMIZE is set off intentionally when using external Python.
|
||||
- Reason for this is because we cannot be sure what version of Python
|
||||
- was used to compile the various Python object files (i.e. .pyo,
|
||||
- .pyc, etc.). */
|
||||
- // check if we are running as real xbmc.app or just binary
|
||||
+ // Required for python to find optimized code (pyo) files
|
||||
+ setenv("PYTHONOPTIMIZE", "1", 1);
|
||||
+ // check if we are running as real xbmc.app or just binary
|
||||
if (!CUtil::GetFrameworksPath(true).IsEmpty())
|
||||
{
|
||||
// using external python, it's build looking for xxx/lib/python2.6
|
@ -1,12 +0,0 @@
|
||||
diff -Naur xbmc-pvr-3513480/userdata/LCD.xml xbmc-pvr-3513480.patch/userdata/LCD.xml
|
||||
--- xbmc-pvr-3513480/userdata/LCD.xml 2011-04-25 02:36:33.000000000 +0200
|
||||
+++ xbmc-pvr-3513480.patch/userdata/LCD.xml 2011-04-25 05:27:34.956125133 +0200
|
||||
@@ -21,7 +21,7 @@
|
||||
<line>Freemem: $INFO[System.FreeMemory]</line>
|
||||
</video>
|
||||
<general>
|
||||
- <line>XBMC running...</line>
|
||||
+ <line>*** OpenELEC ***</line>
|
||||
<line>$INFO[System.Time] $INFO[System.Date]</line>
|
||||
<line>Freemem: $INFO[System.FreeMemory]</line>
|
||||
<line>$INFO[System.ScreenWidth]x$INFO[System.ScreenHeight] $INFO[System.ScreenMode]</line>
|
@ -1,11 +0,0 @@
|
||||
diff -Naur xbmc-10.1-Dharma/userdata/RssFeeds.xml xbmc-10.1-Dharma.patch/userdata/RssFeeds.xml
|
||||
--- xbmc-10.1-Dharma/userdata/RssFeeds.xml 2011-03-08 02:49:24.000000000 +0100
|
||||
+++ xbmc-10.1-Dharma.patch/userdata/RssFeeds.xml 2011-06-14 17:07:08.450880123 +0200
|
||||
@@ -3,6 +3,7 @@
|
||||
<!-- RSS feeds. To have multiple feeds, just add a feed to the set. You can also have multiple sets. !-->
|
||||
<!-- To use different sets in your skin, each must be called from skin with a unique id. !-->
|
||||
<set id="1">
|
||||
+ <feed updateinterval="30">http://openelec.tv/news?format=feed&type=rss</feed>
|
||||
<feed updateinterval="30">http://feeds.feedburner.com/xbmc</feed>
|
||||
</set>
|
||||
</rssfeeds>
|
@ -1,12 +0,0 @@
|
||||
diff -Naur xbmc-30a9070/system/keymaps/keyboard.xml xbmc-30a9070.patch/system/keymaps/keyboard.xml
|
||||
--- xbmc-30a9070/system/keymaps/keyboard.xml 2011-07-28 06:20:13.000000000 +0200
|
||||
+++ xbmc-30a9070.patch/system/keymaps/keyboard.xml 2011-07-28 09:39:57.210973380 +0200
|
||||
@@ -90,7 +90,7 @@
|
||||
<numpadseven>Number7</numpadseven>
|
||||
<numpadeight>Number8</numpadeight>
|
||||
<numpadnine>Number9</numpadnine>
|
||||
- <backslash>ToggleFullScreen</backslash>
|
||||
+ <!-- <backslash>ToggleFullScreen</backslash> -->
|
||||
<home>FirstPage</home>
|
||||
<end>LastPage</end>
|
||||
<!-- Multimedia keyboard keys -->
|
@ -1,15 +0,0 @@
|
||||
diff -Naur xbmc-10.1-Dharma/xbmc/FileSystem/FileCurl.cpp xbmc-10.1-Dharma.patch/xbmc/FileSystem/FileCurl.cpp
|
||||
--- xbmc-10.1-Dharma/xbmc/filesystem/FileCurl.cpp 2011-03-08 02:49:14.000000000 +0100
|
||||
+++ xbmc-10.1-Dharma.patch/xbmc/filesystem/FileCurl.cpp 2011-10-17 19:21:04.180783870 +0200
|
||||
@@ -803,9 +803,9 @@
|
||||
// Detect whether we are "online" or not! Very simple and dirty!
|
||||
bool CFileCurl::IsInternet(bool checkDNS /* = true */)
|
||||
{
|
||||
- CStdString strURL = "http://www.google.com";
|
||||
+ CStdString strURL = "http://www.openelec.tv";
|
||||
if (!checkDNS)
|
||||
- strURL = "http://74.125.19.103"; // www.google.com ip
|
||||
+ strURL = "http://212.101.13.10"; // www.openelec.tv ip
|
||||
|
||||
bool found = Exists(strURL);
|
||||
Close();
|
@ -1,71 +0,0 @@
|
||||
diff -Naur xbmc-10.1-Dharma/system/Lircmap.xml xbmc-10.1-Dharma.patch/system/Lircmap.xml
|
||||
--- xbmc-10.1-Dharma/system/Lircmap.xml 2011-06-18 01:43:43.132101246 +0200
|
||||
+++ xbmc-10.1-Dharma.patch/system/Lircmap.xml 2011-06-18 01:44:53.777025290 +0200
|
||||
@@ -365,7 +365,6 @@
|
||||
|
||||
<remote device="linux-input-layer">
|
||||
<altname>cx23885_remote</altname>
|
||||
- <altname>devinput</altname>
|
||||
<left>KEY_LEFT</left>
|
||||
<right>KEY_RIGHT</right>
|
||||
<up>KEY_UP</up>
|
||||
@@ -452,4 +451,59 @@
|
||||
<mypictures>yellow</mypictures>
|
||||
<myvideo>blue</myvideo>
|
||||
</remote>
|
||||
+
|
||||
+ <remote device="devinput">
|
||||
+ <left>KEY_LEFT</left>
|
||||
+ <right>KEY_RIGHT</right>
|
||||
+ <up>KEY_UP</up>
|
||||
+ <down>KEY_DOWN</down>
|
||||
+ <select>KEY_OK</select>
|
||||
+ <enter>KEY_ENTER</enter>
|
||||
+ <clear>KEY_DELETE</clear>
|
||||
+ <start>KEY_PROG1</start>
|
||||
+ <back>KEY_EXIT</back>
|
||||
+ <record>KEY_RECORD</record>
|
||||
+ <play>KEY_PLAY</play>
|
||||
+ <pause>KEY_PAUSE</pause>
|
||||
+ <stop>KEY_STOP</stop>
|
||||
+ <forward>KEY_FASTFORWARD</forward>
|
||||
+ <reverse>KEY_REWIND</reverse>
|
||||
+ <volumeplus>KEY_VOLUMEUP</volumeplus>
|
||||
+ <volumeminus>KEY_VOLUMEDOWN</volumeminus>
|
||||
+ <channelplus>KEY_CHANNELUP</channelplus>
|
||||
+ <channelminus>KEY_CHANNELDOWN</channelminus>
|
||||
+ <skipplus>KEY_NEXT</skipplus>
|
||||
+ <skipminus>KEY_PREVIOUS</skipminus>
|
||||
+ <title>KEY_EPG</title>
|
||||
+ <subtitle>KEY_SUBTITLE</subtitle>
|
||||
+ <language>KEY_LANGUAGE</language>
|
||||
+ <info>KEY_INFO</info>
|
||||
+ <display>KEY_ZOOM</display>
|
||||
+ <mute>KEY_MUTE</mute>
|
||||
+ <power>KEY_POWER</power>
|
||||
+ <eject>KEY_EJECT</eject>
|
||||
+ <menu>KEY_DVD</menu>
|
||||
+ <menu>KEY_MENU</menu>
|
||||
+ <myvideo>KEY_VIDEO</myvideo>
|
||||
+ <mymusic>KEY_AUDIO</mymusic>
|
||||
+ <mypictures>KEY_CAMERA</mypictures>
|
||||
+ <mytv>KEY_TUNER</mytv>
|
||||
+ <teletext>KEY_TEXT</teletext>
|
||||
+ <one>KEY_NUMERIC_1</one>
|
||||
+ <two>KEY_NUMERIC_2</two>
|
||||
+ <three>KEY_NUMERIC_3</three>
|
||||
+ <four>KEY_NUMERIC_4</four>
|
||||
+ <five>KEY_NUMERIC_5</five>
|
||||
+ <six>KEY_NUMERIC_6</six>
|
||||
+ <seven>KEY_NUMERIC_7</seven>
|
||||
+ <eight>KEY_NUMERIC_8</eight>
|
||||
+ <nine>KEY_NUMERIC_9</nine>
|
||||
+ <zero>KEY_NUMERIC_0</zero>
|
||||
+ <star>KEY_NUMERIC_STAR</star>
|
||||
+ <hash>KEY_NUMERIC_POUND</hash>
|
||||
+ <red>KEY_RED</red>
|
||||
+ <green>KEY_GREEN</green>
|
||||
+ <yellow>KEY_YELLOW</yellow>
|
||||
+ <blue>KEY_BLUE</blue>
|
||||
+ </remote>
|
||||
</lircmap>
|
@ -1,144 +0,0 @@
|
||||
From ab72a555c5dd8585ac6e101d9f5966e25500867d Mon Sep 17 00:00:00 2001
|
||||
From: Giftie <giftie61@hotmail.com>
|
||||
Date: Thu, 5 Jan 2012 19:32:14 -0700
|
||||
Subject: [PATCH] Updated auto cd rip modified:
|
||||
language/English/strings.xml modified:
|
||||
xbmc/cdrip/CDDARipper.cpp modified:
|
||||
xbmc/settings/GUISettings.cpp modified:
|
||||
xbmc/settings/GUISettings.h modified:
|
||||
xbmc/storage/MediaManager.cpp modified: xbmc/Autorun.cpp
|
||||
|
||||
Author: Giftie <giftie61@hotmail.com>
|
||||
Committer: Giftie <giftie61@hotmail.com>
|
||||
---
|
||||
language/English/strings.xml | 5 ++++-
|
||||
xbmc/Autorun.cpp | 15 ++++++++++++---
|
||||
xbmc/settings/GUISettings.cpp | 8 +++++++-
|
||||
xbmc/settings/GUISettings.h | 5 +++++
|
||||
xbmc/storage/MediaManager.cpp | 7 +++++--
|
||||
5 files changed, 33 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/language/English/strings.xml b/language/English/strings.xml
|
||||
index ca2ac4d..ae22214 100644
|
||||
--- a/language/English/strings.xml
|
||||
+++ b/language/English/strings.xml
|
||||
@@ -1344,7 +1344,7 @@
|
||||
<string id="14082">Show EXIF picture information</string>
|
||||
<string id="14083">Use a fullscreen window rather than true fullscreen</string>
|
||||
<string id="14084">Queue songs on selection</string>
|
||||
- <string id="14085">Play audio CDs automatically</string>
|
||||
+ <string id="14085"></string>
|
||||
<string id="14086">Playback</string>
|
||||
<string id="14087">DVDs</string>
|
||||
<string id="14088">Play DVDs automatically</string>
|
||||
@@ -1355,6 +1355,9 @@
|
||||
<string id="14093">Security</string>
|
||||
<string id="14094">Input devices</string>
|
||||
<string id="14095">Power saving</string>
|
||||
+ <string id="14096">Rip</string>
|
||||
+ <string id="14097">Audio CD Insert Action</string>
|
||||
+ <string id="14098">Play</string>
|
||||
|
||||
<string id="15015">Remove</string>
|
||||
<string id="15016">Games</string>
|
||||
diff --git a/xbmc/Autorun.cpp b/xbmc/Autorun.cpp
|
||||
index 846b28d..3cd6f75 100644
|
||||
--- a/xbmc/Autorun.cpp
|
||||
+++ b/xbmc/Autorun.cpp
|
||||
@@ -43,6 +43,9 @@
|
||||
#include "dialogs/GUIDialogYesNo.h"
|
||||
#include "utils/URIUtils.h"
|
||||
#include "utils/log.h"
|
||||
+#ifdef HAS_CDDA_RIPPER
|
||||
+#include "cdrip/CDDARipper.h"
|
||||
+#endif
|
||||
|
||||
using namespace std;
|
||||
using namespace XFILE;
|
||||
@@ -69,13 +72,19 @@ void CAutorun::ExecuteAutorun(const CStdString& path, bool bypassSettings, bool
|
||||
|
||||
g_application.ResetScreenSaver();
|
||||
g_application.WakeUpScreenSaverAndDPMS(); // turn off the screensaver if it's active
|
||||
-
|
||||
+#ifdef HAS_CDDA_RIPPER
|
||||
+ if ( g_guiSettings.GetInt("audiocds.autoaction") == AUTOCD_RIP && pInfo->IsAudio(1) && !g_settings.GetCurrentProfile().musicLocked())
|
||||
+ {
|
||||
+ CCDDARipper ripper;
|
||||
+ ripper.RipCD();
|
||||
+ }
|
||||
+#endif
|
||||
PlayDisc(path, bypassSettings, startFromBeginning);
|
||||
}
|
||||
|
||||
bool CAutorun::PlayDisc(const CStdString& path, bool bypassSettings, bool startFromBeginning)
|
||||
{
|
||||
- if ( !bypassSettings && !g_guiSettings.GetBool("audiocds.autorun") && !g_guiSettings.GetBool("dvds.autorun"))
|
||||
+ if ( !bypassSettings && !g_guiSettings.GetInt("audiocds.autoaction") == AUTOCD_PLAY && !g_guiSettings.GetBool("dvds.autorun"))
|
||||
return false;
|
||||
|
||||
int nSize = g_playlistPlayer.GetPlaylist( PLAYLIST_MUSIC ).size();
|
||||
@@ -276,7 +285,7 @@ bool CAutorun::RunDisc(IDirectory* pDir, const CStdString& strDrive, int& nAdded
|
||||
}
|
||||
}
|
||||
// then music
|
||||
- if (!bPlaying && (bypassSettings || g_guiSettings.GetBool("audiocds.autorun")) && bAllowMusic)
|
||||
+ if (!bPlaying && (bypassSettings || g_guiSettings.GetInt("audiocds.autoaction") == AUTOCD_PLAY) && bAllowMusic)
|
||||
{
|
||||
for (int i = 0; i < vecItems.Size(); i++)
|
||||
{
|
||||
diff --git a/xbmc/settings/GUISettings.cpp b/xbmc/settings/GUISettings.cpp
|
||||
index 6cce6ac..a0c7bf5 100644
|
||||
--- a/xbmc/settings/GUISettings.cpp
|
||||
+++ b/xbmc/settings/GUISettings.cpp
|
||||
@@ -318,7 +318,13 @@ void CGUISettings::Initialize()
|
||||
AddString(scr, "scrobbler.librefmpass", 15219, "", EDIT_CONTROL_MD5_INPUT, false, 15219);
|
||||
|
||||
CSettingsCategory* acd = AddCategory(3, "audiocds", 620);
|
||||
- AddBool(acd, "audiocds.autorun", 14085, false);
|
||||
+ map<int,int> autocd;
|
||||
+ autocd.insert(make_pair(16018, AUTOCD_NONE));
|
||||
+ autocd.insert(make_pair(14098, AUTOCD_PLAY));
|
||||
+#ifdef HAS_CDDA_RIPPER
|
||||
+ autocd.insert(make_pair(14096, AUTOCD_RIP));
|
||||
+#endif
|
||||
+ AddInt(acd,"audiocds.autoaction",14097,AUTOCD_NONE, autocd, SPIN_CONTROL_TEXT);
|
||||
AddBool(acd, "audiocds.usecddb", 227, true);
|
||||
AddSeparator(acd, "audiocds.sep1");
|
||||
AddPath(acd,"audiocds.recordingpath",20000,"select writable folder",BUTTON_CONTROL_PATH_INPUT,false,657);
|
||||
diff --git a/xbmc/settings/GUISettings.h b/xbmc/settings/GUISettings.h
|
||||
index 5501064..8751624 100644
|
||||
--- a/xbmc/settings/GUISettings.h
|
||||
+++ b/xbmc/settings/GUISettings.h
|
||||
@@ -64,6 +64,11 @@
|
||||
#define KARAOKE_COLOR_START 0
|
||||
#define KARAOKE_COLOR_END 4
|
||||
|
||||
+// CDDA Autoaction defines
|
||||
+#define AUTOCD_NONE 0
|
||||
+#define AUTOCD_PLAY 1
|
||||
+#define AUTOCD_RIP 2
|
||||
+
|
||||
// CDDA ripper defines
|
||||
#define CDDARIP_ENCODER_LAME 0
|
||||
#define CDDARIP_ENCODER_VORBIS 1
|
||||
diff --git a/xbmc/storage/MediaManager.cpp b/xbmc/storage/MediaManager.cpp
|
||||
index ced4ad0..316e8c9 100644
|
||||
--- a/xbmc/storage/MediaManager.cpp
|
||||
+++ b/xbmc/storage/MediaManager.cpp
|
||||
@@ -624,8 +624,11 @@ void CMediaManager::ProcessEvents()
|
||||
|
||||
void CMediaManager::OnStorageAdded(const CStdString &label, const CStdString &path)
|
||||
{
|
||||
- if (g_guiSettings.GetBool("audiocds.autorun") || g_guiSettings.GetBool("dvds.autorun"))
|
||||
- CJobManager::GetInstance().AddJob(new CAutorunMediaJob(label, path), this, CJob::PRIORITY_HIGH);
|
||||
+ if (g_guiSettings.GetInt("audiocds.autoaction") != AUTOCD_NONE || g_guiSettings.GetBool("dvds.autorun"))
|
||||
+ if ( g_guiSettings.GetInt("audiocds.autoaction") == AUTOCD_RIP)
|
||||
+ CJobManager::GetInstance().AddJob(new CAutorunMediaJob(label, path), this, CJob::PRIORITY_LOW);
|
||||
+ else
|
||||
+ CJobManager::GetInstance().AddJob(new CAutorunMediaJob(label, path), this, CJob::PRIORITY_HIGH);
|
||||
else
|
||||
CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Info, g_localizeStrings.Get(13021), label, TOAST_DISPLAY_TIME, false);
|
||||
}
|
||||
--
|
||||
1.7.5.4
|
||||
|
@ -1,37 +0,0 @@
|
||||
diff -Naur xbmc-pvr-fc63e66/language/English/strings.xml xbmc-pvr-fc63e66.patch/language/English/strings.xml
|
||||
--- xbmc-pvr-fc63e66/language/English/strings.xml 2012-03-19 21:20:31.531809910 +0100
|
||||
+++ xbmc-pvr-fc63e66.patch/language/English/strings.xml 2012-03-19 21:21:56.576430020 +0100
|
||||
@@ -1360,6 +1360,7 @@
|
||||
<string id="14096">Rip</string>
|
||||
<string id="14097">Audio CD Insert Action</string>
|
||||
<string id="14098">Play</string>
|
||||
+ <string id="14099">Eject disc when Audio CD ripping is complete</string>
|
||||
|
||||
<string id="15015">Remove</string>
|
||||
<string id="15016">Games</string>
|
||||
diff -Naur xbmc-pvr-fc63e66/xbmc/cdrip/CDDARipper.cpp xbmc-pvr-fc63e66.patch/xbmc/cdrip/CDDARipper.cpp
|
||||
--- xbmc-pvr-fc63e66/xbmc/cdrip/CDDARipper.cpp 2012-03-16 22:27:56.000000000 +0100
|
||||
+++ xbmc-pvr-fc63e66.patch/xbmc/cdrip/CDDARipper.cpp 2012-03-19 21:21:07.725417655 +0100
|
||||
@@ -332,6 +332,11 @@
|
||||
}
|
||||
|
||||
CLog::Log(LOGINFO, "Ripped CD succesfull");
|
||||
+ if (g_guiSettings.GetBool("audiocds.ejectonrip"))
|
||||
+ {
|
||||
+ CLog::Log(LOGINFO, "Ejecting CD");
|
||||
+ CIoSupport::EjectTray();
|
||||
+ }
|
||||
return true;
|
||||
}
|
||||
|
||||
diff -Naur xbmc-pvr-fc63e66/xbmc/settings/GUISettings.cpp xbmc-pvr-fc63e66.patch/xbmc/settings/GUISettings.cpp
|
||||
--- xbmc-pvr-fc63e66/xbmc/settings/GUISettings.cpp 2012-03-19 21:20:31.533809950 +0100
|
||||
+++ xbmc-pvr-fc63e66.patch/xbmc/settings/GUISettings.cpp 2012-03-19 21:21:07.734417841 +0100
|
||||
@@ -349,6 +349,7 @@
|
||||
AddInt(acd, "audiocds.quality", 622, CDDARIP_QUALITY_CBR, qualities, SPIN_CONTROL_TEXT);
|
||||
AddInt(acd, "audiocds.bitrate", 623, 192, 128, 32, 320, SPIN_CONTROL_INT_PLUS, MASK_KBPS);
|
||||
AddInt(acd, "audiocds.compressionlevel", 665, 5, 0, 1, 8, SPIN_CONTROL_INT_PLUS);
|
||||
+ AddBool(acd, "audiocds.ejectonrip", 14099, false);
|
||||
|
||||
#ifdef HAS_KARAOKE
|
||||
CSettingsCategory* kar = AddCategory(3, "karaoke", 13327);
|
File diff suppressed because it is too large
Load Diff
@ -1,32 +0,0 @@
|
||||
From 5c62df65cb2ef1c7dcebbf07bd6d180960ab6715 Mon Sep 17 00:00:00 2001
|
||||
From: theuni <theuni-nospam-@xbmc.org>
|
||||
Date: Wed, 4 Apr 2012 14:53:51 -0400
|
||||
Subject: [PATCH] ffmpeg: disable ffmpeg's crystalhd implementation for now
|
||||
|
||||
---
|
||||
configure.in | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/configure.in b/configure.in
|
||||
index 0d80719..40e9fb5 100755
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -2041,6 +2041,7 @@ XB_CONFIG_MODULE([lib/ffmpeg], [
|
||||
--disable-ffmpeg \
|
||||
--disable-doc \
|
||||
--disable-decoder=mpeg_xvmc \
|
||||
+ --disable-crystalhd \
|
||||
--enable-postproc \
|
||||
--enable-gpl \
|
||||
--enable-protocol=http \
|
||||
@@ -2080,6 +2081,7 @@ XB_CONFIG_MODULE([lib/ffmpeg], [
|
||||
--disable-ffplay \
|
||||
--disable-ffserver \
|
||||
--disable-ffmpeg \
|
||||
+ --disable-crystalhd \
|
||||
--enable-shared \
|
||||
--disable-doc \
|
||||
--enable-postproc \
|
||||
--
|
||||
1.7.10
|
||||
|
@ -1,41 +0,0 @@
|
||||
From d1e06c28d3eb6cd689b8cbc5b96babe81707baa7 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Hochecker <fernetmenta@online.de>
|
||||
Date: Sun, 15 Apr 2012 14:00:22 +0200
|
||||
Subject: [PATCH] ffmpeg: avfilter depends on avformat
|
||||
|
||||
---
|
||||
lib/DllAvFilter.h | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/lib/DllAvFilter.h b/lib/DllAvFilter.h
|
||||
index 5c83654..6ae5d15 100644
|
||||
--- a/lib/DllAvFilter.h
|
||||
+++ b/lib/DllAvFilter.h
|
||||
@@ -25,6 +25,7 @@
|
||||
#endif
|
||||
#include "DynamicDll.h"
|
||||
#include "DllAvCodec.h"
|
||||
+#include "DllAvFormat.h"
|
||||
#include "DllSwResample.h"
|
||||
#include "utils/log.h"
|
||||
|
||||
@@ -203,6 +204,7 @@ class DllAvFilter : public DllDynamic, DllAvFilterInterface
|
||||
/* dependencies of libavfilter */
|
||||
DllAvUtil m_dllAvUtil;
|
||||
DllSwResample m_dllSwResample;
|
||||
+ DllAvFormat m_dllAvFormat;
|
||||
|
||||
public:
|
||||
int avfilter_open(AVFilterContext **filter_ctx, AVFilter *filter, const char *inst_name)
|
||||
@@ -251,6 +253,8 @@ class DllAvFilter : public DllDynamic, DllAvFilterInterface
|
||||
return false;
|
||||
if (!m_dllSwResample.Load())
|
||||
return false;
|
||||
+ if (!m_dllAvFormat.Load())
|
||||
+ return false;
|
||||
return DllDynamic::Load();
|
||||
}
|
||||
};
|
||||
--
|
||||
1.7.10
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,11 +0,0 @@
|
||||
diff -Naur xbmc-11.0.1/xbmc/threads/platform/pthreads/ThreadImpl.h xbmc-11.0.1.patch/xbmc/threads/platform/pthreads/ThreadImpl.h
|
||||
--- xbmc-11.0.1/xbmc/threads/platform/pthreads/ThreadImpl.h 2012-03-23 07:22:04.215885089 +0100
|
||||
+++ xbmc-11.0.1.patch/xbmc/threads/platform/pthreads/ThreadImpl.h 2012-03-23 07:24:07.875383186 +0100
|
||||
@@ -22,6 +22,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <pthread.h>
|
||||
+#include <unistd.h>
|
||||
|
||||
struct threadOpaque
|
||||
{
|
@ -1,12 +0,0 @@
|
||||
diff -Naur xbmc-11.0.1/xbmc/settings/GUIWindowSettingsCategory.cpp xbmc-11.0.1.patch/xbmc/settings/GUIWindowSettingsCategory.cpp
|
||||
--- xbmc-11.0.1/xbmc/settings/GUIWindowSettingsCategory.cpp 2012-06-30 19:13:51.558262433 +0200
|
||||
+++ xbmc-11.0.1.patch/xbmc/settings/GUIWindowSettingsCategory.cpp 2012-06-30 19:59:14.545818328 +0200
|
||||
@@ -553,7 +553,7 @@
|
||||
{
|
||||
bool hasInterop = false;
|
||||
#ifdef GL_NV_vdpau_interop
|
||||
- hasInterop = true;
|
||||
+ hasInterop = false;
|
||||
#endif
|
||||
CGUIControl *pControl = (CGUIControl *)GetControl(pSettingControl->GetID());
|
||||
if (pControl && hasInterop && glewIsSupported("GL_NV_vdpau_interop"))
|
@ -1,29 +0,0 @@
|
||||
From 9687cc6b6f90fb40e39060eff9e4d8283254b770 Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Fri, 13 Jul 2012 18:57:37 +0200
|
||||
Subject: [PATCH] linuxrenderer: delete texture targets on reconfigure
|
||||
|
||||
---
|
||||
xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp
|
||||
index 7c46cfd..85fc50c 100644
|
||||
--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp
|
||||
+++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp
|
||||
@@ -261,6 +261,12 @@ bool CLinuxRendererGL::ValidateRenderTarget()
|
||||
else
|
||||
CLog::Log(LOGNOTICE,"Using GL_TEXTURE_2D");
|
||||
|
||||
+ // function pointer for texture might change in
|
||||
+ // call to LoadShaders
|
||||
+ glFinish();
|
||||
+ for (int i = 0 ; i < m_NumYV12Buffers ; i++)
|
||||
+ (this->*m_textureDelete)(i);
|
||||
+
|
||||
// create the yuv textures
|
||||
LoadShaders();
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
@ -1,37 +0,0 @@
|
||||
From 497941802e56121adf03428d964e225c80989afd Mon Sep 17 00:00:00 2001
|
||||
From: elupus <elupus@xbmc.org>
|
||||
Date: Sat, 7 Apr 2012 00:08:34 +0200
|
||||
Subject: [PATCH] fixed: still frames at the start of a VTS in dvd could end
|
||||
up not showing
|
||||
|
||||
This occured due to a change in behavior in updated ffmpeg. Old code would
|
||||
return EOF once after a VTS change to trigger demuxer flush, however
|
||||
updated ffmpeg will read multiple times causing demuxer reset actions
|
||||
to get executed after actual data having been processed by demuxer.
|
||||
---
|
||||
.../cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
|
||||
index dbdff52..3ae4843 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
|
||||
@@ -419,9 +419,12 @@ int CDVDInputStreamNavigator::ProcessBlock(BYTE* dest_buffer, int* read)
|
||||
iNavresult = NAVRESULT_HOLD;
|
||||
}
|
||||
else
|
||||
+ {
|
||||
iNavresult = m_pDVDPlayer->OnDVDNavResult(buf, DVDNAV_VTS_CHANGE);
|
||||
-
|
||||
- m_bInMenu = (0 == m_dll.dvdnav_is_domain_vts(m_dvdnav));
|
||||
+ m_holdmode = HOLDMODE_HELD;
|
||||
+ m_lastevent = DVDNAV_NOP;
|
||||
+ m_bInMenu = (0 == m_dll.dvdnav_is_domain_vts(m_dvdnav));
|
||||
+ }
|
||||
}
|
||||
break;
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
||||
|
@ -1,304 +0,0 @@
|
||||
diff -Naur xbmc-f3b0020/xbmc/guilib/GUIToggleButtonControl.h xbmc-f3b0020.patch/xbmc/guilib/GUIToggleButtonControl.h
|
||||
--- xbmc-f3b0020/xbmc/guilib/GUIToggleButtonControl.h 2011-12-10 22:16:22.000000000 +0100
|
||||
+++ xbmc-f3b0020.patch/xbmc/guilib/GUIToggleButtonControl.h 2011-12-17 18:43:42.183704449 +0100
|
||||
@@ -57,6 +57,7 @@
|
||||
virtual CStdString GetDescription() const;
|
||||
void SetToggleSelect(const CStdString &toggleSelect);
|
||||
void SetAltClickActions(const CGUIAction &clickActions);
|
||||
+ bool IsSelected() const { return m_bSelected; };
|
||||
|
||||
protected:
|
||||
virtual bool UpdateColors();
|
||||
diff -Naur xbmc-f3b0020/xbmc/interfaces/python/xbmcmodule/control.h xbmc-f3b0020.patch/xbmc/interfaces/python/xbmcmodule/control.h
|
||||
--- xbmc-f3b0020/xbmc/interfaces/python/xbmcmodule/control.h 2011-12-10 22:16:21.000000000 +0100
|
||||
+++ xbmc-f3b0020.patch/xbmc/interfaces/python/xbmcmodule/control.h 2011-12-17 18:43:42.216705084 +0100
|
||||
@@ -135,6 +135,11 @@
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD_XBMC_CONTROL
|
||||
+ bool bIsSelected;
|
||||
+ } ControlToggle;
|
||||
+
|
||||
+ typedef struct {
|
||||
+ PyObject_HEAD_XBMC_CONTROL
|
||||
std::string strFont;
|
||||
color_t textColor;
|
||||
std::vector<std::string> vecLabels;
|
||||
@@ -263,7 +268,8 @@
|
||||
extern PyTypeObject ControlRadioButton_Type;
|
||||
extern PyTypeObject ControlSlider_Type;
|
||||
extern PyTypeObject ControlEdit_Type;
|
||||
-
|
||||
+ extern PyTypeObject ControlToggle_Type;
|
||||
+
|
||||
CGUIControl* ControlLabel_Create(ControlLabel* pControl);
|
||||
CGUIControl* ControlFadeLabel_Create(ControlFadeLabel* pControl);
|
||||
CGUIControl* ControlTextBox_Create(ControlTextBox* pControl);
|
||||
@@ -276,6 +282,7 @@
|
||||
CGUIControl* ControlRadioButton_Create(ControlRadioButton* pControl);
|
||||
CGUIControl* ControlSlider_Create(ControlSlider* pControl);
|
||||
CGUIControl* ControlEdit_Create(ControlEdit* pControl);
|
||||
+ CGUIControl* ControlToggle_Create(ControlToggle* pControl);
|
||||
|
||||
void initControl_Type();
|
||||
void initControlSpin_Type();
|
||||
@@ -291,6 +298,7 @@
|
||||
void initControlRadioButton_Type();
|
||||
void initControlSlider_Type();
|
||||
void initControlEdit_Type();
|
||||
+ void initControlToggle_Type();
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
diff -Naur xbmc-f3b0020/xbmc/interfaces/python/xbmcmodule/controltogglebutton.cpp xbmc-f3b0020.patch/xbmc/interfaces/python/xbmcmodule/controltogglebutton.cpp
|
||||
--- xbmc-f3b0020/xbmc/interfaces/python/xbmcmodule/controltogglebutton.cpp 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ xbmc-f3b0020.patch/xbmc/interfaces/python/xbmcmodule/controltogglebutton.cpp 2011-12-17 18:43:42.217705104 +0100
|
||||
@@ -0,0 +1,181 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2005-2011 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, write to
|
||||
+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
+ * http://www.gnu.org/copyleft/gpl.html
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include <Python.h>
|
||||
+
|
||||
+#include "guilib/GUIToggleButtonControl.h"
|
||||
+#include "guilib/GUIFontManager.h"
|
||||
+#include "control.h"
|
||||
+#include "pyutil.h"
|
||||
+
|
||||
+using namespace std;
|
||||
+
|
||||
+
|
||||
+#ifdef __cplusplus
|
||||
+extern "C" {
|
||||
+#endif
|
||||
+
|
||||
+namespace PYXBMC
|
||||
+{
|
||||
+ PyObject* ControlToggle_New(
|
||||
+ PyTypeObject *type,
|
||||
+ PyObject *args,
|
||||
+ PyObject *kwds )
|
||||
+ {
|
||||
+ static const char *keywords[] = {
|
||||
+ "x", "y", "width", "height", "label",
|
||||
+ "focusTexture", "noFocusTexture",
|
||||
+ "textOffsetX", "textOffsetY", "alignment",
|
||||
+ "font", "textColor", "disabledColor", "angle", "shadowColor", "focusedColor", NULL };
|
||||
+ ControlToggle *self;
|
||||
+ char* cFont = NULL;
|
||||
+ char* cTextureFocus = NULL;
|
||||
+ char* cTextureNoFocus = NULL;
|
||||
+ char* cTextColor = NULL;
|
||||
+ char* cDisabledColor = NULL;
|
||||
+ char* cShadowColor = NULL;
|
||||
+ char* cFocusedColor = NULL;
|
||||
+
|
||||
+ PyObject* pObjectText;
|
||||
+
|
||||
+ self = (ControlToggle*)type->tp_alloc(type, 0);
|
||||
+ if (!self) return NULL;
|
||||
+ new(&self->bIsSelected) bool();
|
||||
+
|
||||
+ if (!PyArg_ParseTupleAndKeywords(
|
||||
+ args,
|
||||
+ kwds,
|
||||
+ (char*)"llllO|sslllssslss",
|
||||
+ (char**)keywords,
|
||||
+ &self->dwPosX,
|
||||
+ &self->dwPosY,
|
||||
+ &self->dwWidth,
|
||||
+ &self->dwHeight,
|
||||
+ &pObjectText,
|
||||
+ &cTextureFocus,
|
||||
+ &cTextureNoFocus,
|
||||
+ &cFont,
|
||||
+ &cTextColor,
|
||||
+ &cDisabledColor,
|
||||
+ &cShadowColor,
|
||||
+ &cFocusedColor))
|
||||
+ {
|
||||
+ Py_DECREF( self );
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ cTextureFocus :
|
||||
+ PyXBMCGetDefaultImage((char*)"button", (char*)"texturefocus", (char*)"button-focus.png");
|
||||
+ cTextureNoFocus :
|
||||
+ PyXBMCGetDefaultImage((char*)"button", (char*)"texturenofocus", (char*)"button-nofocus.jpg");
|
||||
+
|
||||
+ return (PyObject*)self;
|
||||
+ }
|
||||
+
|
||||
+ void ControlToggle_Dealloc(ControlToggle* self)
|
||||
+ {
|
||||
+ self->ob_type->tp_free((PyObject*)self);
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ // isSelected() Method
|
||||
+ PyDoc_STRVAR(isSelected__doc__,
|
||||
+ "isSelected() -- Returns the toggle buttons's selected status.\n"
|
||||
+ "\n"
|
||||
+ "example:\n"
|
||||
+ " - is = self.togglebutton.isSelected()\n");
|
||||
+
|
||||
+ PyObject* ControlToggle_IsSelected(ControlToggle *self, PyObject *args)
|
||||
+ {
|
||||
+ bool isSelected = false;
|
||||
+
|
||||
+ PyXBMCGUILock();
|
||||
+ if (self->pGUIControl)
|
||||
+ isSelected = ((CGUIToggleButtonControl*)self->pGUIControl)->IsSelected();
|
||||
+ PyXBMCGUIUnlock();
|
||||
+
|
||||
+ return Py_BuildValue((char*)"b", isSelected);
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ PyMethodDef ControlToggle_methods[] = {
|
||||
+ {(char*)"isSelected", (PyCFunction)ControlToggle_IsSelected, METH_VARARGS, isSelected__doc__},
|
||||
+ {NULL, NULL, 0, NULL}
|
||||
+ };
|
||||
+
|
||||
+ // ControlRadioButton class
|
||||
+ PyDoc_STRVAR(ControlToggle__doc__,
|
||||
+ "ControlRadioButton class.\n"
|
||||
+ "\n"
|
||||
+ "ControlRadioButton(x, y, width, height, label[, focusTexture, noFocusTexture, textOffsetX, textOffsetY,\n"
|
||||
+ " alignment, font, textColor, disabledColor, angle, shadowColor, focusedColor,\n"
|
||||
+ " radioFocusTexture, noRadioFocusTexture])\n"
|
||||
+ "\n"
|
||||
+ "x : integer - x coordinate of control.\n"
|
||||
+ "y : integer - y coordinate of control.\n"
|
||||
+ "width : integer - width of control.\n"
|
||||
+ "height : integer - height of control.\n"
|
||||
+ "label : string or unicode - text string.\n"
|
||||
+ "focusTexture : [opt] string - filename for focus texture.\n"
|
||||
+ "noFocusTexture : [opt] string - filename for no focus texture.\n"
|
||||
+ "textOffsetX : [opt] integer - x offset of label.\n"
|
||||
+ "textOffsetY : [opt] integer - y offset of label.\n"
|
||||
+ "alignment : [opt] integer - alignment of label - *Note, see xbfont.h\n"
|
||||
+ "font : [opt] string - font used for label text. (e.g. 'font13')\n"
|
||||
+ "textColor : [opt] hexstring - color of enabled radio button's label. (e.g. '0xFFFFFFFF')\n"
|
||||
+ "disabledColor : [opt] hexstring - color of disabled radio button's label. (e.g. '0xFFFF3300')\n"
|
||||
+ "angle : [opt] integer - angle of control. (+ rotates CCW, - rotates CW)\n"
|
||||
+ "shadowColor : [opt] hexstring - color of radio button's label's shadow. (e.g. '0xFF000000')\n"
|
||||
+ "focusedColor : [opt] hexstring - color of focused radio button's label. (e.g. '0xFF00FFFF')\n"
|
||||
+ "radioFocusTexture : [opt] string - filename for radio focus texture.\n"
|
||||
+ "noRadioFocusTexture : [opt] string - filename for radio no focus texture.\n"
|
||||
+ "\n"
|
||||
+ "*Note, You can use the above as keywords for arguments and skip certain optional arguments.\n"
|
||||
+ " Once you use a keyword, all following arguments require the keyword.\n"
|
||||
+ " After you create the control, you need to add it to the window with addControl().\n"
|
||||
+ "\n"
|
||||
+ "example:\n"
|
||||
+ " - self.radiobutton = xbmcgui.ControlToggleButton(100, 250, 200, 50, 'Status', font='font14')\n");
|
||||
+
|
||||
+ // Restore code and data sections to normal.
|
||||
+
|
||||
+ PyTypeObject ControlToggle_Type;
|
||||
+
|
||||
+ void initControlToggle_Type()
|
||||
+ {
|
||||
+ PyXBMCInitializeTypeObject(&ControlToggle_Type);
|
||||
+
|
||||
+ ControlToggle_Type.tp_name = (char*)"xbmcgui.ControlToggleButton";
|
||||
+ ControlToggle_Type.tp_basicsize = sizeof(ControlToggle);
|
||||
+ ControlToggle_Type.tp_dealloc = (destructor)ControlToggle_Dealloc;
|
||||
+ ControlToggle_Type.tp_compare = 0;
|
||||
+ ControlToggle_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE;
|
||||
+ ControlToggle_Type.tp_doc = ControlToggle__doc__;
|
||||
+ ControlToggle_Type.tp_methods = ControlToggle_methods;
|
||||
+ ControlToggle_Type.tp_base = &Control_Type;
|
||||
+ ControlToggle_Type.tp_new = ControlToggle_New;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#ifdef __cplusplus
|
||||
+}
|
||||
+#endif
|
||||
diff -Naur xbmc-f3b0020/xbmc/interfaces/python/xbmcmodule/Makefile.in xbmc-f3b0020.patch/xbmc/interfaces/python/xbmcmodule/Makefile.in
|
||||
--- xbmc-f3b0020/xbmc/interfaces/python/xbmcmodule/Makefile.in 2011-12-10 22:16:21.000000000 +0100
|
||||
+++ xbmc-f3b0020.patch/xbmc/interfaces/python/xbmcmodule/Makefile.in 2011-12-17 18:44:47.447960296 +0100
|
||||
@@ -13,6 +13,7 @@
|
||||
controlslider.cpp \
|
||||
controlspin.cpp \
|
||||
controltextbox.cpp \
|
||||
+ controltogglebutton.cpp \
|
||||
dialog.cpp \
|
||||
GUIPythonWindow.cpp \
|
||||
GUIPythonWindowDialog.cpp \
|
||||
diff -Naur xbmc-f3b0020/xbmc/interfaces/python/xbmcmodule/window.cpp xbmc-f3b0020.patch/xbmc/interfaces/python/xbmcmodule/window.cpp
|
||||
--- xbmc-f3b0020/xbmc/interfaces/python/xbmcmodule/window.cpp 2011-12-10 22:16:21.000000000 +0100
|
||||
+++ xbmc-f3b0020.patch/xbmc/interfaces/python/xbmcmodule/window.cpp 2011-12-17 18:43:42.218705123 +0100
|
||||
@@ -277,6 +277,12 @@
|
||||
if (li.font) ((ControlEdit*)pControl)->strFont = li.font->GetFontName();
|
||||
((ControlButton*)pControl)->align = li.align;
|
||||
break;
|
||||
+ case CGUIControl::GUICONTROL_TOGGLEBUTTON:
|
||||
+ pControl = (Control*)ControlToggle_Type.tp_alloc(&ControlToggle_Type, 0);
|
||||
+ new(&((ControlToggle*)pControl)->bIsSelected) bool();
|
||||
+
|
||||
+ break;
|
||||
+
|
||||
default:
|
||||
break;
|
||||
}
|
||||
diff -Naur xbmc-f3b0020/xbmc/interfaces/python/xbmcmodule/xbmcguimodule.cpp xbmc-f3b0020.patch/xbmc/interfaces/python/xbmcmodule/xbmcguimodule.cpp
|
||||
--- xbmc-f3b0020/xbmc/interfaces/python/xbmcmodule/xbmcguimodule.cpp 2011-12-10 22:16:21.000000000 +0100
|
||||
+++ xbmc-f3b0020.patch/xbmc/interfaces/python/xbmcmodule/xbmcguimodule.cpp 2011-12-17 18:43:42.219705142 +0100
|
||||
@@ -138,6 +138,7 @@
|
||||
initAction_Type();
|
||||
initControlRadioButton_Type();
|
||||
initControlEdit_Type();
|
||||
+ initControlToggle_Type();
|
||||
|
||||
if (PyType_Ready(&Window_Type) < 0 ||
|
||||
PyType_Ready(&WindowDialog_Type) < 0 ||
|
||||
@@ -160,7 +161,8 @@
|
||||
PyType_Ready(&ControlSlider_Type) < 0 ||
|
||||
PyType_Ready(&ControlRadioButton_Type) < 0 ||
|
||||
PyType_Ready(&ControlEdit_Type) < 0 ||
|
||||
- PyType_Ready(&Action_Type) < 0)
|
||||
+ PyType_Ready(&Action_Type) < 0 ||
|
||||
+ PyType_Ready(&ControlToggle_Type) < 0)
|
||||
return;
|
||||
|
||||
}
|
||||
@@ -200,6 +202,7 @@
|
||||
Py_INCREF(&Action_Type);
|
||||
Py_INCREF(&ControlRadioButton_Type);
|
||||
Py_INCREF(&ControlEdit_Type);
|
||||
+ Py_INCREF(&ControlToggle_Type);
|
||||
|
||||
pXbmcGuiModule = Py_InitModule3((char*)"xbmcgui", xbmcGuiMethods, xbmcgui_module_documentation);
|
||||
|
||||
@@ -227,7 +230,8 @@
|
||||
PyModule_AddObject(pXbmcGuiModule, (char*)"Action", (PyObject *)&Action_Type);
|
||||
PyModule_AddObject(pXbmcGuiModule, (char*)"ControlRadioButton", (PyObject*)&ControlRadioButton_Type);
|
||||
PyModule_AddObject(pXbmcGuiModule, (char*)"ControlEdit", (PyObject*)&ControlEdit_Type);
|
||||
-
|
||||
+ PyModule_AddObject(pXbmcGuiModule, (char*)"ControlToggle", (PyObject*)&ControlToggle_Type);
|
||||
+
|
||||
PyModule_AddStringConstant(pXbmcGuiModule, (char*)"__author__", (char*)PY_XBMC_AUTHOR);
|
||||
PyModule_AddStringConstant(pXbmcGuiModule, (char*)"__date__", (char*)"14 July 2006");
|
||||
PyModule_AddStringConstant(pXbmcGuiModule, (char*)"__version__", (char*)"1.2");
|
||||
diff -Naur xbmc-f3b0020/XBMC.xcodeproj/project.pbxproj xbmc-f3b0020.patch/XBMC.xcodeproj/project.pbxproj
|
@ -1,27 +0,0 @@
|
||||
From f025c39679b438cb91a0ef0f205736ff92fddeac Mon Sep 17 00:00:00 2001
|
||||
From: Vic Lee <llyzs@163.com>
|
||||
Date: Thu, 10 Feb 2011 09:36:15 +0800
|
||||
Subject: [PATCH 5/5] UDisk: device must be remount in DeviceChanged event
|
||||
|
||||
|
||||
Signed-off-by: Vic Lee <llyzs@163.com>
|
||||
---
|
||||
xbmc/linux/UDisksProvider.cpp | 2 ++
|
||||
1 files changed, 2 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/xbmc/storage/linux/UDisksProvider.cpp b/xbmc/storage/linux/UDisksProvider.cpp
|
||||
index 8e9b378..e24502a 100644
|
||||
--- a/xbmc/storage/linux/UDisksProvider.cpp
|
||||
+++ b/xbmc/storage/linux/UDisksProvider.cpp
|
||||
@@ -368,6 +368,8 @@ void CUDisksProvider::DeviceChanged(const char *object, IStorageEventsCallback *
|
||||
{
|
||||
bool mounted = device->m_isMounted;
|
||||
device->Update();
|
||||
+ if (g_advancedSettings.m_handleMounting)
|
||||
+ device->Mount();
|
||||
if (!mounted && device->m_isMounted && callback)
|
||||
callback->OnStorageAdded(device->m_Label, device->m_MountPath);
|
||||
else if (mounted && !device->m_isMounted && callback)
|
||||
--
|
||||
1.7.2.3
|
||||
|
@ -1,36 +0,0 @@
|
||||
From f52dd9a555e8e4b087ec6fbf040dc1f1155c4136 Mon Sep 17 00:00:00 2001
|
||||
From: "S. Davilla" <davilla@4pi.com>
|
||||
Date: Sat, 21 Apr 2012 14:11:56 -0400
|
||||
Subject: [PATCH] fixed, failure to broswe for smb shares. this hits all 1st
|
||||
time installs
|
||||
|
||||
---
|
||||
xbmc/filesystem/SmbFile.cpp | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/filesystem/FileSmb.cpp b/xbmc/filesystem/FileSmb.cpp
|
||||
index 382553c..c390031 100644
|
||||
--- a/xbmc/filesystem/FileSmb.cpp
|
||||
+++ b/xbmc/filesystem/FileSmb.cpp
|
||||
@@ -61,7 +61,6 @@ SMBCSRV* xb_smbc_cache(SMBCCTX* c, const char* server, const char* share, const
|
||||
m_IdleTimeout = 0;
|
||||
#endif
|
||||
m_context = NULL;
|
||||
- smbc_init(xb_smbc_auth, 0);
|
||||
}
|
||||
|
||||
CSMB::~CSMB()
|
||||
@@ -149,6 +148,10 @@ void CSMB::Init()
|
||||
}
|
||||
#endif
|
||||
|
||||
+ // reads smb.conf so this MUST be after we create smb.conf
|
||||
+ // multiple smbc_init calls are ignored by libsmbclient.
|
||||
+ smbc_init(xb_smbc_auth, 0);
|
||||
+
|
||||
#ifdef TARGET_WINDOWS
|
||||
// set the log function
|
||||
set_log_callback(xb_smbc_log);
|
||||
--
|
||||
1.7.10
|
||||
|
@ -1,13 +0,0 @@
|
||||
diff --git a/xbmc/storage/linux/UDisksProvider.cpp b/xbmc/storage/linux/UDisksProvider.cpp
|
||||
index 6afc1a8..c940e69 100644
|
||||
--- a/xbmc/storage/linux/UDisksProvider.cpp
|
||||
+++ b/xbmc/storage/linux/UDisksProvider.cpp
|
||||
@@ -356,7 +356,7 @@ void CUDisksProvider::DeviceChanged(const char *object, IStorageEventsCallback *
|
||||
{
|
||||
bool mounted = device->m_isMounted;
|
||||
device->Update();
|
||||
- if (g_advancedSettings.m_handleMounting)
|
||||
+ if (g_advancedSettings.m_handleMounting && device->m_isOptical)
|
||||
device->Mount();
|
||||
if (!mounted && device->m_isMounted && callback)
|
||||
callback->OnStorageAdded(device->m_Label, device->m_MountPath);
|
@ -1,13 +0,0 @@
|
||||
diff --git a/tools/EventClients/Clients/WiiRemote/WiiUse_WiiRemote.h b/tools/EventClients/Clients/WiiRemote/WiiUse_WiiRemote.h
|
||||
index dbdbb94..6f68715 100644
|
||||
--- a/tools/EventClients/Clients/WiiRemote/WiiUse_WiiRemote.h
|
||||
+++ b/tools/EventClients/Clients/WiiRemote/WiiUse_WiiRemote.h
|
||||
@@ -27,7 +27,7 @@
|
||||
#include "../../lib/c++/xbmcclient.h"
|
||||
#endif
|
||||
//#ifndef WIN32
|
||||
-// #include <unistd.h>
|
||||
+ #include <unistd.h>
|
||||
//#endif
|
||||
#include "wiiuse.h"
|
||||
//#define ICON_PATH "../../"
|
@ -1,101 +0,0 @@
|
||||
diff --git a/xbmc/ApplicationMessenger.cpp b/xbmc/ApplicationMessenger.cpp
|
||||
index 7ef2027..bea711b 100644
|
||||
--- a/xbmc/ApplicationMessenger.cpp
|
||||
+++ b/xbmc/ApplicationMessenger.cpp
|
||||
@@ -73,6 +73,9 @@
|
||||
#include "utils/JobManager.h"
|
||||
#include "storage/DetectDVDType.h"
|
||||
|
||||
+#include "pvr/PVRManager.h"
|
||||
+
|
||||
+using namespace PVR;
|
||||
using namespace std;
|
||||
|
||||
CDelayedMessage::CDelayedMessage(ThreadMessage& msg, unsigned int delay)
|
||||
@@ -261,12 +264,14 @@ void CApplicationMessenger::ProcessMessage(ThreadMessage *pMsg)
|
||||
|
||||
case TMSG_HIBERNATE:
|
||||
{
|
||||
+ g_PVRManager.SetWakeupCommand();
|
||||
g_powerManager.Hibernate();
|
||||
}
|
||||
break;
|
||||
|
||||
case TMSG_SUSPEND:
|
||||
{
|
||||
+ g_PVRManager.SetWakeupCommand();
|
||||
g_powerManager.Suspend();
|
||||
}
|
||||
break;
|
||||
diff --git a/xbmc/pvr/PVRManager.h b/xbmc/pvr/PVRManager.h
|
||||
index 94a8c9a..99280c6 100644
|
||||
--- a/xbmc/pvr/PVRManager.h
|
||||
+++ b/xbmc/pvr/PVRManager.h
|
||||
@@ -450,6 +450,11 @@ namespace PVR
|
||||
*/
|
||||
void LoadCurrentChannelSettings(void);
|
||||
|
||||
+ /*!
|
||||
+ * @brief Executes "pvrpowermanagement.setwakeupcmd"
|
||||
+ */
|
||||
+ bool SetWakeupCommand(void);
|
||||
+
|
||||
protected:
|
||||
/*!
|
||||
* @brief PVR update and control thread.
|
||||
@@ -525,11 +530,6 @@ namespace PVR
|
||||
void ShowProgressDialog(const CStdString &strText, int iProgress);
|
||||
|
||||
/*!
|
||||
- * @brief Executes "pvrpowermanagement.setwakeupcmd"
|
||||
- */
|
||||
- bool SetWakeupCommand(void);
|
||||
-
|
||||
- /*!
|
||||
* @brief Hide the progress dialog if it's visible.
|
||||
*/
|
||||
void HideProgressDialog(void);
|
||||
diff --git a/xbmc/pvr/timers/PVRTimers.cpp b/xbmc/pvr/timers/PVRTimers.cpp
|
||||
index cfba9bb..4e757d6 100644
|
||||
--- a/xbmc/pvr/timers/PVRTimers.cpp
|
||||
+++ b/xbmc/pvr/timers/PVRTimers.cpp
|
||||
@@ -714,8 +714,7 @@ CDateTime CPVRTimers::GetNextEventTime(void) const
|
||||
const CDateTimeSpan prewakeup(0, 0, g_guiSettings.GetInt("pvrpowermanagement.prewakeup"), 0);
|
||||
const CDateTimeSpan idle(0, 0, g_guiSettings.GetInt("pvrpowermanagement.backendidletime"), 0);
|
||||
|
||||
- CDateTime timerwakeuptime;
|
||||
- CDateTime dailywakeuptime;
|
||||
+ CDateTime retVal;
|
||||
|
||||
/* Check next active time */
|
||||
CPVRTimerInfoTag timer;
|
||||
@@ -724,15 +723,16 @@ CDateTime CPVRTimers::GetNextEventTime(void) const
|
||||
const CDateTime start = timer.StartAsUTC();
|
||||
|
||||
if ((start - idle) > now) {
|
||||
- timerwakeuptime = start - prewakeup;
|
||||
+ retVal = start - prewakeup;
|
||||
} else {
|
||||
- timerwakeuptime = now + idle;
|
||||
+ retVal = now + idle;
|
||||
}
|
||||
}
|
||||
|
||||
/* check daily wake up */
|
||||
if (dailywakup)
|
||||
{
|
||||
+ CDateTime dailywakeuptime;
|
||||
dailywakeuptime.SetFromDBTime(g_guiSettings.GetString("pvrpowermanagement.dailywakeuptime", false));
|
||||
dailywakeuptime = dailywakeuptime.GetAsUTCDateTime();
|
||||
|
||||
@@ -746,8 +746,9 @@ CDateTime CPVRTimers::GetNextEventTime(void) const
|
||||
const CDateTimeSpan oneDay(1,0,0,0);
|
||||
dailywakeuptime += oneDay;
|
||||
}
|
||||
+ if (dailywakeuptime < retVal)
|
||||
+ retVal = dailywakeuptime;
|
||||
}
|
||||
|
||||
- const CDateTime retVal((dailywakeuptime < timerwakeuptime) ? dailywakeuptime : timerwakeuptime);
|
||||
return retVal;
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
diff --git a/Makefile.include.in b/Makefile.include.in
|
||||
index b70245d..0537b86 100644
|
||||
--- a/Makefile.include.in
|
||||
+++ b/Makefile.include.in
|
||||
@@ -1,4 +1,4 @@
|
||||
-AR=ar
|
||||
+AR=@AR@
|
||||
ARFLAGS=crus
|
||||
RM=rm -rf
|
||||
SHELL=@SHELL@
|
||||
diff --git a/configure.in b/configure.in
|
||||
index 7348529..baea8e0 100755
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -22,7 +22,7 @@ AC_DEFUN([XB_FIND_SONAME],
|
||||
AC_MSG_CHECKING([for lib$2 soname])
|
||||
$1_FILENAME=$($CC -nostdlib -o /dev/null $LDFLAGS -l$2 -Wl,-M 2>/dev/null | grep "^LOAD.*$2" | awk '{V=2; print $V}')
|
||||
if [[ ! -z $$1_FILENAME ]]; then
|
||||
- $1_SONAME=$(objdump -p $$1_FILENAME | grep "SONAME.*$2" | awk '{V=2; print $V}')
|
||||
+ $1_SONAME=$($OBJDUMP -p $$1_FILENAME | grep "SONAME.*$2" | awk '{V=2; print $V}')
|
||||
fi
|
||||
else
|
||||
AC_MSG_CHECKING([for lib$2 dylib])
|
@ -1,99 +0,0 @@
|
||||
From 268d6a01b6a7dea0d53b042c246c95e87f4fc3d8 Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Thu, 26 Jul 2012 15:43:24 +0200
|
||||
Subject: [PATCH] move deleting gl textures to TextureManager, fixes asic hang
|
||||
on AMD
|
||||
|
||||
---
|
||||
xbmc/Application.cpp | 4 ++--
|
||||
xbmc/guilib/GUIFontTTFGL.cpp | 3 ++-
|
||||
xbmc/guilib/TextureManager.cpp | 13 +++++++++++++
|
||||
xbmc/guilib/TextureManager.h | 2 ++
|
||||
4 files changed, 19 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
|
||||
index 71d8a4e..b66459a 100644
|
||||
--- a/xbmc/Application.cpp
|
||||
+++ b/xbmc/Application.cpp
|
||||
@@ -2231,8 +2231,6 @@ void CApplication::Render()
|
||||
|
||||
g_Windowing.EndRender();
|
||||
|
||||
- g_TextureManager.FreeUnusedTextures();
|
||||
-
|
||||
// reset our info cache - we do this at the end of Render so that it is
|
||||
// fresh for the next process(), or after a windowclose animation (where process()
|
||||
// isn't called)
|
||||
@@ -2270,6 +2268,8 @@ void CApplication::Render()
|
||||
}
|
||||
CTimeUtils::UpdateFrameTime(flip);
|
||||
|
||||
+ g_TextureManager.FreeUnusedTextures();
|
||||
+
|
||||
g_renderManager.UpdateResolution();
|
||||
g_renderManager.ManageCaptures();
|
||||
}
|
||||
diff --git a/xbmc/guilib/GUIFontTTFGL.cpp b/xbmc/guilib/GUIFontTTFGL.cpp
|
||||
index 87e07ca..6c93eb8 100644
|
||||
--- a/xbmc/guilib/GUIFontTTFGL.cpp
|
||||
+++ b/xbmc/guilib/GUIFontTTFGL.cpp
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "GUIFontTTFGL.h"
|
||||
#include "GUIFontManager.h"
|
||||
#include "Texture.h"
|
||||
+#include "TextureManager.h"
|
||||
#include "GraphicContext.h"
|
||||
#include "gui3d.h"
|
||||
#include "utils/log.h"
|
||||
@@ -234,7 +235,7 @@ void CGUIFontTTFGL::DeleteHardwareTexture()
|
||||
if (m_bTextureLoaded)
|
||||
{
|
||||
if (glIsTexture(m_nTexture))
|
||||
- glDeleteTextures(1, (GLuint*) &m_nTexture);
|
||||
+ g_TextureManager.ReleaseHwTexture(m_nTexture);
|
||||
m_bTextureLoaded = false;
|
||||
}
|
||||
}
|
||||
diff --git a/xbmc/guilib/TextureManager.cpp b/xbmc/guilib/TextureManager.cpp
|
||||
index 9ef7889..ccd0d03 100644
|
||||
--- a/xbmc/guilib/TextureManager.cpp
|
||||
+++ b/xbmc/guilib/TextureManager.cpp
|
||||
@@ -457,6 +457,19 @@ void CGUITextureManager::FreeUnusedTextures()
|
||||
for (ivecTextures i = m_unusedTextures.begin(); i != m_unusedTextures.end(); ++i)
|
||||
delete *i;
|
||||
m_unusedTextures.clear();
|
||||
+
|
||||
+#if defined(HAS_GL) || defined(HAS_GLES)
|
||||
+ for (unsigned int i = 0; i < m_unusedHwTextures.size(); ++i)
|
||||
+ {
|
||||
+ glDeleteTextures(1, (GLuint*) &m_unusedHwTextures[i]);
|
||||
+ }
|
||||
+#endif
|
||||
+ m_unusedHwTextures.clear();
|
||||
+}
|
||||
+
|
||||
+void CGUITextureManager::ReleaseHwTexture(unsigned int texture)
|
||||
+{
|
||||
+ m_unusedHwTextures.push_back(texture);
|
||||
}
|
||||
|
||||
void CGUITextureManager::Cleanup()
|
||||
diff --git a/xbmc/guilib/TextureManager.h b/xbmc/guilib/TextureManager.h
|
||||
index dd47f48..001f470 100644
|
||||
--- a/xbmc/guilib/TextureManager.h
|
||||
+++ b/xbmc/guilib/TextureManager.h
|
||||
@@ -124,9 +124,11 @@ class CGUITextureManager
|
||||
void RemoveTexturePath(const CStdString &texturePath); ///< Remove a path from the paths to check when loading media
|
||||
|
||||
void FreeUnusedTextures(); ///< Free textures (called from app thread only)
|
||||
+ void ReleaseHwTexture(unsigned int texture);
|
||||
protected:
|
||||
std::vector<CTextureMap*> m_vecTextures;
|
||||
std::vector<CTextureMap*> m_unusedTextures;
|
||||
+ std::vector<unsigned int> m_unusedHwTextures;
|
||||
typedef std::vector<CTextureMap*>::iterator ivecTextures;
|
||||
// we have 2 texture bundles (one for the base textures, one for the theme)
|
||||
CTextureBundle m_TexBundle[2];
|
||||
--
|
||||
1.7.10
|
||||
|
@ -1,148 +0,0 @@
|
||||
From f01f95af95f287847c850572abe16b6969967ba7 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi@xbmc.org>
|
||||
Date: Wed, 16 May 2012 19:01:17 +0300
|
||||
Subject: [PATCH 1/3] fixed: crashes with corrupted rar files
|
||||
|
||||
UnrarXLib does not handle invalid files gracefully enough, and some
|
||||
files can cause it to tell CRarFile that it has written more data into
|
||||
its buffer than actually fits there, causing CRarFile::Read() to
|
||||
eventually overread the buffer.
|
||||
|
||||
Add checks in CRarFile for the validity of byte counts retrieved from
|
||||
UnrarXLib to prevent crashes in such situations.
|
||||
(cherry picked from commit ca9457286994ef0b021744797b8d78fb78260436)
|
||||
---
|
||||
xbmc/filesystem/FileRar.cpp | 17 +++++++++++++++++
|
||||
1 file changed, 17 insertions(+)
|
||||
|
||||
diff --git a/xbmc/filesystem/FileRar.cpp b/xbmc/filesystem/FileRar.cpp
|
||||
index 9c87a35..d026f8f 100644
|
||||
--- a/xbmc/filesystem/FileRar.cpp
|
||||
+++ b/xbmc/filesystem/FileRar.cpp
|
||||
@@ -310,6 +310,14 @@ unsigned int CFileRar::Read(void *lpBuf, int64_t uiBufSize)
|
||||
|
||||
m_iDataInBuffer = MAXWINMEMSIZE-m_pExtract->GetDataIO().UnpackToMemorySize;
|
||||
|
||||
+ if (m_iDataInBuffer < 0 ||
|
||||
+ m_iDataInBuffer > MAXWINMEMSIZE - (m_szStartOfBuffer - m_szBuffer))
|
||||
+ {
|
||||
+ // invalid data returned by UnrarXLib, prevent a crash
|
||||
+ CLog::Log(LOGERROR, "CRarFile::Read - Data buffer in inconsistent state");
|
||||
+ m_iDataInBuffer = 0;
|
||||
+ }
|
||||
+
|
||||
if (m_iDataInBuffer == 0)
|
||||
break;
|
||||
|
||||
@@ -471,6 +479,15 @@ int64_t CFileRar::Seek(int64_t iFilePosition, int iWhence)
|
||||
}
|
||||
m_iDataInBuffer = m_pExtract->GetDataIO().m_iSeekTo; // keep data
|
||||
m_iBufferStart = m_pExtract->GetDataIO().m_iStartOfBuffer;
|
||||
+
|
||||
+ if (m_iDataInBuffer < 0 || m_iDataInBuffer > MAXWINMEMSIZE)
|
||||
+ {
|
||||
+ // invalid data returned by UnrarXLib, prevent a crash
|
||||
+ CLog::Log(LOGERROR, "CRarFile::Seek - Data buffer in inconsistent state");
|
||||
+ m_iDataInBuffer = 0;
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
m_szStartOfBuffer = m_szBuffer+MAXWINMEMSIZE-m_iDataInBuffer;
|
||||
m_iFilePosition = iFilePosition;
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
||||
|
||||
From de1be4534cf410896b3102f95b6e02019ed64a90 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi@xbmc.org>
|
||||
Date: Wed, 16 May 2012 17:13:07 +0300
|
||||
Subject: [PATCH 2/3] fixed: rars that have unpacked size stored on first
|
||||
volume only
|
||||
|
||||
Some multi-volume RAR files have their unpacked size set as 0 in all
|
||||
volumes except the first one.
|
||||
|
||||
Use the previous unpacked size instead of 0 in such cases in order to
|
||||
support such files properly.
|
||||
(cherry picked from commit 683457d27736c09415a11d80933553f75139a253)
|
||||
---
|
||||
lib/UnrarXLib/volume.cpp | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/lib/UnrarXLib/volume.cpp b/lib/UnrarXLib/volume.cpp
|
||||
index 1f4d5e3..b24e98b 100644
|
||||
--- a/lib/UnrarXLib/volume.cpp
|
||||
+++ b/lib/UnrarXLib/volume.cpp
|
||||
@@ -15,6 +15,7 @@ bool MergeArchive(Archive &Arc,ComprDataIO *DataIO,bool ShowFileName,char Comman
|
||||
Log(Arc.FileName,St(MDataBadCRC),hd->FileName,Arc.FileName);
|
||||
}
|
||||
|
||||
+ Int64 PrevFullUnpSize = hd->FullUnpSize;
|
||||
Int64 PosBeforeClose=Arc.Tell();
|
||||
Arc.Close();
|
||||
|
||||
@@ -144,6 +145,13 @@ bool MergeArchive(Archive &Arc,ComprDataIO *DataIO,bool ShowFileName,char Comman
|
||||
}
|
||||
}
|
||||
#endif
|
||||
+
|
||||
+ if (hd->FullUnpSize == 0)
|
||||
+ {
|
||||
+ // some archives only have correct UnpSize in the first volume
|
||||
+ hd->FullUnpSize = PrevFullUnpSize;
|
||||
+ }
|
||||
+
|
||||
if (DataIO!=NULL)
|
||||
{
|
||||
if (HeaderType==ENDARC_HEAD)
|
||||
--
|
||||
1.7.10
|
||||
|
||||
|
||||
From d7bed5ddbbc98d7fedac663410d8e7e64bdf20c7 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi@xbmc.org>
|
||||
Date: Wed, 16 May 2012 00:14:49 +0300
|
||||
Subject: [PATCH 3/3] fixed: CRarFile::Read() returning wrong data after some
|
||||
seek patterns
|
||||
|
||||
Certain seek patterns on a file inside a non-compressed rar file can
|
||||
cause CmdExtract::UnstoreFile() to think that the destination buffer has
|
||||
been filled (as DestUnpSize counter, originally set to the file size,
|
||||
reaches zero).
|
||||
|
||||
However, counting written bytes using DestUnpSize doesn't make sense for
|
||||
the UnpackToMemory codepath used for non-compressed rar files, as there
|
||||
can be seeks which can eventually cause more data to be read than what
|
||||
the actual file size was. The actual output buffer is internally handled
|
||||
by ComprDataIO.
|
||||
|
||||
The check in UnstoreFile() will result in not all data being written to
|
||||
the destination buffer, causing CRarFile::Read() to return old stale
|
||||
data.
|
||||
|
||||
Fix that by dropping the unnecessary DestUnpSize handling in
|
||||
UnpackToMemory codepath of CmdExtract::UnstoreFile().
|
||||
(cherry picked from commit 840cd4ce4ac8c781e7d35db2ed86d575a42c37e7)
|
||||
---
|
||||
lib/UnrarXLib/extract.cpp | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/lib/UnrarXLib/extract.cpp b/lib/UnrarXLib/extract.cpp
|
||||
index b4a8091..368a899 100644
|
||||
--- a/lib/UnrarXLib/extract.cpp
|
||||
+++ b/lib/UnrarXLib/extract.cpp
|
||||
@@ -863,10 +863,7 @@ void CmdExtract::UnstoreFile(ComprDataIO &DataIO,Int64 DestUnpSize)
|
||||
}
|
||||
if (Code > 0)
|
||||
{
|
||||
- Code=Code<DestUnpSize ? Code:int64to32(DestUnpSize);
|
||||
DataIO.UnpWrite(&Buffer[0],Code);
|
||||
- if (DestUnpSize>=0)
|
||||
- DestUnpSize-=Code;
|
||||
}
|
||||
else
|
||||
{
|
||||
--
|
||||
1.7.10
|
||||
|
@ -1,31 +0,0 @@
|
||||
From ab175ba28508445f6aff57386a8ce04b58a86f60 Mon Sep 17 00:00:00 2001
|
||||
From: Memphiz <memphis@machzwo.de>
|
||||
Date: Fri, 11 May 2012 19:56:37 +0200
|
||||
Subject: [PATCH] [fix] - reapply fix for airtunes with AE which was lost
|
||||
during merge
|
||||
|
||||
---
|
||||
xbmc/network/AirTunesServer.cpp | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/xbmc/network/AirTunesServer.cpp b/xbmc/network/AirTunesServer.cpp
|
||||
index 285a0a6..a60ad09 100644
|
||||
--- a/xbmc/network/AirTunesServer.cpp
|
||||
+++ b/xbmc/network/AirTunesServer.cpp
|
||||
@@ -125,11 +125,11 @@ ao_device* CAirTunesServer::AudioOutputFunctions::ao_open_live(int driver_id, ao
|
||||
if (ao_get_option(option, "name"))
|
||||
item.GetMusicInfoTag()->SetTitle(ao_get_option(option, "name"));
|
||||
|
||||
- g_application.getApplicationMessenger().PlayFile(item);
|
||||
-
|
||||
ThreadMessage tMsg2 = { TMSG_GUI_ACTIVATE_WINDOW, WINDOW_VISUALISATION, 0 };
|
||||
g_application.getApplicationMessenger().SendMessage(tMsg2, true);
|
||||
|
||||
+ g_application.getApplicationMessenger().PlayFile(item);
|
||||
+
|
||||
return (ao_device*) device;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
@ -1,527 +0,0 @@
|
||||
From b73018af2ae69c7cfad0a4461d169a49c7d0dfbf Mon Sep 17 00:00:00 2001
|
||||
From: Memphiz <memphis@machzwo.de>
|
||||
Date: Tue, 15 May 2012 19:12:07 +0200
|
||||
Subject: [PATCH] [airtunes] - implementation for windows using libshairplay
|
||||
|
||||
---
|
||||
xbmc/network/AirTunesServer.cpp | 330 +++++++++++++++++++++++++++++++++++++--
|
||||
xbmc/network/AirTunesServer.h | 23 +++
|
||||
2 files changed, 343 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/xbmc/network/AirTunesServer.cpp b/xbmc/network/AirTunesServer.cpp
|
||||
index a60ad09..e14da90 100644
|
||||
--- a/xbmc/network/AirTunesServer.cpp
|
||||
+++ b/xbmc/network/AirTunesServer.cpp
|
||||
@@ -17,7 +17,9 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
+#if !defined(TARGET_WINDOWS)
|
||||
#pragma GCC diagnostic ignored "-Wwrite-strings"
|
||||
+#endif
|
||||
|
||||
#include "AirTunesServer.h"
|
||||
|
||||
@@ -37,15 +39,243 @@
|
||||
#include "music/tags/MusicInfoTag.h"
|
||||
#include "FileItem.h"
|
||||
#include "GUIInfoManager.h"
|
||||
+#include "guilib/GUIWindowManager.h"
|
||||
#include "utils/Variant.h"
|
||||
#include "settings/AdvancedSettings.h"
|
||||
+#include "utils/EndianSwap.h"
|
||||
+
|
||||
+#include <map>
|
||||
+#include <string>
|
||||
+
|
||||
|
||||
using namespace XFILE;
|
||||
|
||||
+#if defined(TARGET_WINDOWS)
|
||||
+DllLibShairplay *CAirTunesServer::m_pLibShairplay = NULL;
|
||||
+#else
|
||||
DllLibShairport *CAirTunesServer::m_pLibShairport = NULL;
|
||||
+#endif
|
||||
CAirTunesServer *CAirTunesServer::ServerInstance = NULL;
|
||||
CStdString CAirTunesServer::m_macAddress;
|
||||
|
||||
+//parse daap metadata - thx to project MythTV
|
||||
+std::map<std::string, std::string> decodeDMAP(const char *buffer, unsigned int size)
|
||||
+{
|
||||
+ std::map<std::string, std::string> result;
|
||||
+ unsigned int offset = 8;
|
||||
+ while (offset < size)
|
||||
+ {
|
||||
+ std::string tag;
|
||||
+ tag.append(buffer + offset, 4);
|
||||
+ offset += 4;
|
||||
+ uint32_t length = Endian_SwapBE32(*(uint32_t *)(buffer + offset));
|
||||
+ offset += sizeof(uint32_t);
|
||||
+ std::string content;
|
||||
+ content.append(buffer + offset, length);//possible fixme - utf8?
|
||||
+ offset += length;
|
||||
+ result[tag] = content;
|
||||
+ }
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
+void CAirTunesServer::SetMetadataFromBuffer(const char *buffer, unsigned int size)
|
||||
+{
|
||||
+ MUSIC_INFO::CMusicInfoTag tag;
|
||||
+ std::map<std::string, std::string> metadata = decodeDMAP(buffer, size);
|
||||
+ if(metadata["asal"].length())
|
||||
+ tag.SetAlbum(metadata["asal"]);//album
|
||||
+ if(metadata["minm"].length())
|
||||
+ tag.SetTitle(metadata["minm"]);//title
|
||||
+ if(metadata["asar"].length())
|
||||
+ tag.SetArtist(metadata["asar"]);//artist
|
||||
+ g_infoManager.SetCurrentSongTag(tag);
|
||||
+}
|
||||
+
|
||||
+void CAirTunesServer::SetCoverArtFromBuffer(const char *buffer, unsigned int size)
|
||||
+{
|
||||
+ XFILE::CFile tmpFile;
|
||||
+ const char *tmpFileName = "special://temp/airtunes_album_thumb.jpg";
|
||||
+
|
||||
+ if(!size)
|
||||
+ return;
|
||||
+
|
||||
+ if (tmpFile.OpenForWrite(tmpFileName, true))
|
||||
+ {
|
||||
+ int writtenBytes=0;
|
||||
+ writtenBytes = tmpFile.Write(buffer, size);
|
||||
+ tmpFile.Close();
|
||||
+
|
||||
+ if(writtenBytes)
|
||||
+ {
|
||||
+ //reset to empty before setting the new one
|
||||
+ //else it won't get refreshed because the name didn't change
|
||||
+ g_infoManager.SetCurrentAlbumThumb("");
|
||||
+ g_infoManager.SetCurrentAlbumThumb(tmpFileName);
|
||||
+ //update the ui
|
||||
+ CGUIMessage msg(GUI_MSG_NOTIFY_ALL,0,0,GUI_MSG_REFRESH_THUMBS);
|
||||
+ g_windowManager.SendThreadMessage(msg);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#if defined(TARGET_WINDOWS)
|
||||
+#define RSA_KEY " \
|
||||
+-----BEGIN RSA PRIVATE KEY-----\
|
||||
+MIIEpQIBAAKCAQEA59dE8qLieItsH1WgjrcFRKj6eUWqi+bGLOX1HL3U3GhC/j0Qg90u3sG/1CUt\
|
||||
+wC5vOYvfDmFI6oSFXi5ELabWJmT2dKHzBJKa3k9ok+8t9ucRqMd6DZHJ2YCCLlDRKSKv6kDqnw4U\
|
||||
+wPdpOMXziC/AMj3Z/lUVX1G7WSHCAWKf1zNS1eLvqr+boEjXuBOitnZ/bDzPHrTOZz0Dew0uowxf\
|
||||
+/+sG+NCK3eQJVxqcaJ/vEHKIVd2M+5qL71yJQ+87X6oV3eaYvt3zWZYD6z5vYTcrtij2VZ9Zmni/\
|
||||
+UAaHqn9JdsBWLUEpVviYnhimNVvYFZeCXg/IdTQ+x4IRdiXNv5hEewIDAQABAoIBAQDl8Axy9XfW\
|
||||
+BLmkzkEiqoSwF0PsmVrPzH9KsnwLGH+QZlvjWd8SWYGN7u1507HvhF5N3drJoVU3O14nDY4TFQAa\
|
||||
+LlJ9VM35AApXaLyY1ERrN7u9ALKd2LUwYhM7Km539O4yUFYikE2nIPscEsA5ltpxOgUGCY7b7ez5\
|
||||
+NtD6nL1ZKauw7aNXmVAvmJTcuPxWmoktF3gDJKK2wxZuNGcJE0uFQEG4Z3BrWP7yoNuSK3dii2jm\
|
||||
+lpPHr0O/KnPQtzI3eguhe0TwUem/eYSdyzMyVx/YpwkzwtYL3sR5k0o9rKQLtvLzfAqdBxBurciz\
|
||||
+aaA/L0HIgAmOit1GJA2saMxTVPNhAoGBAPfgv1oeZxgxmotiCcMXFEQEWflzhWYTsXrhUIuz5jFu\
|
||||
+a39GLS99ZEErhLdrwj8rDDViRVJ5skOp9zFvlYAHs0xh92ji1E7V/ysnKBfsMrPkk5KSKPrnjndM\
|
||||
+oPdevWnVkgJ5jxFuNgxkOLMuG9i53B4yMvDTCRiIPMQ++N2iLDaRAoGBAO9v//mU8eVkQaoANf0Z\
|
||||
+oMjW8CN4xwWA2cSEIHkd9AfFkftuv8oyLDCG3ZAf0vrhrrtkrfa7ef+AUb69DNggq4mHQAYBp7L+\
|
||||
+k5DKzJrKuO0r+R0YbY9pZD1+/g9dVt91d6LQNepUE/yY2PP5CNoFmjedpLHMOPFdVgqDzDFxU8hL\
|
||||
+AoGBANDrr7xAJbqBjHVwIzQ4To9pb4BNeqDndk5Qe7fT3+/H1njGaC0/rXE0Qb7q5ySgnsCb3DvA\
|
||||
+cJyRM9SJ7OKlGt0FMSdJD5KG0XPIpAVNwgpXXH5MDJg09KHeh0kXo+QA6viFBi21y340NonnEfdf\
|
||||
+54PX4ZGS/Xac1UK+pLkBB+zRAoGAf0AY3H3qKS2lMEI4bzEFoHeK3G895pDaK3TFBVmD7fV0Zhov\
|
||||
+17fegFPMwOII8MisYm9ZfT2Z0s5Ro3s5rkt+nvLAdfC/PYPKzTLalpGSwomSNYJcB9HNMlmhkGzc\
|
||||
+1JnLYT4iyUyx6pcZBmCd8bD0iwY/FzcgNDaUmbX9+XDvRA0CgYEAkE7pIPlE71qvfJQgoA9em0gI\
|
||||
+LAuE4Pu13aKiJnfft7hIjbK+5kyb3TysZvoyDnb3HOKvInK7vXbKuU4ISgxB2bB3HcYzQMGsz1qJ\
|
||||
+2gG0N5hvJpzwwhbhXqFKA4zaaSrw622wDniAK5MlIE0tIAKKP4yxNGjoD2QYjhBGuhvkWKY=\
|
||||
+-----END RSA PRIVATE KEY-----"
|
||||
+
|
||||
+void CAirTunesServer::AudioOutputFunctions::audio_set_metadata(void *cls, void *session, const void *buffer, int buflen)
|
||||
+{
|
||||
+ CAirTunesServer::SetMetadataFromBuffer((char *)buffer, buflen);
|
||||
+}
|
||||
+
|
||||
+void CAirTunesServer::AudioOutputFunctions::audio_set_coverart(void *cls, void *session, const void *buffer, int buflen)
|
||||
+{
|
||||
+ CAirTunesServer::SetCoverArtFromBuffer((char *)buffer, buflen);
|
||||
+}
|
||||
+
|
||||
+void* CAirTunesServer::AudioOutputFunctions::audio_init(void *cls, int bits, int channels, int samplerate)
|
||||
+{
|
||||
+ XFILE::CPipeFile *pipe=(XFILE::CPipeFile *)cls;
|
||||
+ pipe->OpenForWrite(XFILE::PipesManager::GetInstance().GetUniquePipeName());
|
||||
+ pipe->SetOpenThreashold(300);
|
||||
+
|
||||
+ BXA_FmtHeader header;
|
||||
+ strncpy(header.fourcc, "BXA ", 4);
|
||||
+ header.type = BXA_PACKET_TYPE_FMT;
|
||||
+ header.bitsPerSample = bits;
|
||||
+ header.channels = channels;
|
||||
+ header.sampleRate = samplerate;
|
||||
+ header.durationMs = 0;
|
||||
+
|
||||
+ if (pipe->Write(&header, sizeof(header)) == 0)
|
||||
+ return 0;
|
||||
+
|
||||
+ ThreadMessage tMsg = { TMSG_MEDIA_STOP };
|
||||
+ g_application.getApplicationMessenger().SendMessage(tMsg, true);
|
||||
+
|
||||
+ CFileItem item;
|
||||
+ item.SetPath(pipe->GetName());
|
||||
+ item.SetMimeType("audio/x-xbmc-pcm");
|
||||
+
|
||||
+ ThreadMessage tMsg2 = { TMSG_GUI_ACTIVATE_WINDOW, WINDOW_VISUALISATION, 0 };
|
||||
+ g_application.getApplicationMessenger().SendMessage(tMsg2, true);
|
||||
+
|
||||
+ g_application.getApplicationMessenger().PlayFile(item);
|
||||
+
|
||||
+ return "XBMC-AirTunes";//session
|
||||
+}
|
||||
+
|
||||
+void CAirTunesServer::AudioOutputFunctions::audio_set_volume(void *cls, void *session, float volume)
|
||||
+{
|
||||
+ //volume from -144 - 0
|
||||
+ float volPercent = 1 - volume/-144;
|
||||
+ g_application.SetVolume(volPercent, false);//non-percent volume 0.0-1.0
|
||||
+}
|
||||
+
|
||||
+void CAirTunesServer::AudioOutputFunctions::audio_process(void *cls, void *session, const void *buffer, int buflen)
|
||||
+{
|
||||
+ #define NUM_OF_BYTES 64
|
||||
+ XFILE::CPipeFile *pipe=(XFILE::CPipeFile *)cls;
|
||||
+ int sentBytes = 0;
|
||||
+ unsigned char buf[NUM_OF_BYTES];
|
||||
+
|
||||
+ while (sentBytes < buflen)
|
||||
+ {
|
||||
+ int n = (buflen - sentBytes < NUM_OF_BYTES ? buflen - sentBytes : NUM_OF_BYTES);
|
||||
+ memcpy(buf, (char*) buffer + sentBytes, n);
|
||||
+
|
||||
+ if (pipe->Write(buf, n) == 0)
|
||||
+ return;
|
||||
+
|
||||
+ sentBytes += n;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void CAirTunesServer::AudioOutputFunctions::audio_flush(void *cls, void *session)
|
||||
+{
|
||||
+ XFILE::CPipeFile *pipe=(XFILE::CPipeFile *)cls;
|
||||
+ pipe->Flush();
|
||||
+}
|
||||
+
|
||||
+void CAirTunesServer::AudioOutputFunctions::audio_destroy(void *cls, void *session)
|
||||
+{
|
||||
+ XFILE::CPipeFile *pipe=(XFILE::CPipeFile *)cls;
|
||||
+ pipe->SetEof();
|
||||
+ pipe->Close();
|
||||
+
|
||||
+ //fix airplay video for ios5 devices
|
||||
+ //on ios5 when airplaying video
|
||||
+ //the client first opens an airtunes stream
|
||||
+ //while the movie is loading
|
||||
+ //in that case we don't want to stop the player here
|
||||
+ //because this would stop the airplaying video
|
||||
+#ifdef HAS_AIRPLAY
|
||||
+ if (!CAirPlayServer::IsPlaying())
|
||||
+#endif
|
||||
+ {
|
||||
+ ThreadMessage tMsg = { TMSG_MEDIA_STOP };
|
||||
+ g_application.getApplicationMessenger().SendMessage(tMsg, true);
|
||||
+ CLog::Log(LOGDEBUG, "AIRTUNES: AirPlay not running - stopping player");
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void shairplay_log(int level, const char *msg)
|
||||
+{
|
||||
+ int xbmcLevel = LOGINFO;
|
||||
+
|
||||
+ switch(level)
|
||||
+ {
|
||||
+ case RAOP_LOG_EMERG: // system is unusable
|
||||
+ xbmcLevel = LOGFATAL;
|
||||
+ break;
|
||||
+ case RAOP_LOG_ALERT: // action must be taken immediately
|
||||
+ case RAOP_LOG_CRIT: // critical conditions
|
||||
+ xbmcLevel = LOGSEVERE;
|
||||
+ break;
|
||||
+ case RAOP_LOG_ERR: // error conditions
|
||||
+ xbmcLevel = LOGERROR;
|
||||
+ break;
|
||||
+ case RAOP_LOG_WARNING: // warning conditions
|
||||
+ xbmcLevel = LOGWARNING;
|
||||
+ break;
|
||||
+ case RAOP_LOG_NOTICE: // normal but significant condition
|
||||
+ xbmcLevel = LOGNOTICE;
|
||||
+ break;
|
||||
+ case RAOP_LOG_INFO: // informational
|
||||
+ xbmcLevel = LOGINFO;
|
||||
+ break;
|
||||
+ case RAOP_LOG_DEBUG: // debug-level messages
|
||||
+ xbmcLevel = LOGDEBUG;
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ CLog::Log(xbmcLevel, "AIRTUNES: %s", msg);
|
||||
+}
|
||||
+
|
||||
+#else
|
||||
+
|
||||
struct ao_device_xbmc
|
||||
{
|
||||
XFILE::CPipeFile *pipe;
|
||||
@@ -214,6 +444,17 @@ char* CAirTunesServer::AudioOutputFunctions::ao_get_option(ao_option *options, c
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+int shairport_log(const char* msg, size_t msgSize)
|
||||
+{
|
||||
+ if( g_advancedSettings.m_logEnableAirtunes)
|
||||
+ {
|
||||
+ CLog::Log(LOGDEBUG, "AIRTUNES: %s", msg);
|
||||
+ }
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
bool CAirTunesServer::StartServer(int port, bool nonlocal, bool usePassword, const CStdString &password/*=""*/)
|
||||
{
|
||||
bool success = false;
|
||||
@@ -243,7 +484,9 @@ bool CAirTunesServer::StartServer(int port, bool nonlocal, bool usePassword, con
|
||||
ServerInstance = new CAirTunesServer(port, nonlocal);
|
||||
if (ServerInstance->Initialize(password))
|
||||
{
|
||||
+#ifndef TARGET_WINDOWS
|
||||
ServerInstance->Create();
|
||||
+#endif
|
||||
success = true;
|
||||
}
|
||||
|
||||
@@ -264,6 +507,9 @@ bool CAirTunesServer::StartServer(int port, bool nonlocal, bool usePassword, con
|
||||
txt["sr"] = "44100";
|
||||
txt["pw"] = "false";
|
||||
txt["vn"] = "3";
|
||||
+ txt["da"] = "true";
|
||||
+ txt["vs"] = "130.14";
|
||||
+ txt["md"] = "0,1,2";
|
||||
txt["txtvers"] = "1";
|
||||
|
||||
CZeroconf::GetInstance()->PublishService("servers.airtunes", "_raop._tcp", appName, port, txt);
|
||||
@@ -276,10 +522,12 @@ void CAirTunesServer::StopServer(bool bWait)
|
||||
{
|
||||
if (ServerInstance)
|
||||
{
|
||||
+#if !defined(TARGET_WINDOWS)
|
||||
if (m_pLibShairport->IsLoaded())
|
||||
{
|
||||
m_pLibShairport->shairport_exit();
|
||||
}
|
||||
+#endif
|
||||
ServerInstance->StopThread(bWait);
|
||||
ServerInstance->Deinitialize();
|
||||
if (bWait)
|
||||
@@ -295,47 +543,98 @@ void CAirTunesServer::StopServer(bool bWait)
|
||||
CAirTunesServer::CAirTunesServer(int port, bool nonlocal) : CThread("AirTunesServer")
|
||||
{
|
||||
m_port = port;
|
||||
+#if defined(TARGET_WINDOWS)
|
||||
+ m_pLibShairplay = new DllLibShairplay();
|
||||
+ m_pPipe = new XFILE::CPipeFile;
|
||||
+#else
|
||||
m_pLibShairport = new DllLibShairport();
|
||||
+#endif
|
||||
}
|
||||
|
||||
CAirTunesServer::~CAirTunesServer()
|
||||
{
|
||||
+#if defined(TARGET_WINDOWS)
|
||||
+ if (m_pLibShairplay->IsLoaded())
|
||||
+ {
|
||||
+ m_pLibShairplay->Unload();
|
||||
+ }
|
||||
+ delete m_pLibShairplay;
|
||||
+ delete m_pPipe;
|
||||
+#else
|
||||
if (m_pLibShairport->IsLoaded())
|
||||
{
|
||||
m_pLibShairport->Unload();
|
||||
}
|
||||
delete m_pLibShairport;
|
||||
+#endif
|
||||
}
|
||||
|
||||
void CAirTunesServer::Process()
|
||||
{
|
||||
m_bStop = false;
|
||||
|
||||
+#if !defined(TARGET_WINDOWS)
|
||||
while (!m_bStop && m_pLibShairport->shairport_is_running())
|
||||
{
|
||||
m_pLibShairport->shairport_loop();
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
-int shairport_log(const char* msg, size_t msgSize)
|
||||
+bool CAirTunesServer::Initialize(const CStdString &password)
|
||||
{
|
||||
- if( g_advancedSettings.m_logEnableAirtunes)
|
||||
+ bool ret = false;
|
||||
+
|
||||
+ Deinitialize();
|
||||
+
|
||||
+#if defined(TARGET_WINDOWS)
|
||||
+ if (m_pLibShairplay->Load())
|
||||
{
|
||||
- CLog::Log(LOGDEBUG, "AIRTUNES: %s", msg);
|
||||
+
|
||||
+ raop_callbacks_t ao;
|
||||
+ ao.cls = m_pPipe;
|
||||
+ ao.audio_init = AudioOutputFunctions::audio_init;
|
||||
+ ao.audio_set_volume = AudioOutputFunctions::audio_set_volume;
|
||||
+ ao.audio_set_metadata = AudioOutputFunctions::audio_set_metadata;
|
||||
+ ao.audio_set_coverart = AudioOutputFunctions::audio_set_coverart;
|
||||
+ ao.audio_process = AudioOutputFunctions::audio_process;
|
||||
+ ao.audio_flush = AudioOutputFunctions::audio_flush;
|
||||
+ ao.audio_destroy = AudioOutputFunctions::audio_destroy;
|
||||
+ m_pLibShairplay->EnableDelayedUnload(false);
|
||||
+ m_pRaop = m_pLibShairplay->raop_init(1, &ao, RSA_KEY);//1 - we handle one client at a time max
|
||||
+ ret = m_pRaop != NULL;
|
||||
+
|
||||
+ if(ret)
|
||||
+ {
|
||||
+ char macAdr[6];
|
||||
+ unsigned short port = (unsigned short)m_port;
|
||||
+
|
||||
+ m_pLibShairplay->raop_set_log_level(m_pRaop, RAOP_LOG_WARNING);
|
||||
+ if(g_advancedSettings.m_logEnableAirtunes)
|
||||
+ {
|
||||
+ m_pLibShairplay->raop_set_log_level(m_pRaop, RAOP_LOG_DEBUG);
|
||||
+ }
|
||||
+
|
||||
+ m_pLibShairplay->raop_set_log_callback(m_pRaop, shairplay_log);
|
||||
+
|
||||
+ CNetworkInterface *net = g_application.getNetwork().GetFirstConnectedInterface();
|
||||
+
|
||||
+ if (net)
|
||||
+ {
|
||||
+ net->GetMacAddressRaw(macAdr);
|
||||
+ }
|
||||
+
|
||||
+ ret = m_pLibShairplay->raop_start(m_pRaop, &port, macAdr, 6, password.c_str()) >= 0;
|
||||
+ }
|
||||
}
|
||||
- return 1;
|
||||
-}
|
||||
|
||||
-bool CAirTunesServer::Initialize(const CStdString &password)
|
||||
-{
|
||||
- bool ret = false;
|
||||
+#else
|
||||
+
|
||||
int numArgs = 3;
|
||||
CStdString hwStr;
|
||||
CStdString pwStr;
|
||||
CStdString portStr;
|
||||
|
||||
- Deinitialize();
|
||||
-
|
||||
hwStr.Format("--mac=%s", m_macAddress.c_str());
|
||||
pwStr.Format("--password=%s",password.c_str());
|
||||
portStr.Format("--server_port=%d",m_port);
|
||||
@@ -368,16 +667,27 @@ bool CAirTunesServer::Initialize(const CStdString &password)
|
||||
m_pLibShairport->shairport_main(numArgs, argv);
|
||||
ret = true;
|
||||
}
|
||||
+#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
void CAirTunesServer::Deinitialize()
|
||||
{
|
||||
+#if defined(TARGET_WINDOWS)
|
||||
+ if (m_pLibShairplay && m_pLibShairplay->IsLoaded())
|
||||
+ {
|
||||
+ m_pLibShairplay->raop_stop(m_pRaop);
|
||||
+ m_pLibShairplay->raop_destroy(m_pRaop);
|
||||
+ m_pLibShairplay->Unload();
|
||||
+ }
|
||||
+#else
|
||||
if (m_pLibShairport && m_pLibShairport->IsLoaded())
|
||||
{
|
||||
m_pLibShairport->shairport_exit();
|
||||
m_pLibShairport->Unload();
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
+
|
||||
diff --git a/xbmc/network/AirTunesServer.h b/xbmc/network/AirTunesServer.h
|
||||
index da893df..4a30e0a 100644
|
||||
--- a/xbmc/network/AirTunesServer.h
|
||||
+++ b/xbmc/network/AirTunesServer.h
|
||||
@@ -26,7 +26,11 @@
|
||||
|
||||
#ifdef HAS_AIRTUNES
|
||||
|
||||
+#if defined(TARGET_WINDOWS)
|
||||
+#include "DllLibShairplay.h"
|
||||
+#else
|
||||
#include "DllLibShairport.h"
|
||||
+#endif
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
@@ -41,11 +45,14 @@
|
||||
|
||||
class DllLibShairport;
|
||||
|
||||
+
|
||||
class CAirTunesServer : public CThread
|
||||
{
|
||||
public:
|
||||
static bool StartServer(int port, bool nonlocal, bool usePassword, const CStdString &password="");
|
||||
static void StopServer(bool bWait);
|
||||
+ static void SetMetadataFromBuffer(const char *buffer, unsigned int size);
|
||||
+ static void SetCoverArtFromBuffer(const char *buffer, unsigned int size);
|
||||
|
||||
protected:
|
||||
void Process();
|
||||
@@ -57,13 +64,28 @@ class CAirTunesServer : public CThread
|
||||
void Deinitialize();
|
||||
|
||||
int m_port;
|
||||
+#if defined(TARGET_WINDOWS)
|
||||
+ static DllLibShairplay *m_pLibShairplay;//the lib
|
||||
+ raop_t *m_pRaop;
|
||||
+ XFILE::CPipeFile *m_pPipe;
|
||||
+#else
|
||||
static DllLibShairport *m_pLibShairport;//the lib
|
||||
+#endif
|
||||
static CAirTunesServer *ServerInstance;
|
||||
static CStdString m_macAddress;
|
||||
|
||||
class AudioOutputFunctions
|
||||
{
|
||||
public:
|
||||
+#if defined(TARGET_WINDOWS)
|
||||
+ static void* audio_init(void *cls, int bits, int channels, int samplerate);
|
||||
+ static void audio_set_volume(void *cls, void *session, float volume);
|
||||
+ static void audio_set_metadata(void *cls, void *session, const void *buffer, int buflen);
|
||||
+ static void audio_set_coverart(void *cls, void *session, const void *buffer, int buflen);
|
||||
+ static void audio_process(void *cls, void *session, const void *buffer, int buflen);
|
||||
+ static void audio_flush(void *cls, void *session);
|
||||
+ static void audio_destroy(void *cls, void *session);
|
||||
+#else
|
||||
static void ao_initialize(void);
|
||||
static int ao_play(ao_device *device, char *output_samples, uint32_t num_bytes);
|
||||
static int ao_default_driver_id(void);
|
||||
@@ -74,6 +96,7 @@ class CAirTunesServer : public CThread
|
||||
static int ao_append_option(ao_option **options, const char *key, const char *value);
|
||||
static void ao_free_options(ao_option *options);
|
||||
static char* ao_get_option(ao_option *options, const char* key);
|
||||
+#endif
|
||||
};
|
||||
};
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
@ -1,64 +0,0 @@
|
||||
From b7fb4615609c684a98dc1cc27906aaa0f117837f Mon Sep 17 00:00:00 2001
|
||||
From: Memphiz <memphis@machzwo.de>
|
||||
Date: Wed, 9 May 2012 18:53:45 +0200
|
||||
Subject: [PATCH] [airtunes] - add dmap metadata parsing
|
||||
|
||||
---
|
||||
xbmc/network/AirTunesServer.cpp | 13 ++++++++++++-
|
||||
xbmc/network/AirTunesServer.h | 2 ++
|
||||
2 files changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/network/AirTunesServer.cpp b/xbmc/network/AirTunesServer.cpp
|
||||
index e14da90..2ad097e 100644
|
||||
--- a/xbmc/network/AirTunesServer.cpp
|
||||
+++ b/xbmc/network/AirTunesServer.cpp
|
||||
@@ -47,7 +47,6 @@
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
-
|
||||
using namespace XFILE;
|
||||
|
||||
#if defined(TARGET_WINDOWS)
|
||||
@@ -390,6 +389,16 @@ int CAirTunesServer::AudioOutputFunctions::ao_close(ao_device *device)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+void CAirTunesServer::AudioOutputFunctions::ao_set_metadata(const char *buffer, unsigned int size)
|
||||
+{
|
||||
+ CAirTunesServer::SetMetadataFromBuffer(buffer, size);
|
||||
+}
|
||||
+
|
||||
+void CAirTunesServer::AudioOutputFunctions::ao_set_metadata_coverart(const char *buffer, unsigned int size)
|
||||
+{
|
||||
+ CAirTunesServer::SetCoverArtFromBuffer(buffer, size);
|
||||
+}
|
||||
+
|
||||
/* -- Device Setup/Playback/Teardown -- */
|
||||
int CAirTunesServer::AudioOutputFunctions::ao_append_option(ao_option **options, const char *key, const char *value)
|
||||
{
|
||||
@@ -658,6 +667,8 @@ bool CAirTunesServer::Initialize(const CStdString &password)
|
||||
ao.ao_append_option = AudioOutputFunctions::ao_append_option;
|
||||
ao.ao_free_options = AudioOutputFunctions::ao_free_options;
|
||||
ao.ao_get_option = AudioOutputFunctions::ao_get_option;
|
||||
+ ao.ao_set_metadata = AudioOutputFunctions::ao_set_metadata;
|
||||
+ ao.ao_set_metadata_coverart = AudioOutputFunctions::ao_set_metadata_coverart;
|
||||
struct printfPtr funcPtr;
|
||||
funcPtr.extprintf = shairport_log;
|
||||
|
||||
diff --git a/xbmc/network/AirTunesServer.h b/xbmc/network/AirTunesServer.h
|
||||
index 4a30e0a..0a4ce5a 100644
|
||||
--- a/xbmc/network/AirTunesServer.h
|
||||
+++ b/xbmc/network/AirTunesServer.h
|
||||
@@ -96,6 +96,8 @@ class CAirTunesServer : public CThread
|
||||
static int ao_append_option(ao_option **options, const char *key, const char *value);
|
||||
static void ao_free_options(ao_option *options);
|
||||
static char* ao_get_option(ao_option *options, const char* key);
|
||||
+ static void ao_set_metadata(const char *buffer, unsigned int size);
|
||||
+ static void ao_set_metadata_coverart(const char *buffer, unsigned int size);
|
||||
#endif
|
||||
};
|
||||
};
|
||||
--
|
||||
1.7.10
|
||||
|
@ -1,177 +0,0 @@
|
||||
From 23ce80d7f303aa3fb282a67b973c20a2e84e48d2 Mon Sep 17 00:00:00 2001
|
||||
From: Memphiz <memphis@machzwo.de>
|
||||
Date: Fri, 4 May 2012 19:19:26 +0200
|
||||
Subject: [PATCH 2/2] [nfs] - make impl compatible with latest libnfs and
|
||||
avoid usage of off64_t and size_t
|
||||
|
||||
---
|
||||
xbmc/filesystem/DllLibNfs.h | 36 ++++++++++++++++++------------------
|
||||
xbmc/filesystem/NFSFile.cpp | 10 +++++-----
|
||||
xbmc/filesystem/NFSFile.h | 8 ++++----
|
||||
3 files changed, 27 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/xbmc/filesystem/DllLibNfs.h b/xbmc/filesystem/DllLibNfs.h
|
||||
index 37dfc9c..54c6872 100644
|
||||
--- a/xbmc/filesystem/DllLibNfs.h
|
||||
+++ b/xbmc/filesystem/DllLibNfs.h
|
||||
@@ -44,8 +44,8 @@ class DllLibNfsInterface
|
||||
virtual void free_nfs_srvr_list(struct nfs_server_list *srv)=0;
|
||||
virtual struct nfs_context *nfs_init_context(void)=0;
|
||||
virtual void nfs_destroy_context(struct nfs_context *nfs)=0;
|
||||
- virtual size_t nfs_get_readmax(struct nfs_context *nfs)=0;
|
||||
- virtual size_t nfs_get_writemax(struct nfs_context *nfs)=0;
|
||||
+ virtual uint64_t nfs_get_readmax(struct nfs_context *nfs)=0;
|
||||
+ virtual uint64_t nfs_get_writemax(struct nfs_context *nfs)=0;
|
||||
virtual char *nfs_get_error(struct nfs_context *nfs)=0;
|
||||
virtual int nfs_close(struct nfs_context *nfs, struct nfsfh *nfsfh)=0;
|
||||
virtual int nfs_fsync(struct nfs_context *nfs, struct nfsfh *nfsfh)=0;
|
||||
@@ -57,8 +57,8 @@ class DllLibNfsInterface
|
||||
virtual int nfs_mount(struct nfs_context *nfs, const char *server, const char *exportname)=0;
|
||||
virtual int nfs_stat(struct nfs_context *nfs, const char *path, struct stat *st)=0;
|
||||
virtual int nfs_fstat(struct nfs_context *nfs, struct nfsfh *nfsfh, struct stat *st)=0;
|
||||
- virtual int nfs_truncate(struct nfs_context *nfs, const char *path, off64_t length)=0;
|
||||
- virtual int nfs_ftruncate(struct nfs_context *nfs, struct nfsfh *nfsfh, off64_t length)=0;
|
||||
+ virtual int nfs_truncate(struct nfs_context *nfs, const char *path, uint64_t length)=0;
|
||||
+ virtual int nfs_ftruncate(struct nfs_context *nfs, struct nfsfh *nfsfh, uint64_t length)=0;
|
||||
virtual int nfs_opendir(struct nfs_context *nfs, const char *path, struct nfsdir **nfsdir)=0;
|
||||
virtual int nfs_statvfs(struct nfs_context *nfs, const char *path, struct statvfs *svfs)=0;
|
||||
virtual int nfs_chmod(struct nfs_context *nfs, const char *path, int mode)=0;
|
||||
@@ -73,12 +73,12 @@ class DllLibNfsInterface
|
||||
virtual int nfs_chown(struct nfs_context *nfs, const char *path, int uid, int gid)=0;
|
||||
virtual int nfs_fchown(struct nfs_context *nfs, struct nfsfh *nfsfh, int uid, int gid)=0;
|
||||
virtual int nfs_open(struct nfs_context *nfs, const char *path, int mode, struct nfsfh **nfsfh)=0;
|
||||
- virtual int nfs_read(struct nfs_context *nfs, struct nfsfh *nfsfh, size_t count, char *buf)=0;
|
||||
- virtual int nfs_write(struct nfs_context *nfs, struct nfsfh *nfsfh, size_t count, char *buf)=0;
|
||||
+ virtual int nfs_read(struct nfs_context *nfs, struct nfsfh *nfsfh, uint64_t count, char *buf)=0;
|
||||
+ virtual int nfs_write(struct nfs_context *nfs, struct nfsfh *nfsfh, uint64_t count, char *buf)=0;
|
||||
virtual int nfs_creat(struct nfs_context *nfs, const char *path, int mode, struct nfsfh **nfsfh)=0;
|
||||
- virtual int nfs_pread(struct nfs_context *nfs, struct nfsfh *nfsfh, off64_t offset, size_t count, char *buf)=0;
|
||||
- virtual int nfs_pwrite(struct nfs_context *nfs, struct nfsfh *nfsfh, off64_t offset, size_t count, char *buf)=0;
|
||||
- virtual int nfs_lseek(struct nfs_context *nfs, struct nfsfh *nfsfh, off64_t offset, int whence, off64_t *current_offset)=0;
|
||||
+ virtual int nfs_pread(struct nfs_context *nfs, struct nfsfh *nfsfh, uint64_t offset, uint64_t count, char *buf)=0;
|
||||
+ virtual int nfs_pwrite(struct nfs_context *nfs, struct nfsfh *nfsfh, uint64_t offset, uint64_t count, char *buf)=0;
|
||||
+ virtual int nfs_lseek(struct nfs_context *nfs, struct nfsfh *nfsfh, uint64_t offset, int whence, uint64_t *current_offset)=0;
|
||||
};
|
||||
|
||||
class DllLibNfs : public DllDynamic, DllLibNfsInterface
|
||||
@@ -90,8 +90,8 @@ class DllLibNfs : public DllDynamic, DllLibNfsInterface
|
||||
DEFINE_METHOD1(struct exportnode *, mount_getexports, (const char *p1))
|
||||
DEFINE_METHOD1(void, mount_free_export_list, (struct exportnode *p1))
|
||||
DEFINE_METHOD1(void, nfs_destroy_context, (struct nfs_context *p1))
|
||||
- DEFINE_METHOD1(size_t, nfs_get_readmax, (struct nfs_context *p1))
|
||||
- DEFINE_METHOD1(size_t, nfs_get_writemax, (struct nfs_context *p1))
|
||||
+ DEFINE_METHOD1(uint64_t, nfs_get_readmax, (struct nfs_context *p1))
|
||||
+ DEFINE_METHOD1(uint64_t, nfs_get_writemax, (struct nfs_context *p1))
|
||||
DEFINE_METHOD1(char *, nfs_get_error, (struct nfs_context *p1))
|
||||
DEFINE_METHOD2(struct nfsdirent *, nfs_readdir, (struct nfs_context *p1, struct nfsdir *p2))
|
||||
DEFINE_METHOD2(int, nfs_fsync, (struct nfs_context *p1, struct nfsfh *p2))
|
||||
@@ -103,8 +103,8 @@ class DllLibNfs : public DllDynamic, DllLibNfsInterface
|
||||
DEFINE_METHOD3(int, nfs_mount, (struct nfs_context *p1, const char *p2, const char *p3))
|
||||
DEFINE_METHOD3(int, nfs_stat, (struct nfs_context *p1, const char *p2, struct stat *p3))
|
||||
DEFINE_METHOD3(int, nfs_fstat, (struct nfs_context *p1, struct nfsfh *p2, struct stat *p3))
|
||||
- DEFINE_METHOD3(int, nfs_truncate, (struct nfs_context *p1, const char *p2, off64_t p3))
|
||||
- DEFINE_METHOD3(int, nfs_ftruncate, (struct nfs_context *p1, struct nfsfh *p2, off64_t p3))
|
||||
+ DEFINE_METHOD3(int, nfs_truncate, (struct nfs_context *p1, const char *p2, uint64_t p3))
|
||||
+ DEFINE_METHOD3(int, nfs_ftruncate, (struct nfs_context *p1, struct nfsfh *p2, uint64_t p3))
|
||||
DEFINE_METHOD3(int, nfs_opendir, (struct nfs_context *p1, const char *p2, struct nfsdir **p3))
|
||||
DEFINE_METHOD3(int, nfs_statvfs, (struct nfs_context *p1, const char *p2, struct statvfs *p3))
|
||||
DEFINE_METHOD3(int, nfs_chmod, (struct nfs_context *p1, const char *p2, int p3))
|
||||
@@ -116,15 +116,15 @@ class DllLibNfs : public DllDynamic, DllLibNfsInterface
|
||||
DEFINE_METHOD3(int, nfs_rename, (struct nfs_context *p1, const char *p2, const char *p3))
|
||||
DEFINE_METHOD3(int, nfs_link, (struct nfs_context *p1, const char *p2, const char *p3))
|
||||
DEFINE_METHOD4(int, nfs_open, (struct nfs_context *p1, const char *p2, int p3, struct nfsfh **p4))
|
||||
- DEFINE_METHOD4(int, nfs_read, (struct nfs_context *p1, struct nfsfh *p2, size_t p3, char *p4))
|
||||
- DEFINE_METHOD4(int, nfs_write, (struct nfs_context *p1, struct nfsfh *p2, size_t p3, char *p4))
|
||||
+ DEFINE_METHOD4(int, nfs_read, (struct nfs_context *p1, struct nfsfh *p2, uint64_t p3, char *p4))
|
||||
+ DEFINE_METHOD4(int, nfs_write, (struct nfs_context *p1, struct nfsfh *p2, uint64_t p3, char *p4))
|
||||
DEFINE_METHOD4(int, nfs_creat, (struct nfs_context *p1, const char *p2, int p3, struct nfsfh **p4))
|
||||
DEFINE_METHOD4(int, nfs_readlink, (struct nfs_context *p1, const char *p2, char *p3, int p4))
|
||||
DEFINE_METHOD4(int, nfs_chown, (struct nfs_context *p1, const char *p2, int p3, int p4))
|
||||
DEFINE_METHOD4(int, nfs_fchown, (struct nfs_context *p1, struct nfsfh *p2, int p3, int p4))
|
||||
- DEFINE_METHOD5(int, nfs_pread, (struct nfs_context *p1, struct nfsfh *p2, off64_t p3, size_t p4, char *p5))
|
||||
- DEFINE_METHOD5(int, nfs_pwrite, (struct nfs_context *p1, struct nfsfh *p2, off64_t p3, size_t p4, char *p5))
|
||||
- DEFINE_METHOD5(int, nfs_lseek, (struct nfs_context *p1, struct nfsfh *p2, off64_t p3, int p4, off64_t *p5))
|
||||
+ DEFINE_METHOD5(int, nfs_pread, (struct nfs_context *p1, struct nfsfh *p2, uint64_t p3, uint64_t p4, char *p5))
|
||||
+ DEFINE_METHOD5(int, nfs_pwrite, (struct nfs_context *p1, struct nfsfh *p2, uint64_t p3, uint64_t p4, char *p5))
|
||||
+ DEFINE_METHOD5(int, nfs_lseek, (struct nfs_context *p1, struct nfsfh *p2, uint64_t p3, int p4, uint64_t *p5))
|
||||
|
||||
|
||||
|
||||
diff --git a/xbmc/filesystem/FileNFS.cpp b/xbmc/filesystem/FileNFS.cpp
|
||||
index 2f820f7..751eb54 100644
|
||||
--- a/xbmc/filesystem/FileNFS.cpp
|
||||
+++ b/xbmc/filesystem/FileNFS.cpp
|
||||
@@ -375,7 +375,7 @@ void CNfsConnection::resetKeepAlive(struct nfsfh *_pFileHandle)
|
||||
//we were before
|
||||
void CNfsConnection::keepAlive(struct nfsfh *_pFileHandle)
|
||||
{
|
||||
- off64_t offset = 0;
|
||||
+ uint64_t offset = 0;
|
||||
char buffer[32];
|
||||
CLog::Log(LOGNOTICE, "NFS: sending keep alive after %i s.",KEEP_ALIVE_TIMEOUT/2);
|
||||
CSingleLock lock(*this);
|
||||
@@ -461,7 +461,7 @@ void CNfsConnection::AddIdleConnection()
|
||||
int64_t CNFSFile::GetPosition()
|
||||
{
|
||||
int ret = 0;
|
||||
- off64_t offset = 0;
|
||||
+ uint64_t offset = 0;
|
||||
CSingleLock lock(gNfsConnection);
|
||||
|
||||
if (gNfsConnection.GetNfsContext() == NULL || m_pFileHandle == NULL) return 0;
|
||||
@@ -587,7 +587,7 @@ unsigned int CNFSFile::Read(void *lpBuf, int64_t uiBufSize)
|
||||
|
||||
if (m_pFileHandle == NULL || m_pNfsContext == NULL ) return 0;
|
||||
|
||||
- numberOfBytesRead = gNfsConnection.GetImpl()->nfs_read(m_pNfsContext, m_pFileHandle, (size_t)uiBufSize, (char *)lpBuf);
|
||||
+ numberOfBytesRead = gNfsConnection.GetImpl()->nfs_read(m_pNfsContext, m_pFileHandle, uiBufSize, (char *)lpBuf);
|
||||
|
||||
lock.Leave();//no need to keep the connection lock after that
|
||||
|
||||
@@ -605,7 +605,7 @@ unsigned int CNFSFile::Read(void *lpBuf, int64_t uiBufSize)
|
||||
int64_t CNFSFile::Seek(int64_t iFilePosition, int iWhence)
|
||||
{
|
||||
int ret = 0;
|
||||
- off64_t offset = 0;
|
||||
+ uint64_t offset = 0;
|
||||
|
||||
CSingleLock lock(gNfsConnection);
|
||||
if (m_pFileHandle == NULL || m_pNfsContext == NULL) return -1;
|
||||
@@ -667,7 +667,7 @@ int CNFSFile::Write(const void* lpBuf, int64_t uiBufSize)
|
||||
//write chunk
|
||||
writtenBytes = gNfsConnection.GetImpl()->nfs_write(m_pNfsContext,
|
||||
m_pFileHandle,
|
||||
- (size_t)chunkSize,
|
||||
+ chunkSize,
|
||||
(char *)lpBuf + numberOfBytesWritten);
|
||||
//decrease left bytes
|
||||
leftBytes-= writtenBytes;
|
||||
diff --git a/xbmc/filesystem/FileNFS.h b/xbmc/filesystem/FileNFS.h
|
||||
index 47d8d4a..df131b0 100644
|
||||
--- a/xbmc/filesystem/FileNFS.h
|
||||
+++ b/xbmc/filesystem/FileNFS.h
|
||||
@@ -65,8 +65,8 @@ class CNfsConnection : public CCriticalSection
|
||||
~CNfsConnection();
|
||||
bool Connect(const CURL &url, CStdString &relativePath);
|
||||
struct nfs_context *GetNfsContext(){return m_pNfsContext;}
|
||||
- size_t GetMaxReadChunkSize(){return m_readChunkSize;}
|
||||
- size_t GetMaxWriteChunkSize(){return m_writeChunkSize;}
|
||||
+ uint64_t GetMaxReadChunkSize(){return m_readChunkSize;}
|
||||
+ uint64_t GetMaxWriteChunkSize(){return m_writeChunkSize;}
|
||||
DllLibNfs *GetImpl(){return m_pLibNfs;}
|
||||
std::list<CStdString> GetExportList(const CURL &url);
|
||||
//this functions splits the url into the exportpath (feed to mount) and the rest of the path
|
||||
@@ -96,8 +96,8 @@ class CNfsConnection : public CCriticalSection
|
||||
CStdString m_exportPath;//current connected export path
|
||||
CStdString m_hostName;//current connected host
|
||||
CStdString m_resolvedHostName;//current connected host - as ip
|
||||
- size_t m_readChunkSize;//current read chunksize of connected server
|
||||
- size_t m_writeChunkSize;//current write chunksize of connected server
|
||||
+ uint64_t m_readChunkSize;//current read chunksize of connected server
|
||||
+ uint64_t m_writeChunkSize;//current write chunksize of connected server
|
||||
int m_OpenConnections;//number of open connections
|
||||
unsigned int m_IdleTimeout;//timeout for idle connection close and dyunload
|
||||
tFileKeepAliveMap m_KeepAliveTimeouts;//mapping filehandles to its idle timeout
|
||||
--
|
||||
1.7.10
|
||||
|
@ -1,27 +0,0 @@
|
||||
diff --git a/xbmc/filesystem/PluginDirectory.cpp b/xbmc/filesystem/PluginDirectory.cpp
|
||||
index 9e519fb..b64267b 100644
|
||||
--- a/xbmc/filesystem/PluginDirectory.cpp
|
||||
+++ b/xbmc/filesystem/PluginDirectory.cpp
|
||||
@@ -479,7 +479,7 @@ bool CPluginDirectory::WaitOnScriptResult(const CStdString &scriptPath, const CS
|
||||
}
|
||||
|
||||
// check whether we should pop up the progress dialog
|
||||
- if (!progressBar && XbmcThreads::SystemClockMillis() - startTime > timeBeforeProgressBar)
|
||||
+ if (!progressBar && XbmcThreads::SystemClockMillis() - startTime > timeBeforeProgressBar && !g_windowManager.HasModalDialog())
|
||||
{ // loading takes more then 1.5 secs, show a progress dialog
|
||||
progressBar = (CGUIDialogProgress *)g_windowManager.GetWindow(WINDOW_DIALOG_PROGRESS);
|
||||
|
||||
diff --git a/xbmc/interfaces/python/xbmcmodule/keyboard.cpp b/xbmc/interfaces/python/xbmcmodule/keyboard.cpp
|
||||
index 0330215..0604a65 100644
|
||||
--- a/xbmc/interfaces/python/xbmcmodule/keyboard.cpp
|
||||
+++ b/xbmc/interfaces/python/xbmcmodule/keyboard.cpp
|
||||
@@ -92,6 +92,9 @@ namespace PYXBMC
|
||||
|
||||
if (!PyArg_ParseTuple(args, (char*)"|i", &autoClose)) return NULL;
|
||||
|
||||
+ if (g_windowManager.IsWindowActive(WINDOW_DIALOG_PROGRESS))
|
||||
+ g_windowManager.CloseDialogs();
|
||||
+
|
||||
PyXBMCGUILock();
|
||||
pKeyboard->Initialize();
|
||||
pKeyboard->SetHeading(self->strHeading);
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user