summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/kodi/10160.patch22
-rw-r--r--libre/kodi/10775.patch839
-rw-r--r--libre/kodi/9703.patch1432
-rw-r--r--libre/kodi/PKGBUILD139
-rw-r--r--libre/kodi/libre.patch459
5 files changed, 502 insertions, 2389 deletions
diff --git a/libre/kodi/10160.patch b/libre/kodi/10160.patch
deleted file mode 100644
index 73923ea5d..000000000
--- a/libre/kodi/10160.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/xbmc/filesystem/DllLibCurl.h b/xbmc/filesystem/DllLibCurl.h
-index 1bdaae1..9e78a91 100644
---- a/xbmc/filesystem/DllLibCurl.h
-+++ b/xbmc/filesystem/DllLibCurl.h
-@@ -52,7 +52,7 @@ namespace XCURL
- virtual CURLMcode multi_fdset(CURLM *multi_handle, fd_set *read_fd_set, fd_set *write_fd_set, fd_set *exc_fd_set, int *max_fd)=0;
- virtual CURLMcode multi_timeout(CURLM *multi_handle, long *timeout)=0;
- virtual CURLMsg* multi_info_read(CURLM *multi_handle, int *msgs_in_queue)=0;
-- virtual void multi_cleanup(CURL_HANDLE * handle )=0;
-+ virtual CURLMcode multi_cleanup(CURLM * handle )=0;
- virtual struct curl_slist* slist_append(struct curl_slist *, const char *)=0;
- virtual void slist_free_all(struct curl_slist *)=0;
- };
-@@ -77,7 +77,7 @@ namespace XCURL
- DEFINE_METHOD5(CURLMcode, multi_fdset, (CURLM *p1, fd_set *p2, fd_set *p3, fd_set *p4, int *p5))
- DEFINE_METHOD2(CURLMcode, multi_timeout, (CURLM *p1, long *p2))
- DEFINE_METHOD2(CURLMsg*, multi_info_read, (CURLM *p1, int *p2))
-- DEFINE_METHOD1(void, multi_cleanup, (CURLM *p1))
-+ DEFINE_METHOD1(CURLMcode, multi_cleanup, (CURLM *p1))
- DEFINE_METHOD2(struct curl_slist*, slist_append, (struct curl_slist * p1, const char * p2))
- DEFINE_METHOD1(void, slist_free_all, (struct curl_slist * p1))
- DEFINE_METHOD1(const char *, easy_strerror, (CURLcode p1))
diff --git a/libre/kodi/10775.patch b/libre/kodi/10775.patch
deleted file mode 100644
index 61884842d..000000000
--- a/libre/kodi/10775.patch
+++ /dev/null
@@ -1,839 +0,0 @@
-From cc3ae0339faf2b669bee20cb360c526410910f42 Mon Sep 17 00:00:00 2001
-From: Lars Op den Kamp <lars@opdenkamp.eu>
-Date: Fri, 11 Nov 2016 10:09:36 +0100
-Subject: [PATCH 1/4] [cec] bump to libCEC 4.0.0
-
----
- .../resource.language.en_gb/resources/strings.po | 5 -
- configure.ac | 4 +-
- project/BuildDependencies/scripts/0_package.list | 2 +-
- project/cmake/modules/FindCEC.cmake | 2 +-
- system/peripherals.xml | 1 -
- tools/depends/target/Makefile | 5 +-
- tools/depends/target/libcec/Makefile | 4 +-
- tools/depends/target/p8-platform/Makefile | 34 ++++
- xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 192 +++++++++------------
- xbmc/peripherals/devices/PeripheralCecAdapter.h | 17 +-
- 10 files changed, 138 insertions(+), 128 deletions(-)
- create mode 100644 tools/depends/target/p8-platform/Makefile
-
-diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po
-index e3f8a37..e482196 100644
---- a/addons/resource.language.en_gb/resources/strings.po
-+++ b/addons/resource.language.en_gb/resources/strings.po
-@@ -16376,11 +16376,6 @@ msgctxt "#36021"
- msgid "Physical address (overrules HDMI port)"
- msgstr ""
-
--#: system/peripherals.xml
--msgctxt "#36022"
--msgid "COM port (leave empty unless needed)"
--msgstr ""
--
- #: xbmc/peripherals/devices/peripheralcecadapter.cpp
- msgctxt "#36023"
- msgid "Configuration updated"
-diff --git a/configure.ac b/configure.ac
-index e61d4ae..34fe643 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1453,9 +1453,9 @@ if test "x$use_libcec" != "xno"; then
- # libcec is dyloaded, so we need to check for its headers and link any depends.
- if test "x$use_libcec" != "xno"; then
- if test "x$use_libcec" != "xauto"; then
-- PKG_CHECK_MODULES([CEC],[libcec >= 3.0.0],,[use_libcec="no";AC_MSG_ERROR($libcec_disabled)])
-+ PKG_CHECK_MODULES([CEC],[libcec >= 4.0.0],,[use_libcec="no";AC_MSG_ERROR($libcec_disabled)])
- else
-- PKG_CHECK_MODULES([CEC],[libcec >= 3.0.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
-+ PKG_CHECK_MODULES([CEC],[libcec >= 4.0.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
- fi
-
- if test "x$use_libcec" != "xno"; then
-diff --git a/project/BuildDependencies/scripts/0_package.list b/project/BuildDependencies/scripts/0_package.list
-index 9a5bccb..7b6ec1a 100644
---- a/project/BuildDependencies/scripts/0_package.list
-+++ b/project/BuildDependencies/scripts/0_package.list
-@@ -19,7 +19,7 @@ jsonschemabuilder-1.0.0-win32-3.7z
- libass-0.12.1-win32.7z
- libbluray-0.8.1-win32-vc120.7z
- libcdio-0.83-win32-2.7z
--libcec-3.0.0-win32-2.7z
-+libcec-4.0.0-win32-vc140.7z
- libexpat_2.0.1-win32.7z
- libflac-1.2.1-win32.7z
- libfribidi-0.19.2-win32.7z
-diff --git a/system/peripherals.xml b/system/peripherals.xml
-index f939c0b..58a9d24 100644
---- a/system/peripherals.xml
-+++ b/system/peripherals.xml
-@@ -24,7 +24,6 @@
- <setting key="connected_device" type="enum" label="36019" value="36037" lvalues="36037|36038" order="12" />
- <setting key="cec_hdmi_port" type="int" value="1" min="1" max="15" label="36015" order="13" />
- <setting key="physical_address" type="string" label="36021" value="0" order="14" />
-- <setting key="port" type="string" value="" label="36022" order="15" />
-
- <setting key="tv_vendor" type="int" value="0" configurable="0" />
- <setting key="device_name" type="string" value="Kodi" configurable="0" />
-diff --git a/tools/depends/target/Makefile b/tools/depends/target/Makefile
-index 9bca188..82b378d 100644
---- a/tools/depends/target/Makefile
-+++ b/tools/depends/target/Makefile
-@@ -15,7 +15,7 @@
- python26 libshairplay \
- libplist libcec libbluray boost tinyxml dummy-libxbmc \
- libamplayer libssh taglib libusb libnfs \
-- pythonmodule-pil libxslt ffmpeg platform crossguid libdcadec giflib
-+ pythonmodule-pil libxslt ffmpeg platform crossguid libdcadec giflib p8-platform
-
- FFMPEG_DEPENDS = gnutls libdcadec
-
-@@ -101,7 +101,8 @@ pythonmodule-setuptools: python27
- libsdl2: $(LINUX_SYSTEM_LIBS)
- libxslt: libgcrypt
- ffmpeg: $(ICONV) $(ZLIB) bzip2 libvorbis $(FFMPEG_DEPENDS)
--libcec: platform
-+platform: p8-platform
-+libcec: p8-platform
- crossguid: $(CROSSGUID_DEPS)
-
- .installed-$(PLATFORM): $(DEPENDS)
-diff --git a/tools/depends/target/libcec/Makefile b/tools/depends/target/libcec/Makefile
-index f54af9e..c75b300 100644
---- a/tools/depends/target/libcec/Makefile
-+++ b/tools/depends/target/libcec/Makefile
-@@ -3,12 +3,12 @@ DEPS= ../../Makefile.include Makefile
-
- # lib name, version
- LIBNAME=libcec
--VERSION_MAJOR=3
-+VERSION_MAJOR=4
- VERSION_MINOR=0
- VERSION_PATCH=0
-
- VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
--SOURCE=$(LIBNAME)-$(VERSION)-6
-+SOURCE=$(LIBNAME)-$(VERSION)
- ARCHIVE=$(SOURCE).tar.gz
-
- LIBDYLIB=$(PLATFORM)/build/src/$(LIBNAME).la
-diff --git a/tools/depends/target/p8-platform/Makefile b/tools/depends/target/p8-platform/Makefile
-new file mode 100644
-index 0000000..d5918d7
---- /dev/null
-+++ b/tools/depends/target/p8-platform/Makefile
-@@ -0,0 +1,34 @@
-+include ../../Makefile.include
-+DEPS= ../../Makefile.include Makefile
-+
-+# lib name, version
-+LIBNAME=p8-platform
-+VERSION=2.1.0.1
-+SOURCE=$(LIBNAME)-$(VERSION)
-+ARCHIVE=$(SOURCE).tar.gz
-+
-+LIBDYLIB=$(PLATFORM)/build/src/$(LIBNAME).a
-+
-+all: .installed-$(PLATFORM)
-+
-+$(TARBALLS_LOCATION)/$(ARCHIVE):
-+ cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
-+
-+$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
-+ rm -rf $(PLATFORM); mkdir -p $(PLATFORM)/build
-+ cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
-+ cd $(PLATFORM)/build; $(CMAKE) -DBUILD_SHARED_LIBS=0 -DCMAKE_INSTALL_LIBDIR=$(PREFIX)/lib ..
-+
-+$(LIBDYLIB): $(PLATFORM)
-+ $(MAKE) -C $(PLATFORM)/build
-+
-+.installed-$(PLATFORM): $(LIBDYLIB)
-+ $(MAKE) -C $(PLATFORM)/build install
-+ touch $@
-+
-+clean:
-+ rm -rf $(PLATFORM) .installed-$(PLATFORM)
-+
-+distclean::
-+ rm -rf $(PLATFORM) .installed-$(PLATFORM)
-+
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-index e6bcbce..a71dc4b 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-@@ -43,7 +43,7 @@ using namespace PERIPHERALS;
- using namespace ANNOUNCEMENT;
- using namespace CEC;
-
--#define CEC_LIB_SUPPORTED_VERSION LIBCEC_VERSION_TO_UINT(3, 0, 0)
-+#define CEC_LIB_SUPPORTED_VERSION LIBCEC_VERSION_TO_UINT(4, 0, 0)
-
- /* time in seconds to ignore standby commands from devices after the screensaver has been activated */
- #define SCREENSAVER_TIMEOUT 20
-@@ -119,25 +119,30 @@ void CPeripheralCecAdapter::ResetMembers(void)
- m_dll->CECDestroy(m_cecAdapter);
- m_cecAdapter = NULL;
- delete m_dll;
-- m_dll = NULL;
-- m_bStarted = false;
-- m_bHasButton = false;
-- m_bIsReady = false;
-- m_bHasConnectedAudioSystem = false;
-- m_strMenuLanguage = "???";
-- m_lastKeypress = 0;
-- m_lastChange = VOLUME_CHANGE_NONE;
-- m_iExitCode = EXITCODE_QUIT;
-- m_bIsMuted = false; // TODO fetch the correct initial value when system audiostatus is implemented in libCEC
-- m_bGoingToStandby = false;
-- m_bIsRunning = false;
-- m_bDeviceRemoved = false;
-- m_bActiveSourcePending = false;
-- m_bStandbyPending = false;
-+ m_dll = NULL;
-+ m_bStarted = false;
-+ m_bHasButton = false;
-+ m_bIsReady = false;
-+ m_bHasConnectedAudioSystem = false;
-+ m_strMenuLanguage = "???";
-+ m_lastKeypress = 0;
-+ m_lastChange = VOLUME_CHANGE_NONE;
-+ m_iExitCode = EXITCODE_QUIT;
-+ m_bIsMuted = false; //! @todo fetch the correct initial value when system audiostatus is implemented in libCEC
-+ m_bGoingToStandby = false;
-+ m_bIsRunning = false;
-+ m_bDeviceRemoved = false;
-+ m_bActiveSourcePending = false;
-+ m_bStandbyPending = false;
- m_bActiveSourceBeforeStandby = false;
-- m_bOnPlayReceived = false;
-- m_bPlaybackPaused = false;
-- m_queryThread = NULL;
-+ m_bOnPlayReceived = false;
-+ m_bPlaybackPaused = false;
-+ m_queryThread = NULL;
-+ m_bPowerOnScreensaver = false;
-+ m_bUseTVMenuLanguage = false;
-+ m_bSendInactiveSource = false;
-+ m_bPowerOffScreensaver = false;
-+ m_bShutdownOnStandby = false;
-
- m_currentButton.iButton = 0;
- m_currentButton.iDuration = 0;
-@@ -166,8 +171,8 @@ void CPeripheralCecAdapter::Announce(AnnouncementFlag flag, const char *sender,
- if (bIgnoreDeactivate)
- CLog::Log(LOGDEBUG, "%s - ignoring OnScreensaverDeactivated for power action", __FUNCTION__);
- }
-- if (m_configuration.bPowerOnScreensaver == 1 && !bIgnoreDeactivate &&
-- m_configuration.bActivateSource == 1)
-+ if (m_bPowerOnScreensaver && !bIgnoreDeactivate &&
-+ m_configuration.bActivateSource)
- {
- ActivateSource();
- }
-@@ -175,7 +180,7 @@ void CPeripheralCecAdapter::Announce(AnnouncementFlag flag, const char *sender,
- else if (flag == GUI && !strcmp(sender, "xbmc") && !strcmp(message, "OnScreensaverActivated") && m_bIsReady)
- {
- // Don't put devices to standby if application is currently playing
-- if ((!g_application.m_pPlayer->IsPlaying() && !g_application.m_pPlayer->IsPaused()) && m_configuration.bPowerOffScreensaver == 1)
-+ if (!g_application.m_pPlayer->IsPlaying() && m_bPowerOffScreensaver)
- {
- // only power off when we're the active source
- if (m_cecAdapter->IsLibCECActiveSource())
-@@ -241,14 +246,14 @@ bool CPeripheralCecAdapter::InitialiseFeature(const PeripheralFeature feature)
-
- SetConfigurationFromSettings();
- m_callbacks.Clear();
-- m_callbacks.CBCecLogMessage = &CecLogMessage;
-- m_callbacks.CBCecKeyPress = &CecKeyPress;
-- m_callbacks.CBCecCommand = &CecCommand;
-- m_callbacks.CBCecConfigurationChanged = &CecConfiguration;
-- m_callbacks.CBCecAlert = &CecAlert;
-- m_callbacks.CBCecSourceActivated = &CecSourceActivated;
-- m_configuration.callbackParam = this;
-- m_configuration.callbacks = &m_callbacks;
-+ m_callbacks.logMessage = &CecLogMessage;
-+ m_callbacks.keyPress = &CecKeyPress;
-+ m_callbacks.commandReceived = &CecCommand;
-+ m_callbacks.configurationChanged = &CecConfiguration;
-+ m_callbacks.alert = &CecAlert;
-+ m_callbacks.sourceActivated = &CecSourceActivated;
-+ m_configuration.callbackParam = this;
-+ m_configuration.callbacks = &m_callbacks;
-
- m_dll = new DllLibCEC;
- if (m_dll->Load() && m_dll->IsLoaded())
-@@ -414,7 +419,7 @@ void CPeripheralCecAdapter::Process(void)
- m_standbySent = CDateTime::GetCurrentDateTime();
- m_cecAdapter->StandbyDevices();
- }
-- else if (m_configuration.bSendInactiveSource == 1)
-+ else if (m_bSendInactiveSource)
- {
- CLog::Log(LOGDEBUG, "%s - sending inactive source commands", __FUNCTION__);
- m_cecAdapter->SetInactiveView();
-@@ -614,43 +619,43 @@ void CPeripheralCecAdapter::SetMenuLanguage(const char *strLanguage)
- CLog::Log(LOGWARNING, "%s - TV menu language set to unknown value '%s'", __FUNCTION__, strLanguage);
- }
-
--int CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command command)
-+void CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command* command)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
-- return 0;
-+ return;
-
- if (adapter->m_bIsReady)
- {
-- switch (command.opcode)
-+ switch (command->opcode)
- {
- case CEC_OPCODE_STANDBY:
- /* a device was put in standby mode */
-- if (command.initiator == CECDEVICE_TV &&
-- (adapter->m_configuration.bPowerOffOnStandby == 1 || adapter->m_configuration.bShutdownOnStandby == 1) &&
-+ if (command->initiator == CECDEVICE_TV &&
-+ (adapter->m_configuration.bPowerOffOnStandby == 1 || adapter->m_bShutdownOnStandby) &&
- (!adapter->m_standbySent.IsValid() || CDateTime::GetCurrentDateTime() - adapter->m_standbySent > CDateTimeSpan(0, 0, 0, SCREENSAVER_TIMEOUT)))
- {
- adapter->m_bStarted = false;
- if (adapter->m_configuration.bPowerOffOnStandby == 1)
- g_application.ExecuteXBMCAction("Suspend");
-- else if (adapter->m_configuration.bShutdownOnStandby == 1)
-+ else if (adapter->m_bShutdownOnStandby)
- g_application.ExecuteXBMCAction("Shutdown");
- }
- break;
- case CEC_OPCODE_SET_MENU_LANGUAGE:
-- if (adapter->m_configuration.bUseTVMenuLanguage == 1 && command.initiator == CECDEVICE_TV && command.parameters.size == 3)
-+ if (adapter->m_bUseTVMenuLanguage == 1 && command->initiator == CECDEVICE_TV && command->parameters.size == 3)
- {
- char strNewLanguage[4];
- for (int iPtr = 0; iPtr < 3; iPtr++)
-- strNewLanguage[iPtr] = command.parameters[iPtr];
-+ strNewLanguage[iPtr] = command->parameters[iPtr];
- strNewLanguage[3] = 0;
- adapter->SetMenuLanguage(strNewLanguage);
- }
- break;
- case CEC_OPCODE_DECK_CONTROL:
-- if (command.initiator == CECDEVICE_TV &&
-- command.parameters.size == 1 &&
-- command.parameters[0] == CEC_DECK_CONTROL_MODE_STOP)
-+ if (command->initiator == CECDEVICE_TV &&
-+ command->parameters.size == 1 &&
-+ command->parameters[0] == CEC_DECK_CONTROL_MODE_STOP)
- {
- cec_keypress key;
- key.duration = 500;
-@@ -659,17 +664,17 @@ int CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command command)
- }
- break;
- case CEC_OPCODE_PLAY:
-- if (command.initiator == CECDEVICE_TV &&
-- command.parameters.size == 1)
-+ if (command->initiator == CECDEVICE_TV &&
-+ command->parameters.size == 1)
- {
-- if (command.parameters[0] == CEC_PLAY_MODE_PLAY_FORWARD)
-+ if (command->parameters[0] == CEC_PLAY_MODE_PLAY_FORWARD)
- {
- cec_keypress key;
- key.duration = 500;
- key.keycode = CEC_USER_CONTROL_CODE_PLAY;
- adapter->PushCecKeypress(key);
- }
-- else if (command.parameters[0] == CEC_PLAY_MODE_PLAY_STILL)
-+ else if (command->parameters[0] == CEC_PLAY_MODE_PLAY_STILL)
- {
- cec_keypress key;
- key.duration = 500;
-@@ -682,25 +687,23 @@ int CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command command)
- break;
- }
- }
-- return 1;
- }
-
--int CPeripheralCecAdapter::CecConfiguration(void *cbParam, const libcec_configuration config)
-+void CPeripheralCecAdapter::CecConfiguration(void *cbParam, const libcec_configuration* config)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
-- return 0;
-+ return;
-
- CSingleLock lock(adapter->m_critSection);
-- adapter->SetConfigurationFromLibCEC(config);
-- return 1;
-+ adapter->SetConfigurationFromLibCEC(*config);
- }
-
--int CPeripheralCecAdapter::CecAlert(void *cbParam, const libcec_alert alert, const libcec_parameter data)
-+void CPeripheralCecAdapter::CecAlert(void *cbParam, const libcec_alert alert, const libcec_parameter data)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
-- return 0;
-+ return;
-
- bool bReopenConnection(false);
- int iAlertString(0);
-@@ -743,18 +746,13 @@ int CPeripheralCecAdapter::CecAlert(void *cbParam, const libcec_alert alert, con
-
- if (bReopenConnection)
- adapter->ReopenConnection();
--
-- return 1;
- }
-
--int CPeripheralCecAdapter::CecKeyPress(void *cbParam, const cec_keypress key)
-+void CPeripheralCecAdapter::CecKeyPress(void *cbParam, const cec_keypress* key)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-- if (!adapter)
-- return 0;
--
-- adapter->PushCecKeypress(key);
-- return 1;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
-+ if (!!adapter)
-+ adapter->PushCecKeypress(*key);
- }
-
- void CPeripheralCecAdapter::GetNextKey(void)
-@@ -1154,7 +1152,7 @@ void CPeripheralCecAdapter::OnSettingChanged(const std::string &strChangedSettin
-
- void CPeripheralCecAdapter::CecSourceActivated(void *cbParam, const CEC::cec_logical_address address, const uint8_t activated)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
- return;
-
-@@ -1196,14 +1194,14 @@ void CPeripheralCecAdapter::CecSourceActivated(void *cbParam, const CEC::cec_log
- }
- }
-
--int CPeripheralCecAdapter::CecLogMessage(void *cbParam, const cec_log_message message)
-+void CPeripheralCecAdapter::CecLogMessage(void *cbParam, const cec_log_message* message)
- {
-- CPeripheralCecAdapter *adapter = (CPeripheralCecAdapter *)cbParam;
-+ CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
- if (!adapter)
-- return 0;
-+ return;
-
- int iLevel = -1;
-- switch (message.level)
-+ switch (message->level)
- {
- case CEC_LOG_ERROR:
- iLevel = LOGERROR;
-@@ -1223,9 +1221,7 @@ int CPeripheralCecAdapter::CecLogMessage(void *cbParam, const cec_log_message me
- }
-
- if (iLevel >= CEC_LOG_NOTICE || (iLevel >= 0 && CLog::IsLogLevelLogged(LOGDEBUG) && g_advancedSettings.CanLogComponent(LOGCEC)))
-- CLog::Log(iLevel, "%s - %s", __FUNCTION__, message.message);
--
-- return 1;
-+ CLog::Log(iLevel, "%s - %s", __FUNCTION__, message->message);
- }
-
- void CPeripheralCecAdapter::SetConfigurationFromLibCEC(const CEC::libcec_configuration &config)
-@@ -1270,35 +1266,18 @@ void CPeripheralCecAdapter::SetConfigurationFromLibCEC(const CEC::libcec_configu
- bChanged |= WriteLogicalAddresses(config.powerOffDevices, "standby_devices", "standby_devices_advanced");
-
- // set the boolean settings
-- m_configuration.bUseTVMenuLanguage = config.bUseTVMenuLanguage;
-- bChanged |= SetSetting("use_tv_menu_language", m_configuration.bUseTVMenuLanguage == 1);
--
- m_configuration.bActivateSource = config.bActivateSource;
- bChanged |= SetSetting("activate_source", m_configuration.bActivateSource == 1);
-
-- m_configuration.bPowerOffScreensaver = config.bPowerOffScreensaver;
-- bChanged |= SetSetting("cec_standby_screensaver", m_configuration.bPowerOffScreensaver == 1);
--
-- m_configuration.bPowerOnScreensaver = config.bPowerOnScreensaver;
-- bChanged |= SetSetting("cec_wake_screensaver", m_configuration.bPowerOnScreensaver == 1);
--
- m_configuration.bPowerOffOnStandby = config.bPowerOffOnStandby;
-
-- m_configuration.bSendInactiveSource = config.bSendInactiveSource;
-- bChanged |= SetSetting("send_inactive_source", m_configuration.bSendInactiveSource == 1);
--
- m_configuration.iFirmwareVersion = config.iFirmwareVersion;
-- m_configuration.bShutdownOnStandby = config.bShutdownOnStandby;
-
- memcpy(m_configuration.strDeviceLanguage, config.strDeviceLanguage, 3);
- m_configuration.iFirmwareBuildDate = config.iFirmwareBuildDate;
-
- SetVersionInfo(m_configuration);
-
-- bChanged |= SetSetting("standby_pc_on_tv_standby",
-- m_configuration.bPowerOffOnStandby == 1 ? 13011 :
-- m_configuration.bShutdownOnStandby == 1 ? 13005 : 36028);
--
- if (bChanged)
- CLog::Log(LOGDEBUG, "SetConfigurationFromLibCEC - settings updated by libCEC");
- }
-@@ -1306,7 +1285,7 @@ void CPeripheralCecAdapter::SetConfigurationFromLibCEC(const CEC::libcec_configu
- void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
- {
- // client version matches the version of libCEC that we originally used the API from
-- m_configuration.clientVersion = LIBCEC_VERSION_TO_UINT(3, 0, 0);
-+ m_configuration.clientVersion = LIBCEC_VERSION_TO_UINT(4, 0, 0);
-
- // device name 'XBMC'
- snprintf(m_configuration.strDeviceName, 13, "%s", GetSettingString("device_name").c_str());
-@@ -1373,16 +1352,16 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
- ReadLogicalAddresses(GetSettingInt("standby_devices"), m_configuration.powerOffDevices);
-
- // read the boolean settings
-- m_configuration.bUseTVMenuLanguage = GetSettingBool("use_tv_menu_language") ? 1 : 0;
-+ m_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.bPowerOnScreensaver = GetSettingBool("cec_wake_screensaver") ? 1 : 0;
-- m_configuration.bSendInactiveSource = GetSettingBool("send_inactive_source") ? 1 : 0;
-+ m_bPowerOffScreensaver = GetSettingBool("cec_standby_screensaver") ? 1 : 0;
-+ m_bPowerOnScreensaver = GetSettingBool("cec_wake_screensaver") ? 1 : 0;
-+ m_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;
-+ m_bShutdownOnStandby = iStandbyAction == 13005;
-
- #if defined(CEC_DOUBLE_TAP_TIMEOUT_MS_OLD)
- // double tap prevention timeout in ms. libCEC uses 50ms units for this in 2.2.0, so divide by 50
-@@ -1529,14 +1508,11 @@ bool CPeripheralCecAdapterUpdateThread::WaitReady(void)
- void CPeripheralCecAdapterUpdateThread::UpdateMenuLanguage(void)
- {
- // request the menu language of the TV
-- if (m_configuration.bUseTVMenuLanguage == 1)
-+ if (m_adapter->m_bUseTVMenuLanguage == 1)
- {
- CLog::Log(LOGDEBUG, "%s - requesting the menu language of the TV", __FUNCTION__);
-- cec_menu_language language;
-- if (m_adapter->m_cecAdapter->GetDeviceMenuLanguage(CECDEVICE_TV, &language))
-- m_adapter->SetMenuLanguage(language.language);
-- else
-- CLog::Log(LOGDEBUG, "%s - unknown menu language", __FUNCTION__);
-+ std::string language(m_adapter->m_cecAdapter->GetDeviceMenuLanguage(CECDEVICE_TV));
-+ m_adapter->SetMenuLanguage(language.c_str());
- }
- else
- {
-@@ -1553,9 +1529,9 @@ std::string CPeripheralCecAdapterUpdateThread::UpdateAudioSystemStatus(void)
- if (m_adapter->m_cecAdapter->IsActiveDeviceType(CEC_DEVICE_TYPE_AUDIO_SYSTEM))
- {
- // request the OSD name of the amp
-- cec_osd_name ampName = m_adapter->m_cecAdapter->GetDeviceOSDName(CECDEVICE_AUDIOSYSTEM);
-- CLog::Log(LOGDEBUG, "%s - CEC capable amplifier found (%s). volume will be controlled on the amp", __FUNCTION__, ampName.name);
-- strAmpName += StringUtils::Format("%s", ampName.name);
-+ std::string ampName(m_adapter->m_cecAdapter->GetDeviceOSDName(CECDEVICE_AUDIOSYSTEM));
-+ CLog::Log(LOGDEBUG, "%s - CEC capable amplifier found (%s). volume will be controlled on the amp", __FUNCTION__, ampName.c_str());
-+ strAmpName += StringUtils::Format("%s", ampName.c_str());
-
- // set amp present
- m_adapter->SetAudioSystemConnected(true);
-@@ -1592,8 +1568,8 @@ bool CPeripheralCecAdapterUpdateThread::SetInitialConfiguration(void)
-
- // request the OSD name of the TV
- std::string strNotification;
-- cec_osd_name tvName = m_adapter->m_cecAdapter->GetDeviceOSDName(CECDEVICE_TV);
-- strNotification = StringUtils::Format("%s: %s", g_localizeStrings.Get(36016).c_str(), tvName.name);
-+ std::string tvName(m_adapter->m_cecAdapter->GetDeviceOSDName(CECDEVICE_TV));
-+ strNotification = StringUtils::Format("%s: %s", g_localizeStrings.Get(36016).c_str(), tvName.c_str());
-
- std::string strAmpName = UpdateAudioSystemStatus();
- if (!strAmpName.empty())
-@@ -1766,7 +1742,7 @@ void CPeripheralCecAdapter::ProcessStandbyDevices(void)
- m_standbySent = CDateTime::GetCurrentDateTime();
- m_cecAdapter->StandbyDevices(CECDEVICE_BROADCAST);
- }
-- else if (m_configuration.bSendInactiveSource == 1)
-+ else if (m_bSendInactiveSource == 1)
- {
- CLog::Log(LOGDEBUG, "%s - sending inactive source commands", __FUNCTION__);
- m_cecAdapter->SetInactiveView();
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.h b/xbmc/peripherals/devices/PeripheralCecAdapter.h
-index e7f769f..30b22c9 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.h
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.h
-@@ -146,12 +146,12 @@ namespace PERIPHERALS
- void SetMenuLanguage(const char *strLanguage);
-
- // callbacks from libCEC
-- 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);
-+ static void CecLogMessage(void *cbParam, const CEC::cec_log_message* message);
-+ static void CecCommand(void *cbParam, const CEC::cec_command* command);
-+ static void CecConfiguration(void *cbParam, const CEC::libcec_configuration* config);
-+ static void CecAlert(void *cbParam, const CEC::libcec_alert alert, const CEC::libcec_parameter data);
- static void CecSourceActivated(void *param, const CEC::cec_logical_address address, const uint8_t activated);
-- static int CecKeyPress(void *cbParam, const CEC::cec_keypress key);
-+ static void CecKeyPress(void *cbParam, const CEC::cec_keypress* key);
-
- DllLibCEC* m_dll;
- CEC::ICECAdapter* m_cecAdapter;
-@@ -181,7 +181,12 @@ namespace PERIPHERALS
- bool m_bActiveSourceBeforeStandby;
- bool m_bOnPlayReceived;
- bool m_bPlaybackPaused;
-- std::string m_strComPort;
-+ std::string m_strComPort;
-+ bool m_bPowerOnScreensaver;
-+ bool m_bUseTVMenuLanguage;
-+ bool m_bSendInactiveSource;
-+ bool m_bPowerOffScreensaver;
-+ bool m_bShutdownOnStandby;
- };
-
- class CPeripheralCecAdapterUpdateThread : public CThread
-
-From 82fe52deb8c11df31fbdf8c298b28a5e1a1491aa Mon Sep 17 00:00:00 2001
-From: Lars Op den Kamp <lars@opdenkamp.eu>
-Date: Fri, 11 Nov 2016 10:09:48 +0100
-Subject: [PATCH 2/4] [cec] Added advanced settings for action when TV goes
- standby
-
-Added advances settings for action when TV goes standby : Pause
-playback, Stop playback, Exit Kodi
----
- system/peripherals.xml | 2 +-
- xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 47 ++++++++++++++++++-----
- xbmc/peripherals/devices/PeripheralCecAdapter.h | 1 +
- 3 files changed, 39 insertions(+), 11 deletions(-)
-
-diff --git a/system/peripherals.xml b/system/peripherals.xml
-index 58a9d24..1fa31e1 100644
---- a/system/peripherals.xml
-+++ b/system/peripherals.xml
-@@ -16,7 +16,7 @@
- <setting key="send_inactive_source" type="bool" value="1" label="36025" order="5" />
- <setting key="cec_standby_screensaver" type="bool" value="0" label="36009" order="6" />
- <setting key="cec_wake_screensaver" type="bool" value="1" label="36010" order="7" />
-- <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36029" order="8" lvalues="36028|13005|13011" />
-+ <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36029" order="8" lvalues="36028|13005|13011|13009|36043|36045" />
- <setting key="standby_tv_on_pc_standby" type="bool" value="1" label="36026" order="9" />
- <setting key="use_tv_menu_language" type="bool" value="1" label="36018" order="10" />
- <setting key="pause_playback_on_deactivate" type="bool" value="1" label="36033" configurable="0" />
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-index a71dc4b..1b7c38e 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-@@ -55,6 +55,10 @@ using namespace CEC;
- #define LOCALISED_ID_TV_AVR 36039
- #define LOCALISED_ID_STOP 36044
- #define LOCALISED_ID_PAUSE 36045
-+#define LOCALISED_ID_POWEROFF 13005
-+#define LOCALISED_ID_SUSPEND 13011
-+#define LOCALISED_ID_QUIT 13009
-+#define LOCALISED_ID_IGNORE 36028
-
- #define LOCALISED_ID_NONE 231
-
-@@ -619,6 +623,35 @@ void CPeripheralCecAdapter::SetMenuLanguage(const char *strLanguage)
- CLog::Log(LOGWARNING, "%s - TV menu language set to unknown value '%s'", __FUNCTION__, strLanguage);
- }
-
-+void CPeripheralCecAdapter::OnTvStandby(void)
-+{
-+ int iActionOnTvStandby = GetSettingInt("standby_pc_on_tv_standby");
-+ switch (iActionOnTvStandby)
-+ {
-+ case LOCALISED_ID_POWEROFF:
-+ m_bStarted = false;
-+ g_application.ExecuteXBMCAction("Shutdown");
-+ break;
-+ case LOCALISED_ID_SUSPEND:
-+ m_bStarted = false;
-+ g_application.ExecuteXBMCAction("Suspend");
-+ break;
-+ case LOCALISED_ID_QUIT:
-+ m_bStarted = false;
-+ g_application.ExecuteXBMCAction("Quit");
-+ break;
-+ case LOCALISED_ID_PAUSE:
-+ g_application.OnAction(CAction(ACTION_PAUSE));
-+ break;
-+ case LOCALISED_ID_STOP:
-+ g_application.StopPlaying();
-+ break;
-+ default:
-+ CLog::Log(LOGERROR, "%s - Unexpected [standby_pc_on_tv_standby] setting value", __FUNCTION__);
-+ break;
-+ }
-+}
-+
- void CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command* command)
- {
- CPeripheralCecAdapter *adapter = static_cast<CPeripheralCecAdapter *>(cbParam);
-@@ -630,16 +663,10 @@ void CPeripheralCecAdapter::CecCommand(void *cbParam, const cec_command* command
- switch (command->opcode)
- {
- case CEC_OPCODE_STANDBY:
-- /* a device was put in standby mode */
- if (command->initiator == CECDEVICE_TV &&
-- (adapter->m_configuration.bPowerOffOnStandby == 1 || adapter->m_bShutdownOnStandby) &&
- (!adapter->m_standbySent.IsValid() || CDateTime::GetCurrentDateTime() - adapter->m_standbySent > CDateTimeSpan(0, 0, 0, SCREENSAVER_TIMEOUT)))
- {
-- adapter->m_bStarted = false;
-- if (adapter->m_configuration.bPowerOffOnStandby == 1)
-- g_application.ExecuteXBMCAction("Suspend");
-- else if (adapter->m_bShutdownOnStandby)
-- g_application.ExecuteXBMCAction("Shutdown");
-+ adapter->OnTvStandby();
- }
- break;
- case CEC_OPCODE_SET_MENU_LANGUAGE:
-@@ -1360,8 +1387,8 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
-
- // read the mutually exclusive boolean settings
- int iStandbyAction(GetSettingInt("standby_pc_on_tv_standby"));
-- m_configuration.bPowerOffOnStandby = iStandbyAction == 13011 ? 1 : 0;
-- m_bShutdownOnStandby = iStandbyAction == 13005;
-+ m_configuration.bPowerOffOnStandby = iStandbyAction == LOCALISED_ID_SUSPEND ? 1 : 0;
-+ m_bShutdownOnStandby = iStandbyAction == LOCALISED_ID_POWEROFF;
-
- #if defined(CEC_DOUBLE_TAP_TIMEOUT_MS_OLD)
- // double tap prevention timeout in ms. libCEC uses 50ms units for this in 2.2.0, so divide by 50
-@@ -1373,7 +1400,7 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
-
- if (GetSettingBool("pause_playback_on_deactivate"))
- {
-- SetSetting("pause_or_stop_playback_on_deactivate", 36045);
-+ SetSetting("pause_or_stop_playback_on_deactivate", LOCALISED_ID_PAUSE);
- SetSetting("pause_playback_on_deactivate", false);
- }
- }
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.h b/xbmc/peripherals/devices/PeripheralCecAdapter.h
-index 30b22c9..9274eab 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.h
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.h
-@@ -144,6 +144,7 @@ namespace PERIPHERALS
-
- void SetAudioSystemConnected(bool bSetTo);
- void SetMenuLanguage(const char *strLanguage);
-+ void OnTvStandby(void);
-
- // callbacks from libCEC
- static void CecLogMessage(void *cbParam, const CEC::cec_log_message* message);
-
-From f0e1725617e41e841c9c24a20f1fc9b37347c8c3 Mon Sep 17 00:00:00 2001
-From: Lars Op den Kamp <lars@opdenkamp.eu>
-Date: Fri, 11 Nov 2016 10:09:56 +0100
-Subject: [PATCH 3/4] [cec] add CEC IMX adapter as known type and set no
- polling.
-
-that eliminates extensive periodic /sys walkthrough
-
-(this is reused Lars's commit e59d7e028288464e6890141a830e4a83d4b9d065)
----
- xbmc/peripherals/PeripheralTypes.h | 5 +++++
- xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp | 6 ++++++
- 2 files changed, 11 insertions(+)
-
-diff --git a/xbmc/peripherals/PeripheralTypes.h b/xbmc/peripherals/PeripheralTypes.h
-index 34ce2ef..c87242f 100644
---- a/xbmc/peripherals/PeripheralTypes.h
-+++ b/xbmc/peripherals/PeripheralTypes.h
-@@ -38,7 +38,8 @@
- PERIPHERAL_BUS_USB,
- PERIPHERAL_BUS_PCI,
- PERIPHERAL_BUS_RPI,
-- PERIPHERAL_BUS_CEC
-+ PERIPHERAL_BUS_CEC,
-+ PERIPHERAL_BUS_IMX
- };
-
- enum PeripheralFeature
-@@ -173,6 +174,8 @@ namespace PERIPHERALS
- return "pci";
- case PERIPHERAL_BUS_RPI:
- return "rpi";
-+ case PERIPHERAL_BUS_IMX:
-+ return "imx";
- case PERIPHERAL_BUS_CEC:
- return "cec";
- case PERIPHERAL_BUS_ADDON:
-@@ -197,6 +200,8 @@ namespace PERIPHERALS
- return PERIPHERAL_BUS_PCI;
- else if (strTypeLowerCase == "rpi")
- return PERIPHERAL_BUS_RPI;
-+ else if (strTypeLowerCase == "imx")
-+ return PERIPHERAL_BUS_IMX;
- else if (strTypeLowerCase == "cec")
- return PERIPHERAL_BUS_CEC;
- else if (strTypeLowerCase == "addon")
-diff --git a/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp b/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
-index b04fe00..abd0a6b 100644
---- a/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
-+++ b/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
-@@ -102,6 +102,12 @@ bool CPeripheralBusCEC::PerformDeviceScan(PeripheralScanResults &results)
- /** the Pi's adapter cannot be removed, no need to rescan */
- m_bNeedsPolling = false;
- break;
-+#if defined(HAS_IMXVPU)
-+ case ADAPTERTYPE_IMX:
-+ result.m_mappedBusType = PERIPHERAL_BUS_IMX;
-+ m_bNeedsPolling = false;
-+ break;
-+#endif
- default:
- break;
- }
-
-From cfcfb4c98cf1a6d756fc3962e6d803c297917684 Mon Sep 17 00:00:00 2001
-From: Lars Op den Kamp <lars@opdenkamp.eu>
-Date: Fri, 11 Nov 2016 10:10:07 +0100
-Subject: [PATCH 4/4] [cec] added: setting to make libCEC wake up the AVR
- explicitly when activating the source.
-
-ref: https://github.com/Pulse-Eight/libcec/issues/156
----
- addons/resource.language.en_gb/resources/strings.po | 7 ++++++-
- system/peripherals.xml | 3 ++-
- xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 1 +
- 3 files changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/system/peripherals.xml b/system/peripherals.xml
-index 1fa31e1..ed707b6 100644
---- a/system/peripherals.xml
-+++ b/system/peripherals.xml
-@@ -16,7 +16,7 @@
- <setting key="send_inactive_source" type="bool" value="1" label="36025" order="5" />
- <setting key="cec_standby_screensaver" type="bool" value="0" label="36009" order="6" />
- <setting key="cec_wake_screensaver" type="bool" value="1" label="36010" order="7" />
-- <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36029" order="8" lvalues="36028|13005|13011|13009|36043|36045" />
-+ <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36029" order="8" lvalues="36028|13005|13011|13009|36044|36046" />
- <setting key="standby_tv_on_pc_standby" type="bool" value="1" label="36026" order="9" />
- <setting key="use_tv_menu_language" type="bool" value="1" label="36018" order="10" />
- <setting key="pause_playback_on_deactivate" type="bool" value="1" label="36033" configurable="0" />
-@@ -24,6 +24,7 @@
- <setting key="connected_device" type="enum" label="36019" value="36037" lvalues="36037|36038" order="12" />
- <setting key="cec_hdmi_port" type="int" value="1" min="1" max="15" label="36015" order="13" />
- <setting key="physical_address" type="string" label="36021" value="0" order="14" />
-+ <setting key="power_avr_on_as" type="bool" label="36045" value="0" order="15" />
-
- <setting key="tv_vendor" type="int" value="0" configurable="0" />
- <setting key="device_name" type="string" value="Kodi" configurable="0" />
-diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-index 1b7c38e..d032ffd 100644
---- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
-@@ -1384,6 +1384,7 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void)
- m_bPowerOffScreensaver = GetSettingBool("cec_standby_screensaver") ? 1 : 0;
- m_bPowerOnScreensaver = GetSettingBool("cec_wake_screensaver") ? 1 : 0;
- m_bSendInactiveSource = GetSettingBool("send_inactive_source") ? 1 : 0;
-+ m_configuration.bAutoWakeAVR = GetSettingBool("power_avr_on_as") ? 1 : 0;
-
- // read the mutually exclusive boolean settings
- int iStandbyAction(GetSettingInt("standby_pc_on_tv_standby"));
diff --git a/libre/kodi/9703.patch b/libre/kodi/9703.patch
deleted file mode 100644
index 9c96dfa2a..000000000
--- a/libre/kodi/9703.patch
+++ /dev/null
@@ -1,1432 +0,0 @@
-From 8f82e51563f0e1bc9b7a8adf669ad2b66e7ce3e5 Mon Sep 17 00:00:00 2001
-From: Bernd Kuhls <bernd.kuhls@t-online.de>
-Date: Thu, 28 Apr 2016 17:17:40 +0200
-Subject: [PATCH] lib/cximage-6.0: fix compilation with gcc6
-
-For a quick fix I renamed min() to cxmin() and max() to cxmax() to
-prevent the conflict with the gcc definition.
-
-Forum thread for reference:
-http://forum.kodi.tv/showthread.php?tid=263884
----
- lib/cximage-6.0/CxImage/ximabmp.cpp | 6 +-
- lib/cximage-6.0/CxImage/ximadef.h | 8 +-
- lib/cximage-6.0/CxImage/ximadsp.cpp | 182 +++++++++++++++++------------------
- lib/cximage-6.0/CxImage/ximage.cpp | 4 +-
- lib/cximage-6.0/CxImage/ximagif.cpp | 6 +-
- lib/cximage-6.0/CxImage/ximahist.cpp | 12 +--
- lib/cximage-6.0/CxImage/ximaint.cpp | 8 +-
- lib/cximage-6.0/CxImage/ximaiter.h | 4 +-
- lib/cximage-6.0/CxImage/ximajbg.cpp | 2 +-
- lib/cximage-6.0/CxImage/ximapal.cpp | 14 +--
- lib/cximage-6.0/CxImage/ximapng.cpp | 12 +--
- lib/cximage-6.0/CxImage/ximaraw.cpp | 4 +-
- lib/cximage-6.0/CxImage/ximasel.cpp | 50 +++++-----
- lib/cximage-6.0/CxImage/ximath.cpp | 8 +-
- lib/cximage-6.0/CxImage/ximatif.cpp | 6 +-
- lib/cximage-6.0/CxImage/ximatran.cpp | 138 +++++++++++++-------------
- lib/cximage-6.0/CxImage/ximawnd.cpp | 16 +--
- 17 files changed, 236 insertions(+), 244 deletions(-)
-
-diff --git a/lib/cximage-6.0/CxImage/ximabmp.cpp b/lib/cximage-6.0/CxImage/ximabmp.cpp
-index 726ff91..55842b1 100644
---- a/lib/cximage-6.0/CxImage/ximabmp.cpp
-+++ b/lib/cximage-6.0/CxImage/ximabmp.cpp
-@@ -46,7 +46,7 @@ bool CxImageBMP::Encode(CxFile * hFile)
- bihtoh(&infohdr);
-
- // Write the file header
-- hFile->Write(&hdr,min(14,sizeof(BITMAPFILEHEADER)),1);
-+ hFile->Write(&hdr,cxmin(14,sizeof(BITMAPFILEHEADER)),1);
- hFile->Write(&infohdr,sizeof(BITMAPINFOHEADER),1);
- //and DIB+ALPHA interlaced
- BYTE *srcalpha = AlphaGetPointer();
-@@ -64,7 +64,7 @@ bool CxImageBMP::Encode(CxFile * hFile)
- #endif //CXIMAGE_SUPPORT_ALPHA
- {
- // Write the file header
-- hFile->Write(&hdr,min(14,sizeof(BITMAPFILEHEADER)),1);
-+ hFile->Write(&hdr,cxmin(14,sizeof(BITMAPFILEHEADER)),1);
- //copy attributes
- memcpy(pDib,&head,sizeof(BITMAPINFOHEADER));
- bihtoh((BITMAPINFOHEADER*)pDib);
-@@ -86,7 +86,7 @@ bool CxImageBMP::Decode(CxFile * hFile)
- BITMAPFILEHEADER bf;
- DWORD off = hFile->Tell(); //<CSC>
- cx_try {
-- if (hFile->Read(&bf,min(14,sizeof(bf)),1)==0) cx_throw("Not a BMP");
-+ if (hFile->Read(&bf,cxmin(14,sizeof(bf)),1)==0) cx_throw("Not a BMP");
-
- bf.bfSize = my_ntohl(bf.bfSize);
- bf.bfOffBits = my_ntohl(bf.bfOffBits);
-diff --git a/lib/cximage-6.0/CxImage/ximadef.h b/lib/cximage-6.0/CxImage/ximadef.h
-index fe383bf..53ea452 100644
---- a/lib/cximage-6.0/CxImage/ximadef.h
-+++ b/lib/cximage-6.0/CxImage/ximadef.h
-@@ -53,12 +53,8 @@
- #define CXIMAGE_SUPPORT_WINDOWS 0
- #endif
-
--#ifndef min
--#define min(a,b) (((a)<(b))?(a):(b))
--#endif
--#ifndef max
--#define max(a,b) (((a)>(b))?(a):(b))
--#endif
-+#define cxmin(a,b) (((a)<(b))?(a):(b))
-+#define cxmax(a,b) (((a)>(b))?(a):(b))
-
- #ifndef PI
- #define PI 3.141592653589793f
-diff --git a/lib/cximage-6.0/CxImage/ximadsp.cpp b/lib/cximage-6.0/CxImage/ximadsp.cpp
-index 8425bb2..813253b 100644
---- a/lib/cximage-6.0/CxImage/ximadsp.cpp
-+++ b/lib/cximage-6.0/CxImage/ximadsp.cpp
-@@ -389,8 +389,8 @@ RGBQUAD CxImage::RGBtoHSL(RGBQUAD lRGBColor)
- G = lRGBColor.rgbGreen;
- B = lRGBColor.rgbBlue;
-
-- cMax = max( max(R,G), B); /* calculate lightness */
-- cMin = min( min(R,G), B);
-+ cMax = cxmax( cxmax(R,G), B); /* calculate lightness */
-+ cMin = cxmin( cxmin(R,G), B);
- L = (BYTE)((((cMax+cMin)*HSLMAX)+RGBMAX)/(2*RGBMAX));
-
- if (cMax==cMin){ /* r=g=b --> achromatic case */
-@@ -489,9 +489,9 @@ RGBQUAD CxImage::YUVtoRGB(RGBQUAD lYUVColor)
- G = (int)( Y - 0.344f * U - 0.714f * V);
- B = (int)( Y + 1.770f * U);
-
-- R= min(255,max(0,R));
-- G= min(255,max(0,G));
-- B= min(255,max(0,B));
-+ R= cxmin(255,cxmax(0,R));
-+ G= cxmin(255,cxmax(0,G));
-+ B= cxmin(255,cxmax(0,B));
- RGBQUAD rgb={(BYTE)B,(BYTE)G,(BYTE)R,0};
- return rgb;
- }
-@@ -510,9 +510,9 @@ RGBQUAD CxImage::RGBtoYUV(RGBQUAD lRGBColor)
- U = (int)((B-Y) * 0.565f + 128);
- V = (int)((R-Y) * 0.713f + 128);
-
-- Y= min(255,max(0,Y));
-- U= min(255,max(0,U));
-- V= min(255,max(0,V));
-+ Y= cxmin(255,cxmax(0,Y));
-+ U= cxmin(255,cxmax(0,U));
-+ V= cxmin(255,cxmax(0,V));
- RGBQUAD yuv={(BYTE)V,(BYTE)U,(BYTE)Y,0};
- return yuv;
- }
-@@ -528,9 +528,9 @@ RGBQUAD CxImage::YIQtoRGB(RGBQUAD lYIQColor)
- G = (int)( Y - 0.273f * I - 0.647f * Q);
- B = (int)( Y - 1.104f * I + 1.701f * Q);
-
-- R= min(255,max(0,R));
-- G= min(255,max(0,G));
-- B= min(255,max(0,B));
-+ R= cxmin(255,cxmax(0,R));
-+ G= cxmin(255,cxmax(0,G));
-+ B= cxmin(255,cxmax(0,B));
- RGBQUAD rgb={(BYTE)B,(BYTE)G,(BYTE)R,0};
- return rgb;
- }
-@@ -546,9 +546,9 @@ RGBQUAD CxImage::RGBtoYIQ(RGBQUAD lRGBColor)
- I = (int)( 0.5960f * R - 0.2742f * G - 0.3219f * B + 128);
- Q = (int)( 0.2109f * R - 0.5229f * G + 0.3120f * B + 128);
-
-- Y= min(255,max(0,Y));
-- I= min(255,max(0,I));
-- Q= min(255,max(0,Q));
-+ Y= cxmin(255,cxmax(0,Y));
-+ I= cxmin(255,cxmax(0,I));
-+ Q= cxmin(255,cxmax(0,Q));
- RGBQUAD yiq={(BYTE)Q,(BYTE)I,(BYTE)Y,0};
- return yiq;
- }
-@@ -565,9 +565,9 @@ RGBQUAD CxImage::XYZtoRGB(RGBQUAD lXYZColor)
- G = (int)( -0.969256f * X + 1.875992f * Y + 0.041556f * Z * k);
- B = (int)( 0.055648f * X - 0.204043f * Y + 1.057311f * Z * k);
-
-- R= min(255,max(0,R));
-- G= min(255,max(0,G));
-- B= min(255,max(0,B));
-+ R= cxmin(255,cxmax(0,R));
-+ G= cxmin(255,cxmax(0,G));
-+ B= cxmin(255,cxmax(0,B));
- RGBQUAD rgb={(BYTE)B,(BYTE)G,(BYTE)R,0};
- return rgb;
- }
-@@ -583,9 +583,9 @@ RGBQUAD CxImage::RGBtoXYZ(RGBQUAD lRGBColor)
- Y = (int)( 0.212671f * R + 0.715160f * G + 0.072169f * B);
- Z = (int)((0.019334f * R + 0.119193f * G + 0.950227f * B)*0.918483657f);
-
-- //X= min(255,max(0,X));
-- //Y= min(255,max(0,Y));
-- //Z= min(255,max(0,Z));
-+ //X= cxmin(255,cxmax(0,X));
-+ //Y= cxmin(255,cxmax(0,Y));
-+ //Z= cxmin(255,cxmax(0,Z));
- RGBQUAD xyz={(BYTE)Z,(BYTE)Y,(BYTE)X,0};
- return xyz;
- }
-@@ -707,7 +707,7 @@ bool CxImage::Light(long brightness, long contrast)
-
- BYTE cTable[256]; //<nipper>
- for (int i=0;i<256;i++) {
-- cTable[i] = (BYTE)max(0,min(255,(int)((i-128)*c + brightness + 0.5f)));
-+ cTable[i] = (BYTE)cxmax(0,cxmin(255,(int)((i-128)*c + brightness + 0.5f)));
- }
-
- return Lut(cTable);
-@@ -830,11 +830,11 @@ bool CxImage::Filter(long* kernel, long Ksize, long Kfactor, long Koffset)
- }
- }
- if (Kfactor==0 || ksumcur==0){
-- cPtr2[iY1] = (BYTE)min(255, max(0,(int)(b + Koffset)));
-+ cPtr2[iY1] = (BYTE)cxmin(255, cxmax(0,(int)(b + Koffset)));
- } else if (ksumtot == ksumcur) {
-- cPtr2[iY1] = (BYTE)min(255, max(0,(int)(b/Kfactor + Koffset)));
-+ cPtr2[iY1] = (BYTE)cxmin(255, cxmax(0,(int)(b/Kfactor + Koffset)));
- } else {
-- cPtr2[iY1] = (BYTE)min(255, max(0,(int)((b*ksumtot)/(ksumcur*Kfactor) + Koffset)));
-+ cPtr2[iY1] = (BYTE)cxmin(255, cxmax(0,(int)((b*ksumtot)/(ksumcur*Kfactor) + Koffset)));
- }
- }
- }
-@@ -863,17 +863,17 @@ bool CxImage::Filter(long* kernel, long Ksize, long Kfactor, long Koffset)
- }
- }
- if (Kfactor==0 || ksumcur==0){
-- c.rgbRed = (BYTE)min(255, max(0,(int)(r + Koffset)));
-- c.rgbGreen = (BYTE)min(255, max(0,(int)(g + Koffset)));
-- c.rgbBlue = (BYTE)min(255, max(0,(int)(b + Koffset)));
-+ c.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)(r + Koffset)));
-+ c.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)(g + Koffset)));
-+ c.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)(b + Koffset)));
- } else if (ksumtot == ksumcur) {
-- c.rgbRed = (BYTE)min(255, max(0,(int)(r/Kfactor + Koffset)));
-- c.rgbGreen = (BYTE)min(255, max(0,(int)(g/Kfactor + Koffset)));
-- c.rgbBlue = (BYTE)min(255, max(0,(int)(b/Kfactor + Koffset)));
-+ c.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)(r/Kfactor + Koffset)));
-+ c.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)(g/Kfactor + Koffset)));
-+ c.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)(b/Kfactor + Koffset)));
- } else {
-- c.rgbRed = (BYTE)min(255, max(0,(int)((r*ksumtot)/(ksumcur*Kfactor) + Koffset)));
-- c.rgbGreen = (BYTE)min(255, max(0,(int)((g*ksumtot)/(ksumcur*Kfactor) + Koffset)));
-- c.rgbBlue = (BYTE)min(255, max(0,(int)((b*ksumtot)/(ksumcur*Kfactor) + Koffset)));
-+ c.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)((r*ksumtot)/(ksumcur*Kfactor) + Koffset)));
-+ c.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)((g*ksumtot)/(ksumcur*Kfactor) + Koffset)));
-+ c.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)((b*ksumtot)/(ksumcur*Kfactor) + Koffset)));
- }
- tmp.BlindSetPixelColor(x,y,c);
- }
-@@ -1078,8 +1078,8 @@ bool CxImage::Edge(long Ksize)
- //
- void CxImage::Mix(CxImage & imgsrc2, ImageOpType op, long lXOffset, long lYOffset, bool bMixAlpha)
- {
-- long lWide = min(GetWidth(),imgsrc2.GetWidth()-lXOffset);
-- long lHeight = min(GetHeight(),imgsrc2.GetHeight()-lYOffset);
-+ long lWide = cxmin(GetWidth(),imgsrc2.GetWidth()-lXOffset);
-+ long lHeight = cxmin(GetHeight(),imgsrc2.GetHeight()-lYOffset);
-
- bool bEditAlpha = imgsrc2.AlphaIsValid() & bMixAlpha;
-
-@@ -1112,16 +1112,16 @@ void CxImage::Mix(CxImage & imgsrc2, ImageOpType op, long lXOffset, long lYOffse
- if (bEditAlpha) rgbDest.rgbReserved = (BYTE)((rgb1.rgbReserved+rgb2.rgbReserved)/2);
- break;
- case OpAdd:
-- rgbDest.rgbBlue = (BYTE)max(0,min(255,rgb1.rgbBlue+rgb2.rgbBlue));
-- rgbDest.rgbGreen = (BYTE)max(0,min(255,rgb1.rgbGreen+rgb2.rgbGreen));
-- rgbDest.rgbRed = (BYTE)max(0,min(255,rgb1.rgbRed+rgb2.rgbRed));
-- if (bEditAlpha) rgbDest.rgbReserved = (BYTE)max(0,min(255,rgb1.rgbReserved+rgb2.rgbReserved));
-+ rgbDest.rgbBlue = (BYTE)cxmax(0,cxmin(255,rgb1.rgbBlue+rgb2.rgbBlue));
-+ rgbDest.rgbGreen = (BYTE)cxmax(0,cxmin(255,rgb1.rgbGreen+rgb2.rgbGreen));
-+ rgbDest.rgbRed = (BYTE)cxmax(0,cxmin(255,rgb1.rgbRed+rgb2.rgbRed));
-+ if (bEditAlpha) rgbDest.rgbReserved = (BYTE)cxmax(0,cxmin(255,rgb1.rgbReserved+rgb2.rgbReserved));
- break;
- case OpSub:
-- rgbDest.rgbBlue = (BYTE)max(0,min(255,rgb1.rgbBlue-rgb2.rgbBlue));
-- rgbDest.rgbGreen = (BYTE)max(0,min(255,rgb1.rgbGreen-rgb2.rgbGreen));
-- rgbDest.rgbRed = (BYTE)max(0,min(255,rgb1.rgbRed-rgb2.rgbRed));
-- if (bEditAlpha) rgbDest.rgbReserved = (BYTE)max(0,min(255,rgb1.rgbReserved-rgb2.rgbReserved));
-+ rgbDest.rgbBlue = (BYTE)cxmax(0,cxmin(255,rgb1.rgbBlue-rgb2.rgbBlue));
-+ rgbDest.rgbGreen = (BYTE)cxmax(0,cxmin(255,rgb1.rgbGreen-rgb2.rgbGreen));
-+ rgbDest.rgbRed = (BYTE)cxmax(0,cxmin(255,rgb1.rgbRed-rgb2.rgbRed));
-+ if (bEditAlpha) rgbDest.rgbReserved = (BYTE)cxmax(0,cxmin(255,rgb1.rgbReserved-rgb2.rgbReserved));
- break;
- case OpAnd:
- rgbDest.rgbBlue = (BYTE)(rgb1.rgbBlue&rgb2.rgbBlue);
-@@ -1202,11 +1202,11 @@ void CxImage::Mix(CxImage & imgsrc2, ImageOpType op, long lXOffset, long lYOffse
- double dSmallAmt = dSmall*((double)rgb2.rgbBlue);
-
- if( lAverage < lThresh+1){
-- rgbDest.rgbBlue = (BYTE)max(0,min(255,(int)(dLarge*((double)rgb1.rgbBlue) +
-+ rgbDest.rgbBlue = (BYTE)cxmax(0,cxmin(255,(int)(dLarge*((double)rgb1.rgbBlue) +
- dSmallAmt)));
-- rgbDest.rgbGreen = (BYTE)max(0,min(255,(int)(dLarge*((double)rgb1.rgbGreen) +
-+ rgbDest.rgbGreen = (BYTE)cxmax(0,cxmin(255,(int)(dLarge*((double)rgb1.rgbGreen) +
- dSmallAmt)));
-- rgbDest.rgbRed = (BYTE)max(0,min(255,(int)(dLarge*((double)rgb1.rgbRed) +
-+ rgbDest.rgbRed = (BYTE)cxmax(0,cxmin(255,(int)(dLarge*((double)rgb1.rgbRed) +
- dSmallAmt)));
- }
- else
-@@ -1274,9 +1274,9 @@ bool CxImage::ShiftRGB(long r, long g, long b)
- #endif //CXIMAGE_SUPPORT_SELECTION
- {
- color = BlindGetPixelColor(x,y);
-- color.rgbRed = (BYTE)max(0,min(255,(int)(color.rgbRed + r)));
-- color.rgbGreen = (BYTE)max(0,min(255,(int)(color.rgbGreen + g)));
-- color.rgbBlue = (BYTE)max(0,min(255,(int)(color.rgbBlue + b)));
-+ color.rgbRed = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbRed + r)));
-+ color.rgbGreen = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbGreen + g)));
-+ color.rgbBlue = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbBlue + b)));
- BlindSetPixelColor(x,y,color);
- }
- }
-@@ -1284,9 +1284,9 @@ bool CxImage::ShiftRGB(long r, long g, long b)
- } else {
- for(DWORD j=0; j<head.biClrUsed; j++){
- color = GetPaletteColor((BYTE)j);
-- color.rgbRed = (BYTE)max(0,min(255,(int)(color.rgbRed + r)));
-- color.rgbGreen = (BYTE)max(0,min(255,(int)(color.rgbGreen + g)));
-- color.rgbBlue = (BYTE)max(0,min(255,(int)(color.rgbBlue + b)));
-+ color.rgbRed = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbRed + r)));
-+ color.rgbGreen = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbGreen + g)));
-+ color.rgbBlue = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbBlue + b)));
- SetPaletteColor((BYTE)j,color);
- }
- }
-@@ -1310,7 +1310,7 @@ bool CxImage::Gamma(float gamma)
-
- BYTE cTable[256]; //<nipper>
- for (int i=0;i<256;i++) {
-- cTable[i] = (BYTE)max(0,min(255,(int)( pow((double)i, dinvgamma) / dMax)));
-+ cTable[i] = (BYTE)cxmax(0,cxmin(255,(int)( pow((double)i, dinvgamma) / dMax)));
- }
-
- return Lut(cTable);
-@@ -1337,21 +1337,21 @@ bool CxImage::GammaRGB(float gammaR, float gammaG, float gammaB)
- dMax = pow(255.0, dinvgamma) / 255.0;
- BYTE cTableR[256];
- for (i=0;i<256;i++) {
-- cTableR[i] = (BYTE)max(0,min(255,(int)( pow((double)i, dinvgamma) / dMax)));
-+ cTableR[i] = (BYTE)cxmax(0,cxmin(255,(int)( pow((double)i, dinvgamma) / dMax)));
- }
-
- dinvgamma = 1/gammaG;
- dMax = pow(255.0, dinvgamma) / 255.0;
- BYTE cTableG[256];
- for (i=0;i<256;i++) {
-- cTableG[i] = (BYTE)max(0,min(255,(int)( pow((double)i, dinvgamma) / dMax)));
-+ cTableG[i] = (BYTE)cxmax(0,cxmin(255,(int)( pow((double)i, dinvgamma) / dMax)));
- }
-
- dinvgamma = 1/gammaB;
- dMax = pow(255.0, dinvgamma) / 255.0;
- BYTE cTableB[256];
- for (i=0;i<256;i++) {
-- cTableB[i] = (BYTE)max(0,min(255,(int)( pow((double)i, dinvgamma) / dMax)));
-+ cTableB[i] = (BYTE)cxmax(0,cxmin(255,(int)( pow((double)i, dinvgamma) / dMax)));
- }
-
- return Lut(cTableR, cTableG, cTableB);
-@@ -1442,11 +1442,11 @@ bool CxImage::Noise(long level)
- {
- color = BlindGetPixelColor(x,y);
- n=(long)((rand()/(float)RAND_MAX - 0.5)*level);
-- color.rgbRed = (BYTE)max(0,min(255,(int)(color.rgbRed + n)));
-+ color.rgbRed = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbRed + n)));
- n=(long)((rand()/(float)RAND_MAX - 0.5)*level);
-- color.rgbGreen = (BYTE)max(0,min(255,(int)(color.rgbGreen + n)));
-+ color.rgbGreen = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbGreen + n)));
- n=(long)((rand()/(float)RAND_MAX - 0.5)*level);
-- color.rgbBlue = (BYTE)max(0,min(255,(int)(color.rgbBlue + n)));
-+ color.rgbBlue = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbBlue + n)));
- BlindSetPixelColor(x,y,color);
- }
- }
-@@ -1561,8 +1561,8 @@ bool CxImage::FFT2(CxImage* srcReal, CxImage* srcImag, CxImage* dstReal, CxImage
-
- //DFT buffers
- double *real2,*imag2;
-- real2 = (double*)malloc(max(w,h) * sizeof(double));
-- imag2 = (double*)malloc(max(w,h) * sizeof(double));
-+ real2 = (double*)malloc(cxmax(w,h) * sizeof(double));
-+ imag2 = (double*)malloc(cxmax(w,h) * sizeof(double));
-
- /* Transform the rows */
- real = (double *)malloc(w * sizeof(double));
-@@ -1617,7 +1617,7 @@ bool CxImage::FFT2(CxImage* srcReal, CxImage* srcImag, CxImage* dstReal, CxImage
-
- /* converting from double to byte, there is a HUGE loss in the dynamics
- "nn" tries to keep an acceptable SNR, but 8bit=48dB: don't ask more */
-- double nn=pow((double)2,(double)log((double)max(w,h))/(double)log((double)2)-4);
-+ double nn=pow((double)2,(double)log((double)cxmax(w,h))/(double)log((double)2)-4);
- //reversed gain for reversed transform
- if (direction==-1) nn=1/nn;
- //bMagnitude : just to see it on the screen
-@@ -1626,15 +1626,15 @@ bool CxImage::FFT2(CxImage* srcReal, CxImage* srcImag, CxImage* dstReal, CxImage
- for (j=0;j<h;j++) {
- for (k=0;k<w;k++) {
- if (bMagnitude){
-- tmpReal->SetPixelIndex(k,j,(BYTE)max(0,min(255,(nn*(3+log(_cabs(grid[k][j])))))));
-+ tmpReal->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(nn*(3+log(_cabs(grid[k][j])))))));
- if (grid[k][j].x==0){
-- tmpImag->SetPixelIndex(k,j,(BYTE)max(0,min(255,(128+(atan(grid[k][j].y/0.0000000001)*nn)))));
-+ tmpImag->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(128+(atan(grid[k][j].y/0.0000000001)*nn)))));
- } else {
-- tmpImag->SetPixelIndex(k,j,(BYTE)max(0,min(255,(128+(atan(grid[k][j].y/grid[k][j].x)*nn)))));
-+ tmpImag->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(128+(atan(grid[k][j].y/grid[k][j].x)*nn)))));
- }
- } else {
-- tmpReal->SetPixelIndex(k,j,(BYTE)max(0,min(255,(128 + grid[k][j].x*nn))));
-- tmpImag->SetPixelIndex(k,j,(BYTE)max(0,min(255,(128 + grid[k][j].y*nn))));
-+ tmpReal->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(128 + grid[k][j].x*nn))));
-+ tmpImag->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(128 + grid[k][j].y*nn))));
- }
- }
- }
-@@ -1922,7 +1922,7 @@ bool CxImage::RepairChannel(CxImage *ch, float radius)
-
- correction = ((1.0+iy*iy)*ixx - ix*iy*ixy + (1.0+ix*ix)*iyy)/(1.0+ix*ix+iy*iy);
-
-- tmp.BlindSetPixelIndex(x,y,(BYTE)min(255,max(0,(xy0 + radius * correction + 0.5))));
-+ tmp.BlindSetPixelIndex(x,y,(BYTE)cxmin(255,cxmax(0,(xy0 + radius * correction + 0.5))));
- }
- }
-
-@@ -1943,7 +1943,7 @@ bool CxImage::RepairChannel(CxImage *ch, float radius)
-
- correction = ((1.0+iy*iy)*ixx - ix*iy*ixy + (1.0+ix*ix)*iyy)/(1.0+ix*ix+iy*iy);
-
-- tmp.BlindSetPixelIndex(x,y,(BYTE)min(255,max(0,(xy0 + radius * correction + 0.5))));
-+ tmp.BlindSetPixelIndex(x,y,(BYTE)cxmin(255,cxmax(0,(xy0 + radius * correction + 0.5))));
- }
- }
- for (x=0;x<=w;x+=w){
-@@ -1963,7 +1963,7 @@ bool CxImage::RepairChannel(CxImage *ch, float radius)
-
- correction = ((1.0+iy*iy)*ixx - ix*iy*ixy + (1.0+ix*ix)*iyy)/(1.0+ix*ix+iy*iy);
-
-- tmp.BlindSetPixelIndex(x,y,(BYTE)min(255,max(0,(xy0 + radius * correction + 0.5))));
-+ tmp.BlindSetPixelIndex(x,y,(BYTE)cxmin(255,cxmax(0,(xy0 + radius * correction + 0.5))));
- }
- }
-
-@@ -2621,8 +2621,8 @@ bool CxImage::SelectiveBlur(float radius, BYTE threshold, CxImage* iDst)
- }
-
- //build the difference mask
-- BYTE thresh_dw = (BYTE)max( 0 ,(int)(128 - threshold));
-- BYTE thresh_up = (BYTE)min(255,(int)(128 + threshold));
-+ BYTE thresh_dw = (BYTE)cxmax( 0 ,(int)(128 - threshold));
-+ BYTE thresh_up = (BYTE)cxmin(255,(int)(128 + threshold));
- long kernel[]={-100,-100,-100,-100,801,-100,-100,-100,-100};
- if (!Tmp.Filter(kernel,3,800,128)){
- delete [] pPalette;
-@@ -2755,7 +2755,7 @@ bool CxImage::UnsharpMask(float radius /*= 5.0*/, float amount /*= 0.5*/, int th
- if (abs(diff) < threshold){
- dest_row[z] = cur_row[z];
- } else {
-- dest_row[z] = (BYTE)min(255, max(0,(int)(cur_row[z] + amount * diff)));
-+ dest_row[z] = (BYTE)cxmin(255, cxmax(0,(int)(cur_row[z] + amount * diff)));
- }
- }
- }
-@@ -2952,7 +2952,7 @@ bool CxImage::RedEyeRemove(float strength)
- float a = 1.0f-5.0f*((float)((x-0.5f*(xmax+xmin))*(x-0.5f*(xmax+xmin))+(y-0.5f*(ymax+ymin))*(y-0.5f*(ymax+ymin))))/((float)((xmax-xmin)*(ymax-ymin)));
- if (a<0) a=0;
- color = BlindGetPixelColor(x,y);
-- color.rgbRed = (BYTE)(a*min(color.rgbGreen,color.rgbBlue)+(1.0f-a)*color.rgbRed);
-+ color.rgbRed = (BYTE)(a*cxmin(color.rgbGreen,color.rgbBlue)+(1.0f-a)*color.rgbRed);
- BlindSetPixelColor(x,y,color);
- }
- }
-@@ -2990,7 +2990,7 @@ bool CxImage::Saturate(const long saturation, const long colorspace)
- case 1:
- {
- for (int i=0;i<256;i++) {
-- cTable[i] = (BYTE)max(0,min(255,(int)(i + saturation)));
-+ cTable[i] = (BYTE)cxmax(0,cxmin(255,(int)(i + saturation)));
- }
- for(long y=ymin; y<ymax; y++){
- info.nProgress = (long)(100*(y-ymin)/(ymax-ymin));
-@@ -3012,7 +3012,7 @@ bool CxImage::Saturate(const long saturation, const long colorspace)
- case 2:
- {
- for (int i=0;i<256;i++) {
-- cTable[i] = (BYTE)max(0,min(255,(int)((i-128)*(100 + saturation)/100.0f + 128.5f)));
-+ cTable[i] = (BYTE)cxmax(0,cxmin(255,(int)((i-128)*(100 + saturation)/100.0f + 128.5f)));
- }
- for(long y=ymin; y<ymax; y++){
- info.nProgress = (long)(100*(y-ymin)/(ymax-ymin));
-@@ -3242,10 +3242,10 @@ int CxImage::OptimalThreshold(long method, RECT * pBox, CxImage* pContrastMask)
-
- long xmin,xmax,ymin,ymax;
- if (pBox){
-- xmin = max(pBox->left,0);
-- xmax = min(pBox->right,head.biWidth);
-- ymin = max(pBox->bottom,0);
-- ymax = min(pBox->top,head.biHeight);
-+ xmin = cxmax(pBox->left,0);
-+ xmax = cxmin(pBox->right,head.biWidth);
-+ ymin = cxmax(pBox->bottom,0);
-+ ymax = cxmin(pBox->top,head.biHeight);
- } else {
- xmin = ymin = 0;
- xmax = head.biWidth; ymax=head.biHeight;
-@@ -3463,7 +3463,7 @@ bool CxImage::AdaptiveThreshold(long method, long nBoxSize, CxImage* pContrastMa
- r.top = r.bottom + nBoxSize;
- int threshold = OptimalThreshold(method, &r, pContrastMask);
- if (threshold <0) return false;
-- mask.SetPixelIndex(x,y,(BYTE)max(0,min(255,nBias+((1.0f-fGlobalLocalBalance)*threshold + fGlobalLocalBalance*globalthreshold))));
-+ mask.SetPixelIndex(x,y,(BYTE)cxmax(0,cxmin(255,nBias+((1.0f-fGlobalLocalBalance)*threshold + fGlobalLocalBalance*globalthreshold))));
- }
- }
-
-@@ -3490,10 +3490,6 @@ bool CxImage::AdaptiveThreshold(long method, long nBoxSize, CxImage* pContrastMa
- * Note: nOpacity=0 && bSelectFilledArea=true act as a "magic wand"
- * \return true if everything is ok
- */
--#if defined(XBMC) && !defined(_WIN32)
--int max(int a, int b) { return a > b ? a : b; }
--int min(int a, int b) { return a < b ? a : b; }
--#endif
-
- bool CxImage::FloodFill(const long xStart, const long yStart, const RGBQUAD cFillColor, const BYTE nTolerance,
- BYTE nOpacity, const bool bSelectFilledArea, const BYTE nSelectionLevel)
-@@ -3538,8 +3534,8 @@ bool CxImage::FloodFill(const long xStart, const long yStart, const RGBQUAD cFil
- if (IsIndexed()){ //--- Generic indexed image, no tolerance OR Grayscale image with tolerance
- BYTE idxRef = GetPixelIndex(xStart,yStart);
- BYTE idxFill = GetNearestIndex(cFillColor);
-- BYTE idxMin = (BYTE)min(255, max(0,(int)(idxRef - nTolerance)));
-- BYTE idxMax = (BYTE)min(255, max(0,(int)(idxRef + nTolerance)));
-+ BYTE idxMin = (BYTE)cxmin(255, cxmax(0,(int)(idxRef - nTolerance)));
-+ BYTE idxMax = (BYTE)cxmin(255, cxmax(0,(int)(idxRef + nTolerance)));
-
- while(!q.empty())
- {
-@@ -3575,12 +3571,12 @@ bool CxImage::FloodFill(const long xStart, const long yStart, const RGBQUAD cFil
- } else { //--- RGB image
- RGBQUAD cRef = GetPixelColor(xStart,yStart);
- RGBQUAD cRefMin, cRefMax;
-- cRefMin.rgbRed = (BYTE)min(255, max(0,(int)(cRef.rgbRed - nTolerance)));
-- cRefMin.rgbGreen = (BYTE)min(255, max(0,(int)(cRef.rgbGreen - nTolerance)));
-- cRefMin.rgbBlue = (BYTE)min(255, max(0,(int)(cRef.rgbBlue - nTolerance)));
-- cRefMax.rgbRed = (BYTE)min(255, max(0,(int)(cRef.rgbRed + nTolerance)));
-- cRefMax.rgbGreen = (BYTE)min(255, max(0,(int)(cRef.rgbGreen + nTolerance)));
-- cRefMax.rgbBlue = (BYTE)min(255, max(0,(int)(cRef.rgbBlue + nTolerance)));
-+ cRefMin.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbRed - nTolerance)));
-+ cRefMin.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbGreen - nTolerance)));
-+ cRefMin.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbBlue - nTolerance)));
-+ cRefMax.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbRed + nTolerance)));
-+ cRefMax.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbGreen + nTolerance)));
-+ cRefMax.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbBlue + nTolerance)));
-
- while(!q.empty())
- {
-diff --git a/lib/cximage-6.0/CxImage/ximage.cpp b/lib/cximage-6.0/CxImage/ximage.cpp
-index e81d3c6..26c6993 100644
---- a/lib/cximage-6.0/CxImage/ximage.cpp
-+++ b/lib/cximage-6.0/CxImage/ximage.cpp
-@@ -460,7 +460,7 @@ bool CxImage::CreateFromArray(BYTE* pArray,DWORD dwWidth,DWORD dwHeight,DWORD dw
- src+=4;
- }
- } else {
-- memcpy(dst,src,min(info.dwEffWidth,dwBytesperline));
-+ memcpy(dst,src,cxmin(info.dwEffWidth,dwBytesperline));
- }
- }
- return true;
-@@ -500,7 +500,7 @@ bool CxImage::CreateFromMatrix(BYTE** ppMatrix,DWORD dwWidth,DWORD dwHeight,DWOR
- src+=4;
- }
- } else {
-- memcpy(dst,src,min(info.dwEffWidth,dwBytesperline));
-+ memcpy(dst,src,cxmin(info.dwEffWidth,dwBytesperline));
- }
- }
- }
-diff --git a/lib/cximage-6.0/CxImage/ximagif.cpp b/lib/cximage-6.0/CxImage/ximagif.cpp
-index b89e061..64b1ccc 100644
---- a/lib/cximage-6.0/CxImage/ximagif.cpp
-+++ b/lib/cximage-6.0/CxImage/ximagif.cpp
-@@ -478,7 +478,7 @@ bool CxImageGIF::Encode(CxFile * fp, CxImage ** pImages, int pagecount, bool bLo
- ghost.EncodeHeader(fp);
-
- if (m_loops!=1){
-- ghost.SetLoops(max(0,m_loops-1));
-+ ghost.SetLoops(cxmax(0,m_loops-1));
- ghost.EncodeLoopExtension(fp);
- }
-
-@@ -1340,10 +1340,10 @@ void CxImageGIF::GetComment(char* sz_comment_out)
- ////////////////////////////////////////////////////////////////////////////////
- void CxImageGIF::GifMix(CxImage & imgsrc2, struct_image & imgdesc)
- {
-- long ymin = max(0,(long)(GetHeight()-imgdesc.t - imgdesc.h));
-+ long ymin = cxmax(0,(long)(GetHeight()-imgdesc.t - imgdesc.h));
- long ymax = GetHeight()-imgdesc.t;
- long xmin = imgdesc.l;
-- long xmax = min(GetWidth(), (DWORD)(imgdesc.l + imgdesc.w));
-+ long xmax = cxmin(GetWidth(), (DWORD)(imgdesc.l + imgdesc.w));
-
- long ibg2= imgsrc2.GetTransIndex();
- BYTE i2;
-diff --git a/lib/cximage-6.0/CxImage/ximahist.cpp b/lib/cximage-6.0/CxImage/ximahist.cpp
-index a2aed03..5391107 100644
---- a/lib/cximage-6.0/CxImage/ximahist.cpp
-+++ b/lib/cximage-6.0/CxImage/ximahist.cpp
-@@ -110,7 +110,7 @@ bool CxImage::HistogramStretch(long method, double threshold)
- // calculate LUT
- BYTE lut[256];
- for (x = 0; x <256; x++){
-- lut[x] = (BYTE)max(0,min(255,(255 * (x - minc) / (maxc - minc))));
-+ lut[x] = (BYTE)cxmax(0,cxmin(255,(255 * (x - minc) / (maxc - minc))));
- }
-
- for (y=0; y<head.biHeight; y++) {
-@@ -152,7 +152,7 @@ bool CxImage::HistogramStretch(long method, double threshold)
- // calculate LUT
- BYTE lut[256];
- for (x = 0; x <256; x++){
-- lut[x] = (BYTE)max(0,min(255,(255 * (x - minc) / (maxc - minc))));
-+ lut[x] = (BYTE)cxmax(0,cxmin(255,(255 * (x - minc) / (maxc - minc))));
- }
-
- // normalize image
-@@ -225,7 +225,7 @@ bool CxImage::HistogramStretch(long method, double threshold)
- BYTE range = maxR - minR;
- if (range != 0) {
- for (x = 0; x <256; x++){
-- lutR[x] = (BYTE)max(0,min(255,(255 * (x - minR) / range)));
-+ lutR[x] = (BYTE)cxmax(0,cxmin(255,(255 * (x - minR) / range)));
- }
- } else lutR[minR] = minR;
-
-@@ -233,7 +233,7 @@ bool CxImage::HistogramStretch(long method, double threshold)
- range = maxG - minG;
- if (range != 0) {
- for (x = 0; x <256; x++){
-- lutG[x] = (BYTE)max(0,min(255,(255 * (x - minG) / range)));
-+ lutG[x] = (BYTE)cxmax(0,cxmin(255,(255 * (x - minG) / range)));
- }
- } else lutG[minG] = minG;
-
-@@ -241,7 +241,7 @@ bool CxImage::HistogramStretch(long method, double threshold)
- range = maxB - minB;
- if (range != 0) {
- for (x = 0; x <256; x++){
-- lutB[x] = (BYTE)max(0,min(255,(255 * (x - minB) / range)));
-+ lutB[x] = (BYTE)cxmax(0,cxmin(255,(255 * (x - minB) / range)));
- }
- } else lutB[minB] = minB;
-
-@@ -292,7 +292,7 @@ bool CxImage::HistogramStretch(long method, double threshold)
- // calculate LUT
- BYTE lut[256];
- for (x = 0; x <256; x++){
-- lut[x] = (BYTE)max(0,min(255,(255 * (x - minc) / (maxc - minc))));
-+ lut[x] = (BYTE)cxmax(0,cxmin(255,(255 * (x - minc) / (maxc - minc))));
- }
-
- for(y=0; y<head.biHeight; y++){
-diff --git a/lib/cximage-6.0/CxImage/ximaint.cpp b/lib/cximage-6.0/CxImage/ximaint.cpp
-index 989d76c..5d49213 100644
---- a/lib/cximage-6.0/CxImage/ximaint.cpp
-+++ b/lib/cximage-6.0/CxImage/ximaint.cpp
-@@ -26,8 +26,8 @@ void CxImage::OverflowCoordinates(long &x, long &y, OverflowMethod const ofMetho
- switch (ofMethod) {
- case OM_REPEAT:
- //clip coordinates
-- x=max(x,0); x=min(x, head.biWidth-1);
-- y=max(y,0); y=min(y, head.biHeight-1);
-+ x=cxmax(x,0); x=cxmin(x, head.biWidth-1);
-+ y=cxmax(y,0); y=cxmin(y, head.biHeight-1);
- break;
- case OM_WRAP:
- //wrap coordinates
-@@ -59,8 +59,8 @@ void CxImage::OverflowCoordinates(float &x, float &y, OverflowMethod const ofMet
- switch (ofMethod) {
- case OM_REPEAT:
- //clip coordinates
-- x=max(x,0); x=min(x, head.biWidth-1);
-- y=max(y,0); y=min(y, head.biHeight-1);
-+ x=cxmax(x,0); x=cxmin(x, head.biWidth-1);
-+ y=cxmax(y,0); y=cxmin(y, head.biHeight-1);
- break;
- case OM_WRAP:
- //wrap coordinates
-diff --git a/lib/cximage-6.0/CxImage/ximaiter.h b/lib/cximage-6.0/CxImage/ximaiter.h
-index 9788919..01a720b 100644
---- a/lib/cximage-6.0/CxImage/ximaiter.h
-+++ b/lib/cximage-6.0/CxImage/ximaiter.h
-@@ -140,7 +140,7 @@ inline void CImageIterator::SetY(int y)
- inline void CImageIterator::SetRow(BYTE *buf, int n)
- {
- if (n<0) n = (int)ima->GetEffWidth();
-- else n = min(n,(int)ima->GetEffWidth());
-+ else n = cxmin(n,(int)ima->GetEffWidth());
-
- if ((IterImage!=NULL)&&(buf!=NULL)&&(n>0)) memcpy(IterImage,buf,n);
- }
-@@ -148,7 +148,7 @@ inline void CImageIterator::SetRow(BYTE *buf, int n)
- inline void CImageIterator::GetRow(BYTE *buf, int n)
- {
- if ((IterImage!=NULL)&&(buf!=NULL)&&(n>0))
-- memcpy(buf,IterImage,min(n,(int)ima->GetEffWidth()));
-+ memcpy(buf,IterImage,cxmin(n,(int)ima->GetEffWidth()));
- }
- /////////////////////////////////////////////////////////////////////
- inline BYTE* CImageIterator::GetRow()
-diff --git a/lib/cximage-6.0/CxImage/ximajbg.cpp b/lib/cximage-6.0/CxImage/ximajbg.cpp
-index 06fb9bf..8a01e28 100644
---- a/lib/cximage-6.0/CxImage/ximajbg.cpp
-+++ b/lib/cximage-6.0/CxImage/ximajbg.cpp
-@@ -145,7 +145,7 @@ bool CxImageJBG::Encode(CxFile * hFile)
- jbg_enc_init(&jbig_state, w, h, planes, &buffer, jbig_data_out, hFile);
-
- //jbg_enc_layers(&jbig_state, 2);
-- //jbg_enc_lrlmax(&jbig_state, 800, 600);
-+ //jbg_enc_lrlcxmax(&jbig_state, 800, 600);
-
- // Specify a few other options (each is ignored if negative)
- int dl = -1, dh = -1, d = -1, l0 = -1, mx = -1;
-diff --git a/lib/cximage-6.0/CxImage/ximapal.cpp b/lib/cximage-6.0/CxImage/ximapal.cpp
-index b3bd3da..3788c98 100644
---- a/lib/cximage-6.0/CxImage/ximapal.cpp
-+++ b/lib/cximage-6.0/CxImage/ximapal.cpp
-@@ -398,8 +398,8 @@ void CxImage::RGBtoBGR(BYTE *buffer, int length)
- {
- if (buffer && (head.biClrUsed==0)){
- BYTE temp;
-- length = min(length,(int)info.dwEffWidth);
-- length = min(length,(int)(3*head.biWidth));
-+ length = cxmin(length,(int)info.dwEffWidth);
-+ length = cxmin(length,(int)(3*head.biWidth));
- for (int i=0;i<length;i+=3){
- temp = buffer[i]; buffer[i] = buffer[i+2]; buffer[i+2] = temp;
- }
-@@ -444,7 +444,7 @@ void CxImage::SetPalette(DWORD n, BYTE *r, BYTE *g, BYTE *b)
- if (!g) g = r;
- if (!b) b = g;
- RGBQUAD* ppal=GetPalette();
-- DWORD m=min(n,head.biClrUsed);
-+ DWORD m=cxmin(n,head.biClrUsed);
- for (DWORD i=0; i<m;i++){
- ppal[i].rgbRed=r[i];
- ppal[i].rgbGreen=g[i];
-@@ -457,7 +457,7 @@ void CxImage::SetPalette(rgb_color *rgb,DWORD nColors)
- {
- if ((!rgb)||(pDib==NULL)||(head.biClrUsed==0)) return;
- RGBQUAD* ppal=GetPalette();
-- DWORD m=min(nColors,head.biClrUsed);
-+ DWORD m=cxmin(nColors,head.biClrUsed);
- for (DWORD i=0; i<m;i++){
- ppal[i].rgbRed=rgb[i].r;
- ppal[i].rgbGreen=rgb[i].g;
-@@ -469,7 +469,7 @@ void CxImage::SetPalette(rgb_color *rgb,DWORD nColors)
- void CxImage::SetPalette(RGBQUAD* pPal,DWORD nColors)
- {
- if ((pPal==NULL)||(pDib==NULL)||(head.biClrUsed==0)) return;
-- memcpy(GetPalette(),pPal,min(GetPaletteSize(),nColors*sizeof(RGBQUAD)));
-+ memcpy(GetPalette(),pPal,cxmin(GetPaletteSize(),nColors*sizeof(RGBQUAD)));
- info.last_c_isvalid = false;
- }
- ////////////////////////////////////////////////////////////////////////////////
-@@ -654,10 +654,10 @@ void CxImage::SetClrImportant(DWORD ncolors)
-
- switch(head.biBitCount){
- case 1:
-- head.biClrImportant = min(ncolors,2);
-+ head.biClrImportant = cxmin(ncolors,2);
- break;
- case 4:
-- head.biClrImportant = min(ncolors,16);
-+ head.biClrImportant = cxmin(ncolors,16);
- break;
- case 8:
- head.biClrImportant = ncolors;
-diff --git a/lib/cximage-6.0/CxImage/ximapng.cpp b/lib/cximage-6.0/CxImage/ximapng.cpp
-index a58441c..4b5cc50 100644
---- a/lib/cximage-6.0/CxImage/ximapng.cpp
-+++ b/lib/cximage-6.0/CxImage/ximapng.cpp
-@@ -206,9 +206,9 @@ bool CxImagePNG::Decode(CxFile *hFile)
- } else SetGrayPalette(); //<DP> needed for grayscale PNGs
-
- #ifdef USE_NEW_LIBPNG_API
-- int nshift = max(0,(_bit_depth>>3)-1)<<3;
-+ int nshift = cxmax(0,(_bit_depth>>3)-1)<<3;
- #else
-- int nshift = max(0,(info_ptr->bit_depth>>3)-1)<<3;
-+ int nshift = cxmax(0,(info_ptr->bit_depth>>3)-1)<<3;
- #endif
-
- #ifdef USE_NEW_LIBPNG_API
-@@ -255,10 +255,10 @@ bool CxImagePNG::Decode(CxFile *hFile)
- if (pal){
- DWORD ip;
- #ifdef USE_NEW_LIBPNG_API
-- for (ip=0;ip<min(head.biClrUsed,(unsigned long)_num_trans);ip++)
-+ for (ip=0;ip<cxmin(head.biClrUsed,(unsigned long)_num_trans);ip++)
- pal[ip].rgbReserved=_trans_alpha[ip];
- #else
-- for (ip=0;ip<min(head.biClrUsed,(unsigned long)info_ptr->num_trans);ip++)
-+ for (ip=0;ip<cxmin(head.biClrUsed,(unsigned long)info_ptr->num_trans);ip++)
- #if PNG_LIBPNG_VER > 10399
- pal[ip].rgbReserved=info_ptr->trans_alpha[ip];
- #else
-@@ -737,9 +737,9 @@ bool CxImagePNG::Encode(CxFile *hFile)
- #endif // CXIMAGE_SUPPORT_ALPHA // <vho>
-
- #ifdef USE_NEW_LIBPNG_API
-- int row_size = max(info.dwEffWidth, (_width * _channels * _bit_depth / 8));
-+ int row_size = cxmax(info.dwEffWidth, (_width * _channels * _bit_depth / 8));
- #else
-- int row_size = max(info.dwEffWidth, info_ptr->width*info_ptr->channels*(info_ptr->bit_depth/8));
-+ int row_size = cxmax(info.dwEffWidth, info_ptr->width*info_ptr->channels*(info_ptr->bit_depth/8));
- info_ptr->rowbytes = row_size;
- #endif
- BYTE *row_pointers = new BYTE[row_size];
-diff --git a/lib/cximage-6.0/CxImage/ximaraw.cpp b/lib/cximage-6.0/CxImage/ximaraw.cpp
-index fd86f96..52d964d 100644
---- a/lib/cximage-6.0/CxImage/ximaraw.cpp
-+++ b/lib/cximage-6.0/CxImage/ximaraw.cpp
-@@ -216,7 +216,7 @@ bool CxImageRAW::Decode(CxFile *hFile)
-
- DWORD size = dcr.width * (dcr.colors*dcr.opt.output_bps/8);
- RGBtoBGR(ppm,size);
-- memcpy(GetBits(dcr.height - 1 - row), ppm, min(size,GetEffWidth()));
-+ memcpy(GetBits(dcr.height - 1 - row), ppm, cxmin(size,GetEffWidth()));
- }
- free (ppm);
-
-@@ -298,7 +298,7 @@ bool CxImageRAW::GetExifThumbnail(const char *filename, const char *outname, int
- // Resizing.
- if (image.GetWidth() > 256 || image.GetHeight() > 256)
- {
-- float amount = 256.0f / max(image.GetWidth(), image.GetHeight());
-+ float amount = 256.0f / cxmax(image.GetWidth(), image.GetHeight());
- image.Resample((long)(image.GetWidth() * amount), (long)(image.GetHeight() * amount), 0);
- }
-
-diff --git a/lib/cximage-6.0/CxImage/ximasel.cpp b/lib/cximage-6.0/CxImage/ximasel.cpp
-index 3a7c9a1..37cd10f 100644
---- a/lib/cximage-6.0/CxImage/ximasel.cpp
-+++ b/lib/cximage-6.0/CxImage/ximasel.cpp
-@@ -113,15 +113,15 @@ bool CxImage::SelectionAddRect(RECT r, BYTE level)
- if (r.left<r.right) {r2.left=r.left; r2.right=r.right; } else {r2.left=r.right ; r2.right=r.left; }
- if (r.bottom<r.top) {r2.bottom=r.bottom; r2.top=r.top; } else {r2.bottom=r.top ; r2.top=r.bottom; }
-
-- if (info.rSelectionBox.top <= r2.top) info.rSelectionBox.top = max(0L,min(head.biHeight,r2.top+1));
-- if (info.rSelectionBox.left > r2.left) info.rSelectionBox.left = max(0L,min(head.biWidth,r2.left));
-- if (info.rSelectionBox.right <= r2.right) info.rSelectionBox.right = max(0L,min(head.biWidth,r2.right+1));
-- if (info.rSelectionBox.bottom > r2.bottom) info.rSelectionBox.bottom = max(0L,min(head.biHeight,r2.bottom));
-+ if (info.rSelectionBox.top <= r2.top) info.rSelectionBox.top = cxmax(0L,cxmin(head.biHeight,r2.top+1));
-+ if (info.rSelectionBox.left > r2.left) info.rSelectionBox.left = cxmax(0L,cxmin(head.biWidth,r2.left));
-+ if (info.rSelectionBox.right <= r2.right) info.rSelectionBox.right = cxmax(0L,cxmin(head.biWidth,r2.right+1));
-+ if (info.rSelectionBox.bottom > r2.bottom) info.rSelectionBox.bottom = cxmax(0L,cxmin(head.biHeight,r2.bottom));
-
-- long ymin = max(0L,min(head.biHeight,r2.bottom));
-- long ymax = max(0L,min(head.biHeight,r2.top+1));
-- long xmin = max(0L,min(head.biWidth,r2.left));
-- long xmax = max(0L,min(head.biWidth,r2.right+1));
-+ long ymin = cxmax(0L,cxmin(head.biHeight,r2.bottom));
-+ long ymax = cxmax(0L,cxmin(head.biHeight,r2.top+1));
-+ long xmin = cxmax(0L,cxmin(head.biWidth,r2.left));
-+ long xmax = cxmax(0L,cxmin(head.biWidth,r2.right+1));
-
- for (long y=ymin; y<ymax; y++)
- memset(pSelection + xmin + y * head.biWidth, level, xmax-xmin);
-@@ -144,18 +144,18 @@ bool CxImage::SelectionAddEllipse(RECT r, BYTE level)
- long xcenter = (r.right + r.left)/2;
- long ycenter = (r.top + r.bottom)/2;
-
-- if (info.rSelectionBox.left > (xcenter - xradius)) info.rSelectionBox.left = max(0L,min(head.biWidth,(xcenter - xradius)));
-- if (info.rSelectionBox.right <= (xcenter + xradius)) info.rSelectionBox.right = max(0L,min(head.biWidth,(xcenter + xradius + 1)));
-- if (info.rSelectionBox.bottom > (ycenter - yradius)) info.rSelectionBox.bottom = max(0L,min(head.biHeight,(ycenter - yradius)));
-- if (info.rSelectionBox.top <= (ycenter + yradius)) info.rSelectionBox.top = max(0L,min(head.biHeight,(ycenter + yradius + 1)));
-+ if (info.rSelectionBox.left > (xcenter - xradius)) info.rSelectionBox.left = cxmax(0L,cxmin(head.biWidth,(xcenter - xradius)));
-+ if (info.rSelectionBox.right <= (xcenter + xradius)) info.rSelectionBox.right = cxmax(0L,cxmin(head.biWidth,(xcenter + xradius + 1)));
-+ if (info.rSelectionBox.bottom > (ycenter - yradius)) info.rSelectionBox.bottom = cxmax(0L,cxmin(head.biHeight,(ycenter - yradius)));
-+ if (info.rSelectionBox.top <= (ycenter + yradius)) info.rSelectionBox.top = cxmax(0L,cxmin(head.biHeight,(ycenter + yradius + 1)));
-
-- long xmin = max(0L,min(head.biWidth,xcenter - xradius));
-- long xmax = max(0L,min(head.biWidth,xcenter + xradius + 1));
-- long ymin = max(0L,min(head.biHeight,ycenter - yradius));
-- long ymax = max(0L,min(head.biHeight,ycenter + yradius + 1));
-+ long xmin = cxmax(0L,cxmin(head.biWidth,xcenter - xradius));
-+ long xmax = cxmax(0L,cxmin(head.biWidth,xcenter + xradius + 1));
-+ long ymin = cxmax(0L,cxmin(head.biHeight,ycenter - yradius));
-+ long ymax = cxmax(0L,cxmin(head.biHeight,ycenter + yradius + 1));
-
- long y,yo;
-- for (y=ymin; y<min(ycenter,ymax); y++){
-+ for (y=ymin; y<cxmin(ycenter,ymax); y++){
- for (long x=xmin; x<xmax; x++){
- yo = (long)(ycenter - yradius * sqrt(1-pow((float)(x - xcenter)/(float)xradius,2)));
- if (yo<y) pSelection[x + y * head.biWidth] = level;
-@@ -268,10 +268,10 @@ bool CxImage::SelectionAddPolygon(POINT *points, long npoints, BYTE level)
- RECT r2;
- if (current->x < next->x) {r2.left=current->x; r2.right=next->x; } else {r2.left=next->x ; r2.right=current->x; }
- if (current->y < next->y) {r2.bottom=current->y; r2.top=next->y; } else {r2.bottom=next->y ; r2.top=current->y; }
-- if (localbox.top < r2.top) localbox.top = max(0L,min(head.biHeight-1,r2.top+1));
-- if (localbox.left > r2.left) localbox.left = max(0L,min(head.biWidth-1,r2.left-1));
-- if (localbox.right < r2.right) localbox.right = max(0L,min(head.biWidth-1,r2.right+1));
-- if (localbox.bottom > r2.bottom) localbox.bottom = max(0L,min(head.biHeight-1,r2.bottom-1));
-+ if (localbox.top < r2.top) localbox.top = cxmax(0L,cxmin(head.biHeight-1,r2.top+1));
-+ if (localbox.left > r2.left) localbox.left = cxmax(0L,cxmin(head.biWidth-1,r2.left-1));
-+ if (localbox.right < r2.right) localbox.right = cxmax(0L,cxmin(head.biWidth-1,r2.right+1));
-+ if (localbox.bottom > r2.bottom) localbox.bottom = cxmax(0L,cxmin(head.biHeight-1,r2.bottom-1));
-
- i++;
- }
-@@ -385,10 +385,10 @@ bool CxImage::SelectionAddPolygon(POINT *points, long npoints, BYTE level)
- for (x=localbox.left; x<=localbox.right; x++)
- if (plocal[x + yoffset]!=1) pSelection[x + yoffset]=level;
- }
-- if (info.rSelectionBox.top <= localbox.top) info.rSelectionBox.top = min(head.biHeight,localbox.top + 1);
-- if (info.rSelectionBox.left > localbox.left) info.rSelectionBox.left = min(head.biWidth,localbox.left);
-- if (info.rSelectionBox.right <= localbox.right) info.rSelectionBox.right = min(head.biWidth,localbox.right + 1);
-- if (info.rSelectionBox.bottom > localbox.bottom) info.rSelectionBox.bottom = min(head.biHeight,localbox.bottom);
-+ if (info.rSelectionBox.top <= localbox.top) info.rSelectionBox.top = cxmin(head.biHeight,localbox.top + 1);
-+ if (info.rSelectionBox.left > localbox.left) info.rSelectionBox.left = cxmin(head.biWidth,localbox.left);
-+ if (info.rSelectionBox.right <= localbox.right) info.rSelectionBox.right = cxmin(head.biWidth,localbox.right + 1);
-+ if (info.rSelectionBox.bottom > localbox.bottom) info.rSelectionBox.bottom = cxmin(head.biHeight,localbox.bottom);
-
- free(plocal);
- free(pix);
-diff --git a/lib/cximage-6.0/CxImage/ximath.cpp b/lib/cximage-6.0/CxImage/ximath.cpp
-index 37533e2..f84eb72 100644
---- a/lib/cximage-6.0/CxImage/ximath.cpp
-+++ b/lib/cximage-6.0/CxImage/ximath.cpp
-@@ -64,10 +64,10 @@ CxRect2 CxRect2::CrossSection(CxRect2 const &r2) const
- */
- {
- CxRect2 cs;
-- cs.botLeft.x=max(botLeft.x, r2.botLeft.x);
-- cs.botLeft.y=max(botLeft.y, r2.botLeft.y);
-- cs.topRight.x=min(topRight.x, r2.topRight.x);
-- cs.topRight.y=min(topRight.y, r2.topRight.y);
-+ cs.botLeft.x=cxmax(botLeft.x, r2.botLeft.x);
-+ cs.botLeft.y=cxmax(botLeft.y, r2.botLeft.y);
-+ cs.topRight.x=cxmin(topRight.x, r2.topRight.x);
-+ cs.topRight.y=cxmin(topRight.y, r2.topRight.y);
- if (cs.botLeft.x<=cs.topRight.x && cs.botLeft.y<=cs.topRight.y) {
- return cs;
- } else {
-diff --git a/lib/cximage-6.0/CxImage/ximatif.cpp b/lib/cximage-6.0/CxImage/ximatif.cpp
-index 658392a..002766c 100644
---- a/lib/cximage-6.0/CxImage/ximatif.cpp
-+++ b/lib/cximage-6.0/CxImage/ximatif.cpp
-@@ -470,9 +470,9 @@ bool CxImageTIF::Decode(CxFile * hFile)
- if ( cb > 0.00304 ) cb = 1.055 * pow(cb,0.41667) - 0.055;
- else cb = 12.92 * cb;
-
-- c.rgbRed =(BYTE)max(0,min(255,(int)(cr*255)));
-- c.rgbGreen=(BYTE)max(0,min(255,(int)(cg*255)));
-- c.rgbBlue =(BYTE)max(0,min(255,(int)(cb*255)));
-+ c.rgbRed =(BYTE)cxmax(0,cxmin(255,(int)(cr*255)));
-+ c.rgbGreen=(BYTE)cxmax(0,cxmin(255,(int)(cg*255)));
-+ c.rgbBlue =(BYTE)cxmax(0,cxmin(255,(int)(cb*255)));
-
- SetPixelColor(xi,yi,c);
- #if CXIMAGE_SUPPORT_ALPHA
-diff --git a/lib/cximage-6.0/CxImage/ximatran.cpp b/lib/cximage-6.0/CxImage/ximatran.cpp
-index 64a71e7..84d5e03 100644
---- a/lib/cximage-6.0/CxImage/ximatran.cpp
-+++ b/lib/cximage-6.0/CxImage/ximatran.cpp
-@@ -302,12 +302,12 @@ bool CxImage::RotateLeft(CxImage* iDst)
- for (ys = 0; ys < newHeight; ys+=RBLOCK) {
- if (head.biBitCount==24) {
- //RGB24 optimized pixel access:
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){ //do rotation
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){ //do rotation
- info.nProgress = (long)(100*x/newWidth);
- x2=newWidth-x-1;
- dstPtr = (BYTE*) imgDest.BlindGetPixelPointer(x,ys);
- srcPtr = (BYTE*) BlindGetPixelPointer(ys, x2);
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- //imgDest.SetPixelColor(x, y, GetPixelColor(y, x2));
- *(dstPtr) = *(srcPtr);
- *(dstPtr+1) = *(srcPtr+1);
-@@ -318,19 +318,19 @@ bool CxImage::RotateLeft(CxImage* iDst)
- }//for x
- } else {
- //anything else than 24bpp (and 1bpp): palette
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- info.nProgress = (long)(100*x/newWidth); //<Anatoly Ivasyuk>
- x2=newWidth-x-1;
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- imgDest.SetPixelIndex(x, y, BlindGetPixelIndex(y, x2));
- }//for y
- }//for x
- }//if (version selection)
- #if CXIMAGE_SUPPORT_ALPHA
- if (AlphaIsValid()) {
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- x2=newWidth-x-1;
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- imgDest.AlphaSet(x,y,BlindAlphaGet(y, x2));
- }//for y
- }//for x
-@@ -343,9 +343,9 @@ bool CxImage::RotateLeft(CxImage* iDst)
- imgDest.info.rSelectionBox.right = newWidth-info.rSelectionBox.bottom;
- imgDest.info.rSelectionBox.bottom = info.rSelectionBox.left;
- imgDest.info.rSelectionBox.top = info.rSelectionBox.right;
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- x2=newWidth-x-1;
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- imgDest.SelectionSet(x,y,BlindSelectionGet(y, x2));
- }//for y
- }//for x
-@@ -447,12 +447,12 @@ bool CxImage::RotateRight(CxImage* iDst)
- for (ys = 0; ys < newHeight; ys+=RBLOCK) {
- if (head.biBitCount==24) {
- //RGB24 optimized pixel access:
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- info.nProgress = (long)(100*y/newHeight); //<Anatoly Ivasyuk>
- y2=newHeight-y-1;
- dstPtr = (BYTE*) imgDest.BlindGetPixelPointer(xs,y);
- srcPtr = (BYTE*) BlindGetPixelPointer(y2, xs);
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- //imgDest.SetPixelColor(x, y, GetPixelColor(y2, x));
- *(dstPtr) = *(srcPtr);
- *(dstPtr+1) = *(srcPtr+1);
-@@ -463,19 +463,19 @@ bool CxImage::RotateRight(CxImage* iDst)
- }//for y
- } else {
- //anything else than BW & RGB24: palette
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- info.nProgress = (long)(100*y/newHeight); //<Anatoly Ivasyuk>
- y2=newHeight-y-1;
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- imgDest.SetPixelIndex(x, y, BlindGetPixelIndex(y2, x));
- }//for x
- }//for y
- }//if
- #if CXIMAGE_SUPPORT_ALPHA
- if (AlphaIsValid()){
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- y2=newHeight-y-1;
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- imgDest.AlphaSet(x,y,BlindAlphaGet(y2, x));
- }//for x
- }//for y
-@@ -488,9 +488,9 @@ bool CxImage::RotateRight(CxImage* iDst)
- imgDest.info.rSelectionBox.right = info.rSelectionBox.top;
- imgDest.info.rSelectionBox.bottom = newHeight-info.rSelectionBox.right;
- imgDest.info.rSelectionBox.top = newHeight-info.rSelectionBox.left;
-- for (y = ys; y < min(newHeight, ys+RBLOCK); y++){
-+ for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){
- y2=newHeight-y-1;
-- for (x = xs; x < min(newWidth, xs+RBLOCK); x++){
-+ for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){
- imgDest.SelectionSet(x,y,BlindSelectionGet(y2, x));
- }//for x
- }//for y
-@@ -608,10 +608,10 @@ bool CxImage::Rotate(float angle, CxImage* iDst)
- newP4.x = (float)(p4.x*cos_angle - p4.y*sin_angle);
- newP4.y = (float)(p4.x*sin_angle + p4.y*cos_angle);
-
-- leftTop.x = min(min(newP1.x,newP2.x),min(newP3.x,newP4.x));
-- leftTop.y = min(min(newP1.y,newP2.y),min(newP3.y,newP4.y));
-- rightBottom.x = max(max(newP1.x,newP2.x),max(newP3.x,newP4.x));
-- rightBottom.y = max(max(newP1.y,newP2.y),max(newP3.y,newP4.y));
-+ leftTop.x = cxmin(cxmin(newP1.x,newP2.x),cxmin(newP3.x,newP4.x));
-+ leftTop.y = cxmin(cxmin(newP1.y,newP2.y),cxmin(newP3.y,newP4.y));
-+ rightBottom.x = cxmax(cxmax(newP1.x,newP2.x),cxmax(newP3.x,newP4.x));
-+ rightBottom.y = cxmax(cxmax(newP1.y,newP2.y),cxmax(newP3.y,newP4.y));
- leftBottom.x = leftTop.x;
- leftBottom.y = rightBottom.y;
- rightTop.x = rightBottom.x;
-@@ -740,10 +740,10 @@ bool CxImage::Rotate2(float angle,
- }//if
-
- //(read new dimensions from location of corners)
-- float minx = (float) min(min(newp[0].x,newp[1].x),min(newp[2].x,newp[3].x));
-- float miny = (float) min(min(newp[0].y,newp[1].y),min(newp[2].y,newp[3].y));
-- float maxx = (float) max(max(newp[0].x,newp[1].x),max(newp[2].x,newp[3].x));
-- float maxy = (float) max(max(newp[0].y,newp[1].y),max(newp[2].y,newp[3].y));
-+ float minx = (float) cxmin(cxmin(newp[0].x,newp[1].x),cxmin(newp[2].x,newp[3].x));
-+ float miny = (float) cxmin(cxmin(newp[0].y,newp[1].y),cxmin(newp[2].y,newp[3].y));
-+ float maxx = (float) cxmax(cxmax(newp[0].x,newp[1].x),cxmax(newp[2].x,newp[3].x));
-+ float maxy = (float) cxmax(cxmax(newp[0].y,newp[1].y),cxmax(newp[2].y,newp[3].y));
- int newWidth = (int) floor(maxx-minx+0.5f);
- int newHeight= (int) floor(maxy-miny+0.5f);
- float ssx=((maxx+minx)- ((float) newWidth-1))/2.0f; //start for x
-@@ -1003,12 +1003,12 @@ bool CxImage::Resample(long newx, long newy, int mode, CxImage* iDst)
- if (info.nEscape) break;
- fY = y * yScale;
- ifY = (int)fY;
-- ifY1 = min(ymax, ifY+1);
-+ ifY1 = cxmin(ymax, ifY+1);
- dy = fY - ifY;
- for(long x=0; x<newx; x++){
- fX = x * xScale;
- ifX = (int)fX;
-- ifX1 = min(xmax, ifX+1);
-+ ifX1 = cxmin(xmax, ifX+1);
- dx = fX - ifX;
- // Interpolate using the four nearest pixels in the source
- if (head.biClrUsed){
-@@ -1328,9 +1328,9 @@ bool CxImage::DecreaseBpp(DWORD nbit, bool errordiffusion, RGBQUAD* ppal, DWORD
- eb=(long)c.rgbBlue - (long)ce.rgbBlue;
-
- c = GetPixelColor(x+1,y);
-- c.rgbRed = (BYTE)min(255L,max(0L,(long)c.rgbRed + ((er*7)/16)));
-- c.rgbGreen = (BYTE)min(255L,max(0L,(long)c.rgbGreen + ((eg*7)/16)));
-- c.rgbBlue = (BYTE)min(255L,max(0L,(long)c.rgbBlue + ((eb*7)/16)));
-+ c.rgbRed = (BYTE)cxmin(255L,cxmax(0L,(long)c.rgbRed + ((er*7)/16)));
-+ c.rgbGreen = (BYTE)cxmin(255L,cxmax(0L,(long)c.rgbGreen + ((eg*7)/16)));
-+ c.rgbBlue = (BYTE)cxmin(255L,cxmax(0L,(long)c.rgbBlue + ((eb*7)/16)));
- SetPixelColor(x+1,y,c);
- int coeff=1;
- for(int i=-1; i<2; i++){
-@@ -1343,9 +1343,9 @@ bool CxImage::DecreaseBpp(DWORD nbit, bool errordiffusion, RGBQUAD* ppal, DWORD
- coeff=1; break;
- }
- c = GetPixelColor(x+i,y+1);
-- c.rgbRed = (BYTE)min(255L,max(0L,(long)c.rgbRed + ((er * coeff)/16)));
-- c.rgbGreen = (BYTE)min(255L,max(0L,(long)c.rgbGreen + ((eg * coeff)/16)));
-- c.rgbBlue = (BYTE)min(255L,max(0L,(long)c.rgbBlue + ((eb * coeff)/16)));
-+ c.rgbRed = (BYTE)cxmin(255L,cxmax(0L,(long)c.rgbRed + ((er * coeff)/16)));
-+ c.rgbGreen = (BYTE)cxmin(255L,cxmax(0L,(long)c.rgbGreen + ((eg * coeff)/16)));
-+ c.rgbBlue = (BYTE)cxmin(255L,cxmax(0L,(long)c.rgbBlue + ((eb * coeff)/16)));
- SetPixelColor(x+i,y+1,c);
- }
- }
-@@ -1566,10 +1566,10 @@ bool CxImage::Dither(long method)
- }
-
- nlevel = GetPixelIndex(x + 1, y) + (error * 8) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 1, y, level);
- nlevel = GetPixelIndex(x + 2, y) + (error * 4) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 2, y, level);
- int i;
- for (i = -2; i < 3; i++) {
-@@ -1591,7 +1591,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 1) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 1, level);
- }
- }
-@@ -1620,10 +1620,10 @@ bool CxImage::Dither(long method)
- }
-
- nlevel = GetPixelIndex(x + 1, y) + (error * 8) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 1, y, level);
- nlevel = GetPixelIndex(x + 2, y) + (error * 4) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 2, y, level);
- int i;
- for (i = -2; i < 3; i++) {
-@@ -1645,7 +1645,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 1) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 1, level);
- }
- for (i = -2; i < 3; i++) {
-@@ -1667,7 +1667,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 2) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 2, level);
- }
- }
-@@ -1696,10 +1696,10 @@ bool CxImage::Dither(long method)
- }
-
- nlevel = GetPixelIndex(x + 1, y) + (error * 7) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 1, y, level);
- nlevel = GetPixelIndex(x + 2, y) + (error * 5) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 2, y, level);
- int i;
- for (i = -2; i < 3; i++) {
-@@ -1721,7 +1721,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 1) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 1, level);
- }
- for (i = -2; i < 3; i++) {
-@@ -1743,7 +1743,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 2) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 2, level);
- }
- }
-@@ -1772,10 +1772,10 @@ bool CxImage::Dither(long method)
- }
-
- nlevel = GetPixelIndex(x + 1, y) + (error * 5) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 1, y, level);
- nlevel = GetPixelIndex(x + 2, y) + (error * 3) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + 2, y, level);
- int i;
- for (i = -2; i < 3; i++) {
-@@ -1797,7 +1797,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 1) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 1, level);
- }
- for (i = -1; i < 2; i++) {
-@@ -1813,7 +1813,7 @@ bool CxImage::Dither(long method)
- break;
- }
- nlevel = GetPixelIndex(x + i, y + 2) + (error * coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(x + i, y + 2, level);
- }
- }
-@@ -1845,76 +1845,76 @@ bool CxImage::Dither(long method)
- int tmp_index_y = y;
- int tmp_coeff = 32;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x - 3;
- tmp_index_y = y + 1;
- tmp_coeff = 12;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x - 1;
- tmp_coeff = 26;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x + 1;
- tmp_coeff = 30;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x + 3;
- tmp_coeff = 16;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x - 2;
- tmp_index_y = y + 2;
- tmp_coeff = 12;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x;
- tmp_coeff = 26;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x + 2;
- tmp_coeff = 12;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x - 3;
- tmp_index_y = y + 3;
- tmp_coeff = 5;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x - 1;
- tmp_coeff = 12;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x + 1;
- tmp_coeff = 12;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
-
- tmp_index_x = x + 3;
- tmp_coeff = 5;
- nlevel = GetPixelIndex(tmp_index_x, tmp_index_y) + (error * tmp_coeff) / TotalCoeffSum;
-- level = (BYTE)min(255, max(0, (int)nlevel));
-+ level = (BYTE)cxmin(255, cxmax(0, (int)nlevel));
- SetPixelIndex(tmp_index_x, tmp_index_y, level);
- }
- }
-@@ -1941,7 +1941,7 @@ bool CxImage::Dither(long method)
- Bmatrix[i] = (BYTE)(dither);
- }
-
-- int scale = max(0,(8-2*order));
-+ int scale = cxmax(0,(8-2*order));
- int level;
- for (long y=0;y<head.biHeight;y++){
- info.nProgress = (long)(100*y/head.biHeight);
-@@ -1981,7 +1981,7 @@ bool CxImage::Dither(long method)
- }
-
- nlevel = GetPixelIndex(x+1,y) + (error * 7)/16;
-- level = (BYTE)min(255,max(0,(int)nlevel));
-+ level = (BYTE)cxmin(255,cxmax(0,(int)nlevel));
- SetPixelIndex(x+1,y,level);
- for(int i=-1; i<2; i++){
- switch(i){
-@@ -1993,7 +1993,7 @@ bool CxImage::Dither(long method)
- coeff=1; break;
- }
- nlevel = GetPixelIndex(x+i,y+1) + (error * coeff)/16;
-- level = (BYTE)min(255,max(0,(int)nlevel));
-+ level = (BYTE)cxmin(255,cxmax(0,(int)nlevel));
- SetPixelIndex(x+i,y+1,level);
- }
- }
-@@ -2031,7 +2031,7 @@ bool CxImage::CropRotatedRectangle( long topx, long topy, long width, long heigh
- if ( fabs(angle)<0.0002 )
- return Crop( topx, topy, topx+width, topy+height, iDst);
-
-- startx = min(topx, topx - (long)(sin_angle*(double)height));
-+ startx = cxmin(topx, topx - (long)(sin_angle*(double)height));
- endx = topx + (long)(cos_angle*(double)width);
- endy = topy + (long)(cos_angle*(double)height + sin_angle*(double)width);
- // check: corners of the rectangle must be inside
-@@ -2079,10 +2079,10 @@ bool CxImage::Crop(long left, long top, long right, long bottom, CxImage* iDst)
- {
- if (!pDib) return false;
-
-- long startx = max(0L,min(left,head.biWidth));
-- long endx = max(0L,min(right,head.biWidth));
-- long starty = head.biHeight - max(0L,min(top,head.biHeight));
-- long endy = head.biHeight - max(0L,min(bottom,head.biHeight));
-+ long startx = cxmax(0L,cxmin(left,head.biWidth));
-+ long endx = cxmax(0L,cxmin(right,head.biWidth));
-+ long starty = head.biHeight - cxmax(0L,cxmin(top,head.biHeight));
-+ long endy = head.biHeight - cxmax(0L,cxmin(bottom,head.biHeight));
-
- if (startx==endx || starty==endy) return false;
-
-@@ -2443,8 +2443,8 @@ bool CxImage::CircleTransform(int type,long rmax,float Koeff)
- nx=x+(x%32)-16;
- ny=y;
- }
--// nx=max(xmin,min(nx,xmax));
--// ny=max(ymin,min(ny,ymax));
-+// nx=cxmax(xmin,cxmin(nx,xmax));
-+// ny=cxmax(ymin,cxmin(ny,ymax));
- }
- else { nx=-1;ny=-1;}
- if (head.biClrUsed==0){
-diff --git a/lib/cximage-6.0/CxImage/ximawnd.cpp b/lib/cximage-6.0/CxImage/ximawnd.cpp
-index 2ae2f93..7029cc7 100644
---- a/lib/cximage-6.0/CxImage/ximawnd.cpp
-+++ b/lib/cximage-6.0/CxImage/ximawnd.cpp
-@@ -682,10 +682,10 @@ long CxImage::Draw(HDC hdc, long x, long y, long cx, long cy, RECT* pClipRect, b
- RECT clipbox,paintbox;
- GetClipBox(hdc,&clipbox);
-
-- paintbox.top = min(clipbox.bottom,max(clipbox.top,y));
-- paintbox.left = min(clipbox.right,max(clipbox.left,x));
-- paintbox.right = max(clipbox.left,min(clipbox.right,x+cx));
-- paintbox.bottom = max(clipbox.top,min(clipbox.bottom,y+cy));
-+ paintbox.top = cxmin(clipbox.bottom,cxmax(clipbox.top,y));
-+ paintbox.left = cxmin(clipbox.right,cxmax(clipbox.left,x));
-+ paintbox.right = cxmax(clipbox.left,cxmin(clipbox.right,x+cx));
-+ paintbox.bottom = cxmax(clipbox.top,cxmin(clipbox.bottom,y+cy));
-
- long destw = paintbox.right - paintbox.left;
- long desth = paintbox.bottom - paintbox.top;
-@@ -730,12 +730,12 @@ long CxImage::Draw(HDC hdc, long x, long y, long cx, long cy, RECT* pClipRect, b
-
- for(yy=0;yy<desth;yy++){
- dy = head.biHeight-(ymax-yy-y)*fy;
-- sy = max(0L,(long)floor(dy));
-+ sy = cxmax(0L,(long)floor(dy));
- psrc = info.pImage+sy*info.dwEffWidth;
- pdst = pbase+yy*ew;
- for(xx=0;xx<destw;xx++){
- dx = (xx+xmin-x)*fx;
-- sx = max(0L,(long)floor(dx));
-+ sx = cxmax(0L,(long)floor(dx));
- #if CXIMAGE_SUPPORT_INTERPOLATION
- if (bSmooth){
- if (fx > 1 && fy > 1) {
-@@ -813,7 +813,7 @@ long CxImage::Draw(HDC hdc, long x, long y, long cx, long cy, RECT* pClipRect, b
-
- for(yy=0;yy<desth;yy++){
- dy = head.biHeight-(ymax-yy-y)*fy;
-- sy = max(0L,(long)floor(dy));
-+ sy = cxmax(0L,(long)floor(dy));
-
- alphaoffset = sy*head.biWidth;
- pdst = pbase + yy*ew;
-@@ -821,7 +821,7 @@ long CxImage::Draw(HDC hdc, long x, long y, long cx, long cy, RECT* pClipRect, b
-
- for(xx=0;xx<destw;xx++){
- dx = (xx+xmin-x)*fx;
-- sx = max(0L,(long)floor(dx));
-+ sx = cxmax(0L,(long)floor(dx));
-
- if (bAlpha) a=pAlpha[alphaoffset+sx]; else a=255;
- a =(BYTE)((a*(1+info.nAlphaMax))>>8);
diff --git a/libre/kodi/PKGBUILD b/libre/kodi/PKGBUILD
index 2ebd5e1ef..6d648c015 100644
--- a/libre/kodi/PKGBUILD
+++ b/libre/kodi/PKGBUILD
@@ -1,22 +1,31 @@
# vim:set ts=2 sw=2 et:
-# $Id: PKGBUILD 208358 2017-01-22 04:02:16Z bgyorgy $
+# $Id: PKGBUILD 210358 2017-02-06 09:15:14Z idevolder $
# Maintainer (Arch): Sergej Pupykin <pupykin.s+arch@gmail.com>
# Maintainer (Arch): BlackIkeEagle < ike DOT devolder AT gmail DOT com >
+# Contributor (Arch): graysky <graysky AT archlinux DOT us>
+# Contributor (Arch): DonVla <donvla@users.sourceforge.net>
+# Contributor (Arch): Ulf Winkelvos <ulf [at] winkelvos [dot] de>
+# Contributor (Arch): Ralf Barth <archlinux dot org at haggy dot org>
+# Contributor (Arch): B & monty - Thanks for your hints :)
+# Contributor (Arch): marzoul
+# Contributor (Arch): Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor (Arch): Brad Fanella <bradfanella@archlinux.us>
# Contributor (Arch): [vEX] <niechift.dot.vex.at.gmail.dot.com>
# Contributor (Arch): Zeqadious <zeqadious.at.gmail.dot.com>
-# Contributor (Arch): BlackIkeEagle < ike DOT devolder AT gmail DOT com >
# Contributor (Arch): Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor (Arch): Maxime Gauduin <alucryd@gmail.com>
# Maintainer: André Silva <emulatorman@parabola.nu>
# Contributor: Isaac David <isacdaavid () isacdaavid!info>
+#
+# Original credits go to Edgar Hucek <gimli at dark-green dot com>
+# for his xbmc-vdpau-vdr PKGBUILD at https://archvdr.svn.sourceforge.net/svnroot/archvdr/trunk/archvdr/xbmc-vdpau-vdr/PKGBUILD
_pkgbase=kodi-libre
pkgbase=kodi
pkgname=kodi
-pkgver=16.1
-_codename=Jarvis
-pkgrel=6.parabola1
+pkgver=17.0
+_codename=Krypton
+pkgrel=1.parabola1
arch=('i686' 'x86_64' 'armv7h')
url="http://kodi.tv"
license=('GPL2')
@@ -26,31 +35,25 @@ license=('GPL2')
makedepends_i686=('libvdpau')
makedepends_x86_64=('libvdpau')
makedepends=(
- 'afpfs-ng' 'bluez-libs' 'boost' 'cmake' 'curl' 'cwiid' 'doxygen' 'git' 'glew'
+ 'afpfs-ng' 'bluez-libs' 'boost' 'cmake' 'curl' 'cwiid' 'doxygen' 'glew'
'gperf' 'hicolor-icon-theme' 'jasper' 'java-runtime' 'libaacs' 'libass'
'libbluray' 'libcdio' 'libcec' 'libgl' 'libmariadbclient' 'libmicrohttpd'
'libmodplug' 'libmpeg2' 'libnfs' 'libplist' 'libpulse' 'libssh' 'libva'
- 'libxrandr' 'libxslt' 'lzo' 'mesa' 'nasm' 'nss-mdns'
- 'python2-pillow' 'python2-pybluez' 'python2-simplejson' 'rtmpdump' 'sdl2'
- 'sdl_image' 'shairplay' 'smbclient' 'swig' 'taglib' 'tinyxml' 'unzip' 'upower'
- 'yajl' 'zip' 'mesa' 'dcadec' 'libcrossguid'
+ 'libxrandr' 'libxslt' 'lzo' 'nasm' 'nss-mdns' 'python2-pillow'
+ 'python2-pybluez' 'python2-simplejson' 'rtmpdump'
+ 'shairplay' 'smbclient' 'swig' 'taglib' 'tinyxml' 'unzip' 'upower' 'yajl' 'zip'
+ 'mesa' 'libcrossguid'
)
mksource=(
"$pkgname-$pkgver-$_codename.tar.gz::https://github.com/xbmc/xbmc/archive/$pkgver-$_codename.tar.gz"
)
source=(
"https://repo.parabola.nu/other/$_pkgbase/$_pkgbase-$pkgver-$_codename.tar.gz"
- '9703.patch'
- '10160.patch'
- '10775.patch'
'libre.patch'
)
-mksha256sums=('7d82c8aff2715c83deecdf10c566e26105bec0473af530a1356d4c747ebdfd10')
-sha256sums=('68a6713567a6f65add13c6295d54709457e4c31e70d70cfc9c81ad64300405eb'
- 'b0fe75d10b2678894d1dec48f3258c0bec2a4a170f33d76a9a8334bb1969b18f'
- '870037ddedc09f161db16df8550e1b0eaaa67a8bdfe47e7151bc9ee25c9bfead'
- '75529f0f42e9f84d2b55c86ba48d89f5e1286d84365f3ba6676c5b41fba6a314'
- '3c9b4e647a1eea8d910e7ddc4df3125de05a4c0468c3350fe4e44208158d8822')
+mksha512sums=('ca0d812bcbcc58b74542872365244c5b937803c5618d2277e85a8cb805820ddb22886233d1417fa0e7532c9909749e632e276f8da51d86e1f5f060b2d1ad6a12')
+sha512sums=('9c0b62cecba402ec08abf13b630c246f5c30c0f88913aacbfee0e892a6921eb5eec6e138a6e71dec4af903b46ddfbced3e2f5d2ba303c509e3d5b9a9c4186fae'
+ '46c712104621d3432ffa07785e7c885394b04e21ddc5cc526520810787e8879878c8e59bb6e6e4c39ddb1097e020864a2d573d0bccce30d546a0c39490299896')
mksource() {
cd "$srcdir/xbmc-$pkgver-$_codename"
@@ -60,95 +63,83 @@ mksource() {
}
prepare() {
- cd "$srcdir/xbmc-$pkgver-$_codename"
-
- # patches
- patch -p1 -i "$srcdir/9703.patch"
- patch -p1 -i "$srcdir/10160.patch"
- patch -p1 -i "$srcdir/10775.patch"
-
- find -type f -name *.py -exec sed 's|^#!.*python$|#!/usr/bin/python2|' -i "{}" +
- sed 's|^#!.*python$|#!/usr/bin/python2|' -i tools/depends/native/rpl-native/rpl
- sed 's/python/python2/' -i tools/Linux/kodi.sh.in
- sed 's/shell python/shell python2/' -i tools/EventClients/Makefile.in
+ [[ -d kodi-build ]] && rm -rf kodi-build
+ mkdir kodi-build
+ cd "$srcdir/xbmc-$pkgver-$_codename"
# patches
msg2 "Use addons.xml from Parabola server (without nonfree addons support) and remove nonfree stuff references"
- rm -v xbmc/filesystem/Rar{Directory,File,Manager}.{cpp,h}
+ rm -v xbmc/filesystem/{Rar{Directory,File,Manager}.{cpp,h},test/TestRarFile.cpp}
patch -Np1 -i ../libre.patch
}
build() {
- cd "$srcdir/xbmc-$pkgver-$_codename"
-
- # Bootstrapping
- MAKEFLAGS=-j1 ./bootstrap
-
- #./configure --help
- #return 1
-
- # Configuring XBMC
- export PYTHON_VERSION=2 # external python v2
- [ "$CARCH" = "armv7h" ] && local configure_extra="--disable-vaapi"
- ./configure --prefix=/usr --exec-prefix=/usr \
- --disable-debug \
- --enable-optimizations \
- --enable-libbluray \
- --enable-shared-libraries \
- --with-lirc-device=/run/lirc/lircd \
- --disable-non-free \
- $configure_extra \
- ac_cv_type__Bool=yes
-
- # Now (finally) build
+ cd kodi-build
+ local configure_options=(
+ -DCMAKE_INSTALL_PREFIX=/usr
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib
+ -DENABLE_EVENTCLIENTS=ON
+ -DLIRC_DEVICE=/run/lirc/lircd
+ )
+ if [ "$CARCH" = "armv7h" ]; then
+ configure_options+=(-DENABLE_VAAPI=OFF)
+ fi
+ cmake "${configure_options[@]}" ../"xbmc-$pkgver-$_codename"/project/cmake
make
+ make preinstall
}
+# kodi
+# components: kodi, kodi-bin
+
package_kodi() {
pkgdesc="A software media player and entertainment hub for digital media, without nonfree decompression engine for RAR archives and support for nonfree addons"
-
- # depends expected for kodi plugins:
- # 'python2-pillow' 'python2-pybluez' 'python2-simplejson'
- # depends expeced in FEH.py
- # 'mesa-demos' 'xorg-xdpyinfo'
depends=(
- 'python2-pillow' 'python2-pybluez' 'python2-simplejson'
- 'mesa-demos' 'xorg-xdpyinfo'
- 'bluez-libs' 'fribidi' 'glew' 'hicolor-icon-theme' 'libass' 'libcdio'
+ 'python2-pillow' 'python2-pybluez' 'python2-simplejson' 'xorg-xdpyinfo'
+ 'bluez-libs' 'fribidi' 'freetype2' 'glew' 'hicolor-icon-theme' 'libcdio'
'libjpeg-turbo' 'libmariadbclient' 'libmicrohttpd' 'libpulse' 'libssh'
- 'libva' 'libxrandr' 'libxslt' 'lzo' 'sdl2' 'smbclient' 'taglib' 'tinyxml'
- 'yajl' 'mesa' 'dcadec' 'desktop-file-utils'
+ 'libva' 'libvdpau' 'libxrandr' 'libxslt' 'lzo' 'smbclient' 'taglib' 'tinyxml'
+ 'yajl' 'mesa' 'desktop-file-utils'
)
optdepends=(
'afpfs-ng: Apple shares support'
'bluez: Blutooth support'
+ 'python2-pybluez: Bluetooth support'
'libnfs: NFS shares support'
'libplist: AirPlay support'
'libcec: Pulse-Eight USB-CEC adapter support'
'lirc: Remote controller support'
+ 'lsb-release: log distro information in crashlog'
'pulseaudio: PulseAudio support'
'shairplay: AirPlay support'
'unzip: Archives support'
'upower: Display battery level'
- 'lsb-release: log distro information in crashlog'
)
provides=('xbmc' 'xbmc-lts')
conflicts=('xbmc' 'xbmc-lts')
replaces=('xbmc' 'xbmc-lts')
- cd "$srcdir/xbmc-$pkgver-$_codename"
- # Running make install
- make DESTDIR="$pkgdir" install
+ _components=(
+ 'kodi'
+ 'kodi-bin'
+ )
- # We will no longer support the xbmc name
- rm "$pkgdir/usr/share/xsessions/xbmc.desktop"
- rm "$pkgdir/usr/bin/"xbmc{,-standalone}
- # we will leave /usr/{include,lib,share}/xbmc for now
+ cd kodi-build
+ # install eventclients
+ for _cmp in ${_components[@]}; do
+ DESTDIR="$pkgdir" /usr/bin/cmake \
+ -DCMAKE_INSTALL_COMPONENT="$_cmp" \
+ -P cmake_install.cmake
+ done
# Licenses
- install -dm755 ${pkgdir}/usr/share/licenses/${pkgname}
+ install -dm755 "$pkgdir/usr/share/licenses/$pkgname"
for licensef in LICENSE.GPL copying.txt; do
- mv ${pkgdir}/usr/share/doc/kodi/${licensef} \
- ${pkgdir}/usr/share/licenses/${pkgname}
+ mv "$pkgdir/usr/share/doc/kodi/$licensef" \
+ "$pkgdir/usr/share/licenses/$pkgname"
done
+
+ # python2 is being used
+ cd "$pkgdir"
+ grep -lR '#!.*python' * | while read file; do sed -s 's/\(#!.*python\)/\12/g' -i "$file"; done
}
diff --git a/libre/kodi/libre.patch b/libre/kodi/libre.patch
index 693162e20..0487e5d88 100644
--- a/libre/kodi/libre.patch
+++ b/libre/kodi/libre.patch
@@ -1,31 +1,427 @@
-diff -Nur xbmc-16.0-Jarvis.orig/addons/repository.xbmc.org/addon.xml xbmc-16.0-Jarvis/addons/repository.xbmc.org/addon.xml
---- xbmc-16.0-Jarvis.orig/addons/repository.xbmc.org/addon.xml 2016-02-20 12:21:19.000000000 -0300
-+++ xbmc-16.0-Jarvis/addons/repository.xbmc.org/addon.xml 2016-02-24 13:21:20.431114069 -0300
-@@ -9,9 +9,9 @@
- <extension point="xbmc.addon.repository"
- name="Official XBMC.org Add-on Repository">
- <dir minversion="15.9.0">
-- <info>http://mirrors.kodi.tv/addons/jarvis/addons.xml.gz</info>
-- <checksum>http://mirrors.kodi.tv/addons/jarvis/addons.xml.gz.md5</checksum>
-- <datadir zip="true">http://mirrors.kodi.tv/addons/jarvis</datadir>
-+ <info>http://repo.parabola.nu/other/kodi-libre/addons/jarvis/addons.xml.gz</info>
-+ <checksum>http://repo.parabola.nu/other/kodi-libre/addons/jarvis/addons.xml.gz.md5</checksum>
-+ <datadir zip="true">http://repo.parabola.nu/other/kodi-libre/addons/jarvis</datadir>
- <hashes>true</hashes>
- </dir>
+diff --git a/Kodi.xcodeproj/project.pbxproj b/Kodi.xcodeproj/project.pbxproj
+index 7ce0ad368..fbdfcf195 100644
+--- a/Kodi.xcodeproj/project.pbxproj
++++ b/Kodi.xcodeproj/project.pbxproj
+@@ -969,7 +969,6 @@
+ DF93D6A51444A8B1007C6459 /* MusicDatabaseFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF93D67B1444A8B0007C6459 /* MusicDatabaseFile.cpp */; };
+ DF93D6A61444A8B1007C6459 /* NFSFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF93D67D1444A8B0007C6459 /* NFSFile.cpp */; };
+ DF93D6A71444A8B1007C6459 /* PipeFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF93D67F1444A8B0007C6459 /* PipeFile.cpp */; };
+- DF93D6A81444A8B1007C6459 /* RarFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF93D6811444A8B0007C6459 /* RarFile.cpp */; };
+ DF93D6AA1444A8B1007C6459 /* SFTPFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF93D6851444A8B0007C6459 /* SFTPFile.cpp */; };
+ DF93D6AB1444A8B1007C6459 /* ShoutcastFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF93D6871444A8B0007C6459 /* ShoutcastFile.cpp */; };
+ DF93D6AD1444A8B1007C6459 /* SMBFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF93D68B1444A8B0007C6459 /* SMBFile.cpp */; };
+@@ -1221,8 +1220,6 @@
+ E38E204F0D25F9FD00618676 /* PlaylistDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E17400D25F9FA00618676 /* PlaylistDirectory.cpp */; };
+ E38E20500D25F9FD00618676 /* PlaylistFileDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E17420D25F9FA00618676 /* PlaylistFileDirectory.cpp */; };
+ E38E20510D25F9FD00618676 /* PluginDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E17440D25F9FA00618676 /* PluginDirectory.cpp */; };
+- E38E20520D25F9FD00618676 /* RarDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E17460D25F9FA00618676 /* RarDirectory.cpp */; };
+- E38E20530D25F9FD00618676 /* RarManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E17480D25F9FA00618676 /* RarManager.cpp */; };
+ E38E20580D25F9FD00618676 /* SmartPlaylistDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E17530D25F9FA00618676 /* SmartPlaylistDirectory.cpp */; };
+ E38E205B0D25F9FD00618676 /* StackDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E17590D25F9FA00618676 /* StackDirectory.cpp */; };
+ E38E205C0D25F9FD00618676 /* UPnPDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E175B0D25F9FA00618676 /* UPnPDirectory.cpp */; settings = {COMPILER_FLAGS = "-I$SRCROOT/lib/libUPnP -I$SRCROOT/lib/libUPnP/Neptune/Source/Core -I$SRCROOT/lib/libUPnP/Platinum/Source/Core -I$SRCROOT/lib/libUPnP/Platinum/Source/Platinum -I$SRCROOT/lib/libUPnP/Platinum/Source/Extras -I$SRCROOT/lib/libUPnP/Platinum/Source/Devices/MediaServer -I$SRCROOT/lib/libUPnP/Platinum/Source/Devices/MediaConnect -I$SRCROOT/lib/libUPnP/Platinum/Source/Devices/MediaRenderer"; }; };
+@@ -1687,9 +1684,6 @@
+ E49912A0174E5D9900741B6D /* PlaylistFileDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E17420D25F9FA00618676 /* PlaylistFileDirectory.cpp */; };
+ E49912A1174E5D9900741B6D /* PluginDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E17440D25F9FA00618676 /* PluginDirectory.cpp */; };
+ E49912A2174E5D9900741B6D /* PVRDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C8482905156CFF24005A996F /* PVRDirectory.cpp */; };
+- E49912A4174E5D9900741B6D /* RarDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E17460D25F9FA00618676 /* RarDirectory.cpp */; };
+- E49912A5174E5D9900741B6D /* RarFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF93D6811444A8B0007C6459 /* RarFile.cpp */; };
+- E49912A6174E5D9900741B6D /* RarManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38E17480D25F9FA00618676 /* RarManager.cpp */; };
+ E49912A7174E5D9900741B6D /* RSSDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 889B4D8C0E0EF86C00FAD25E /* RSSDirectory.cpp */; };
+ E49912AC174E5D9900741B6D /* SFTPDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5A7B37C113AFB900059D6AA /* SFTPDirectory.cpp */; };
+ E49912AD174E5D9900741B6D /* SFTPFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF93D6851444A8B0007C6459 /* SFTPFile.cpp */; };
+@@ -3914,8 +3908,6 @@
+ DF93D67E1444A8B0007C6459 /* NFSFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NFSFile.h; sourceTree = "<group>"; };
+ DF93D67F1444A8B0007C6459 /* PipeFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PipeFile.cpp; sourceTree = "<group>"; };
+ DF93D6801444A8B0007C6459 /* PipeFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PipeFile.h; sourceTree = "<group>"; };
+- DF93D6811444A8B0007C6459 /* RarFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RarFile.cpp; sourceTree = "<group>"; };
+- DF93D6821444A8B0007C6459 /* RarFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RarFile.h; sourceTree = "<group>"; };
+ DF93D6851444A8B0007C6459 /* SFTPFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SFTPFile.cpp; sourceTree = "<group>"; };
+ DF93D6861444A8B0007C6459 /* SFTPFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SFTPFile.h; sourceTree = "<group>"; };
+ DF93D6871444A8B0007C6459 /* ShoutcastFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShoutcastFile.cpp; sourceTree = "<group>"; };
+@@ -4356,10 +4348,6 @@
+ E38E17430D25F9FA00618676 /* PlaylistFileDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlaylistFileDirectory.h; sourceTree = "<group>"; };
+ E38E17440D25F9FA00618676 /* PluginDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginDirectory.cpp; sourceTree = "<group>"; };
+ E38E17450D25F9FA00618676 /* PluginDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginDirectory.h; sourceTree = "<group>"; };
+- E38E17460D25F9FA00618676 /* RarDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RarDirectory.cpp; sourceTree = "<group>"; };
+- E38E17470D25F9FA00618676 /* RarDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RarDirectory.h; sourceTree = "<group>"; };
+- E38E17480D25F9FA00618676 /* RarManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RarManager.cpp; sourceTree = "<group>"; };
+- E38E17490D25F9FA00618676 /* RarManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RarManager.h; sourceTree = "<group>"; };
+ E38E17530D25F9FA00618676 /* SmartPlaylistDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SmartPlaylistDirectory.cpp; sourceTree = "<group>"; };
+ E38E17540D25F9FA00618676 /* SmartPlaylistDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SmartPlaylistDirectory.h; sourceTree = "<group>"; };
+ E38E17560D25F9FA00618676 /* SMBDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMBDirectory.h; sourceTree = "<group>"; };
+@@ -8445,12 +8433,6 @@
+ E38E17450D25F9FA00618676 /* PluginDirectory.h */,
+ C8482905156CFF24005A996F /* PVRDirectory.cpp */,
+ C8482906156CFF24005A996F /* PVRDirectory.h */,
+- E38E17460D25F9FA00618676 /* RarDirectory.cpp */,
+- E38E17470D25F9FA00618676 /* RarDirectory.h */,
+- DF93D6811444A8B0007C6459 /* RarFile.cpp */,
+- DF93D6821444A8B0007C6459 /* RarFile.h */,
+- E38E17480D25F9FA00618676 /* RarManager.cpp */,
+- E38E17490D25F9FA00618676 /* RarManager.h */,
+ 395C2A0D1A9F072400EBC7AD /* ResourceDirectory.cpp */,
+ 395C2A0E1A9F072400EBC7AD /* ResourceDirectory.h */,
+ 395C2A0F1A9F072400EBC7AD /* ResourceFile.cpp */,
+@@ -9920,8 +9902,6 @@
+ 68AE5C1B1C92438E00C4D527 /* GUIControllerButton.cpp in Sources */,
+ E38E20510D25F9FD00618676 /* PluginDirectory.cpp in Sources */,
+ 7CF3194B1BD2C65500A44A41 /* MusicInfoTagLoaderFFmpeg.cpp in Sources */,
+- E38E20520D25F9FD00618676 /* RarDirectory.cpp in Sources */,
+- E38E20530D25F9FD00618676 /* RarManager.cpp in Sources */,
+ DF54F7FE1B6580AD000FCBA4 /* ContextMenuItem.cpp in Sources */,
+ 395C29C51A98A0E100EBC7AD /* ILanguageInvoker.cpp in Sources */,
+ E38E20580D25F9FD00618676 /* SmartPlaylistDirectory.cpp in Sources */,
+@@ -10497,7 +10477,6 @@
+ DF93D6A61444A8B1007C6459 /* NFSFile.cpp in Sources */,
+ DF93D6A71444A8B1007C6459 /* PipeFile.cpp in Sources */,
+ EDED2E8B1C878E62000F5E80 /* AddonCallbacksGUI.cpp in Sources */,
+- DF93D6A81444A8B1007C6459 /* RarFile.cpp in Sources */,
+ DF93D6AA1444A8B1007C6459 /* SFTPFile.cpp in Sources */,
+ DF93D6AB1444A8B1007C6459 /* ShoutcastFile.cpp in Sources */,
+ DF93D6AD1444A8B1007C6459 /* SMBFile.cpp in Sources */,
+@@ -11235,9 +11214,6 @@
+ E49912A1174E5D9900741B6D /* PluginDirectory.cpp in Sources */,
+ E49912A2174E5D9900741B6D /* PVRDirectory.cpp in Sources */,
+ 395C29DC1A98A11C00EBC7AD /* WsgiResponse.cpp in Sources */,
+- E49912A4174E5D9900741B6D /* RarDirectory.cpp in Sources */,
+- E49912A5174E5D9900741B6D /* RarFile.cpp in Sources */,
+- E49912A6174E5D9900741B6D /* RarManager.cpp in Sources */,
+ E49912A7174E5D9900741B6D /* RSSDirectory.cpp in Sources */,
+ 7C8E02231BA35D0B0072E8B2 /* Builtins.cpp in Sources */,
+ E49912AC174E5D9900741B6D /* SFTPDirectory.cpp in Sources */,
+diff --git a/Makefile.in b/Makefile.in
+index 0d70e9b12..a434052e0 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -193,10 +193,6 @@ ifeq ($(findstring freebsd,@ARCH@),freebsd)
+ DIRECTORY_ARCHIVES += xbmc/freebsd/freebsd.a
+ endif
+
+-ifeq (@HAVE_XBMC_NONFREE@,1)
+-DIRECTORY_ARCHIVES += lib/UnrarXLib/UnrarXLib.a
+-endif
+-
+ ifeq (@USE_ANDROID@,1)
+ DIRECTORY_ARCHIVES += xbmc/platform/android/loader/AndroidDyload.a
+ DIRECTORY_ARCHIVES += xbmc/windowing/android/windowing_android.a
+diff --git a/addons/repository.xbmc.org/addon.xml b/addons/repository.xbmc.org/addon.xml
+index 54e1a20b1..511606b00 100644
+--- a/addons/repository.xbmc.org/addon.xml
++++ b/addons/repository.xbmc.org/addon.xml
+@@ -7,9 +7,9 @@
+ <import addon="xbmc.addon" version="12.0.0"/>
+ </requires>
+ <extension point="xbmc.addon.repository">
+- <info>http://mirrors.kodi.tv/addons/krypton/addons.xml.gz</info>
+- <checksum>http://mirrors.kodi.tv/addons/krypton/addons.xml.gz.md5</checksum>
+- <datadir>http://mirrors.kodi.tv/addons/krypton</datadir>
++ <info>http://repo.parabola.nu/other/kodi-libre/addons/krypton/addons.xml.gz</info>
++ <checksum>http://repo.parabola.nu/other/kodi-libre/addons/krypton/addons.xml.gz.md5</checksum>
++ <datadir>http://repo.parabola.nu/other/kodi-libre/addons/krypton</datadir>
+ <hashes>true</hashes>
</extension>
-diff -Nur xbmc-16.0-Jarvis.orig/xbmc/interfaces/builtins/ApplicationBuiltins.cpp xbmc-16.0-Jarvis/xbmc/interfaces/builtins/ApplicationBuiltins.cpp
---- xbmc-16.0-Jarvis.orig/xbmc/interfaces/builtins/ApplicationBuiltins.cpp 2016-02-20 12:21:19.000000000 -0300
-+++ xbmc-16.0-Jarvis/xbmc/interfaces/builtins/ApplicationBuiltins.cpp 2016-02-24 14:51:55.133088253 -0300
-@@ -21,7 +21,6 @@
+ <extension point="xbmc.addon.metadata">
+diff --git a/configure.ac b/configure.ac
+index 060939073..63cea4cc9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -370,12 +370,6 @@ AC_ARG_ENABLE([avahi],
+ [use_mdnsembedded=$enableval],
+ [use_mdnsembedded=auto])
+
+-AC_ARG_ENABLE([non-free],
+- [AS_HELP_STRING([--disable-non-free],
+- [disable components with non-compliant licenses])],
+- [use_nonfree=$enableval],
+- [use_nonfree=yes])
+-
+ AC_ARG_ENABLE([mysql],
+ [AS_HELP_STRING([--disable-mysql],
+ [disable mysql])],
+@@ -2015,15 +2009,6 @@ else
+ final_message="$final_message\n mDNSEmbedded:\tNo"
+ fi
+
+-if test "$use_nonfree" = "yes"; then
+- final_message="$final_message\n Non-free:\tYes"
+- HAVE_XBMC_NONFREE=1
+- AC_DEFINE([HAVE_XBMC_NONFREE], [1], [Define to 1 to enable non-free components.])
+-else
+- HAVE_XBMC_NONFREE=0
+- final_message="$final_message\n Non-free:\tNo"
+-fi
+-
+ if test "$use_mysql" = "yes"; then
+ final_message="$final_message\n MySQL:\tYes"
+ USE_MYSQL=1
+@@ -2292,7 +2277,6 @@ AC_SUBST(GNUTLS_ALL_LIBS)
+ AC_SUBST(USE_LIBAV_HACKS)
+ AC_SUBST(PYTHON_VERSION)
+ AC_SUBST(OUTPUT_FILES)
+-AC_SUBST(HAVE_XBMC_NONFREE)
+ AC_SUBST(LIBCURL_BASENAME)
+ AC_SUBST(LIBASS_BASENAME)
+ AC_SUBST(LIBMEPG2_BASENAME)
+diff --git a/project/cmake/CMakeLists.txt b/project/cmake/CMakeLists.txt
+index 504e4c046..861d5e9ab 100644
+--- a/project/cmake/CMakeLists.txt
++++ b/project/cmake/CMakeLists.txt
+@@ -41,7 +41,6 @@ set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp")
+ option(VERBOSE "Enable verbose output?" OFF)
+ option(ENABLE_DVDCSS "Enable libdvdcss support?" ON)
+ option(ENABLE_UPNP "Enable UPnP support?" ON)
+-option(ENABLE_NONFREE "Enable non-free components?" ON)
+ option(ENABLE_AIRTUNES "Enable AirTunes support?" ON)
+ option(ENABLE_OPTICAL "Enable optical support?" ON)
+ # use ffmpeg from depends or system
+@@ -165,10 +164,6 @@ if(ENABLE_UPNP)
+ list(APPEND DEP_DEFINES "-DUSE_UPNP=1")
+ endif()
+
+-if(ENABLE_NONFREE)
+- list(APPEND DEP_DEFINES "-DHAVE_XBMC_NONFREE=1")
+-endif()
+-
+ if(ENABLE_OPTICAL)
+ list(APPEND DEP_DEFINES -DHAS_DVD_DRIVE)
+ endif()
+diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
+index c6ef0c0e0..4b253fbde 100644
+--- a/xbmc/Application.cpp
++++ b/xbmc/Application.cpp
+@@ -78,9 +78,6 @@
+ #include "GUILargeTextureManager.h"
+ #include "TextureCache.h"
+ #include "playlists/SmartPlayList.h"
+-#ifdef HAS_FILESYSTEM_RAR
+-#include "filesystem/RarManager.h"
+-#endif
+ #include "playlists/PlayList.h"
+ #include "profiles/ProfilesManager.h"
+ #include "windowing/WindowingFactory.h"
+@@ -2941,9 +2938,6 @@ void CApplication::Stop(int exitCode)
+ #endif
+
+ CLog::Log(LOGNOTICE, "clean cached files!");
+-#ifdef HAS_FILESYSTEM_RAR
+- g_RarManager.ClearCache(true);
+-#endif
+
+ #ifdef HAS_FILESYSTEM_SFTP
+ CSFTPSessionManager::DisconnectAllSessions();
+diff --git a/xbmc/SystemGlobals.cpp b/xbmc/SystemGlobals.cpp
+index 9050b4168..dd47e16c7 100644
+--- a/xbmc/SystemGlobals.cpp
++++ b/xbmc/SystemGlobals.cpp
+@@ -37,9 +37,6 @@
+ #include "filesystem/SpecialProtocol.h"
+ std::map<std::string, std::string> CSpecialProtocol::m_pathMap;
+
+-#if defined(HAS_FILESYSTEM_RAR)
+-#include "filesystem/RarManager.h"
+-#endif
+ #include "filesystem/ZipManager.h"
+
+ #ifdef TARGET_RASPBERRY_PI
+diff --git a/xbmc/Util.cpp b/xbmc/Util.cpp
+index c35679411..0ddd47d98 100644
+--- a/xbmc/Util.cpp
++++ b/xbmc/Util.cpp
+@@ -54,9 +54,6 @@
+ #include "filesystem/MultiPathDirectory.h"
+ #include "filesystem/SpecialProtocol.h"
+ #include "filesystem/RSSDirectory.h"
+-#ifdef HAS_FILESYSTEM_RAR
+-#include "filesystem/RarManager.h"
+-#endif
+ #ifdef HAS_UPNP
+ #include "filesystem/UPnPDirectory.h"
+ #endif
+@@ -1933,16 +1930,6 @@ int CUtil::ScanArchiveForAssociatedItems(const std::string& strArchivePath,
+ return false;
+ }
+ else
+- {
+-#ifdef HAS_FILESYSTEM_RAR
+- // get _ALL_files in the rar, even those located in subdirectories because we set the bMask to false.
+- // so now we dont have to find any subdirs anymore, all files in the rar is checked.
+- if (!g_RarManager.GetFilesInRar(ItemList, strArchivePath, false, ""))
+- return false;
+-#else
+- return false;
+-#endif
+- }
+ for (int it = 0; it < ItemList.Size(); ++it)
+ {
+ std::string strPathInRar = ItemList[it]->GetPath();
+diff --git a/xbmc/filesystem/CMakeLists.txt b/xbmc/filesystem/CMakeLists.txt
+index aa9fdf9eb..d4d7ea145 100644
+--- a/xbmc/filesystem/CMakeLists.txt
++++ b/xbmc/filesystem/CMakeLists.txt
+@@ -44,9 +44,6 @@ set(SOURCES AddonsDirectory.cpp
+ PlaylistFileDirectory.cpp
+ PluginDirectory.cpp
+ PVRDirectory.cpp
+- RarDirectory.cpp
+- RarFile.cpp
+- RarManager.cpp
+ ResourceDirectory.cpp
+ ResourceFile.cpp
+ RSSDirectory.cpp
+@@ -123,9 +120,6 @@ set(HEADERS AddonsDirectory.h
+ PlaylistFileDirectory.h
+ PluginDirectory.h
+ RSSDirectory.h
+- RarDirectory.h
+- RarFile.h
+- RarManager.h
+ ResourceDirectory.h
+ ResourceFile.h
+ SFTPDirectory.h
+diff --git a/xbmc/filesystem/DirectoryFactory.cpp b/xbmc/filesystem/DirectoryFactory.cpp
+index 662b63b5c..3da6513c6 100644
+--- a/xbmc/filesystem/DirectoryFactory.cpp
++++ b/xbmc/filesystem/DirectoryFactory.cpp
+@@ -76,9 +76,6 @@
+ #endif
+ #include "XbtDirectory.h"
+ #include "ZipDirectory.h"
+-#ifdef HAS_FILESYSTEM_RAR
+-#include "RarDirectory.h"
+-#endif
+ #include "FileItem.h"
+ #include "URL.h"
+ #include "RSSDirectory.h"
+@@ -139,14 +136,6 @@ IDirectory* CDirectoryFactory::Create(const CURL& url)
+ if (url.IsProtocol("apk")) return new CAPKDirectory();
+ #endif
+ if (url.IsProtocol("zip")) return new CZipDirectory();
+- if (url.IsProtocol("rar"))
+- {
+-#ifdef HAS_FILESYSTEM_RAR
+- return new CRarDirectory();
+-#else
+- CLog::Log(LOGWARNING, "%s - Compiled without non-free, rar support is disabled", __FUNCTION__);
+-#endif
+- }
+ if (url.IsProtocol("xbt")) return new CXbtDirectory();
+ if (url.IsProtocol("multipath")) return new CMultiPathDirectory();
+ if (url.IsProtocol("stack")) return new CStackDirectory();
+diff --git a/xbmc/filesystem/FileDirectoryFactory.cpp b/xbmc/filesystem/FileDirectoryFactory.cpp
+index a0fd0a901..af4b7a5df 100644
+--- a/xbmc/filesystem/FileDirectoryFactory.cpp
++++ b/xbmc/filesystem/FileDirectoryFactory.cpp
+@@ -26,9 +26,6 @@
+ #include "UDFDirectory.h"
+ #include "RSSDirectory.h"
+ #endif
+-#ifdef HAS_FILESYSTEM_RAR
+-#include "RarDirectory.h"
+-#endif
+ #if defined(TARGET_ANDROID)
+ #include "APKDirectory.h"
+ #endif
+@@ -178,15 +175,6 @@ IFileDirectory* CFileDirectoryFactory::Create(const CURL& url, CFileItem* pItem,
+ *pItem = *items[0];
+ }
+ else
+- {
+-#ifdef HAS_FILESYSTEM_RAR
+- // compressed or more than one file -> create a rar dir
+- pItem->SetURL(rarURL);
+- return new CRarDirectory;
+-#else
+- return NULL;
+-#endif
+- }
+ return NULL;
+ }
+ if (url.IsFileType("xbt"))
+diff --git a/xbmc/filesystem/FileFactory.cpp b/xbmc/filesystem/FileFactory.cpp
+index c7760bf40..e565726bd 100644
+--- a/xbmc/filesystem/FileFactory.cpp
++++ b/xbmc/filesystem/FileFactory.cpp
+@@ -50,9 +50,6 @@
+ #endif
+ #include "XbtFile.h"
+ #include "ZipFile.h"
+-#ifdef HAS_FILESYSTEM_RAR
+-#include "RarFile.h"
+-#endif
+ #ifdef HAS_FILESYSTEM_SFTP
+ #include "SFTPFile.h"
+ #endif
+@@ -105,14 +102,6 @@ IFile* CFileFactory::CreateLoader(const CURL& url)
+ if (url.IsProtocol("apk")) return new CAPKFile();
+ #endif
+ if (url.IsProtocol("zip")) return new CZipFile();
+- else if (url.IsProtocol("rar"))
+- {
+-#ifdef HAS_FILESYSTEM_RAR
+- return new CRarFile();
+-#else
+- CLog::Log(LOGWARNING, "%s - Compiled without non-free, rar support is disabled", __FUNCTION__);
+-#endif
+- }
+ else if (url.IsProtocol("xbt")) return new CXbtFile();
+ else if (url.IsProtocol("musicdb")) return new CMusicDatabaseFile();
+ else if (url.IsProtocol("videodb")) return nullptr;
+diff --git a/xbmc/filesystem/Makefile.in b/xbmc/filesystem/Makefile.in
+index 14fb7b7be..9c412136e 100644
+--- a/xbmc/filesystem/Makefile.in
++++ b/xbmc/filesystem/Makefile.in
+@@ -78,12 +78,6 @@ SRCS += AndroidAppFile.cpp
+ SRCS += AndroidAppDirectory.cpp
+ endif
+
+-ifeq (@HAVE_XBMC_NONFREE@,1)
+-SRCS += RarFile.cpp
+-SRCS += RarDirectory.cpp
+-SRCS += RarManager.cpp
+-endif
+-
+ ifeq (@USE_LIBSMBCLIENT@,1)
+ SRCS += SMBFile.cpp
+ SRCS += SMBDirectory.cpp
+diff --git a/xbmc/filesystem/test/CMakeLists.txt b/xbmc/filesystem/test/CMakeLists.txt
+index 5d7763365..6946a6e56 100644
+--- a/xbmc/filesystem/test/CMakeLists.txt
++++ b/xbmc/filesystem/test/CMakeLists.txt
+@@ -1,7 +1,6 @@
+ set(SOURCES TestDirectory.cpp
+ TestFile.cpp
+ TestFileFactory.cpp
+- TestRarFile.cpp
+ TestZipFile.cpp)
+
+ core_add_test_library(filesystem_test)
+diff --git a/xbmc/filesystem/test/Makefile b/xbmc/filesystem/test/Makefile
+index 6589d7164..d528be284 100644
+--- a/xbmc/filesystem/test/Makefile
++++ b/xbmc/filesystem/test/Makefile
+@@ -3,7 +3,6 @@ SRCS= \
+ TestFile.cpp \
+ TestFileFactory.cpp \
+ TestNfsFile.cpp \
+- TestRarFile.cpp \
+ TestZipFile.cpp
+
+ LIB=filesystemTest.a
+diff --git a/xbmc/interfaces/builtins/ApplicationBuiltins.cpp b/xbmc/interfaces/builtins/ApplicationBuiltins.cpp
+index 86be03fd9..a33b859f9 100644
+--- a/xbmc/interfaces/builtins/ApplicationBuiltins.cpp
++++ b/xbmc/interfaces/builtins/ApplicationBuiltins.cpp
+@@ -21,9 +21,6 @@
#include "ApplicationBuiltins.h"
#include "Application.h"
+-#ifdef HAS_FILESYSTEM_RAR
-#include "filesystem/RarManager.h"
+-#endif
#include "filesystem/ZipManager.h"
#include "messaging/ApplicationMessenger.h"
- #include "interfaces/AnnouncementManager.h"
-@@ -46,7 +45,7 @@
+ #include "input/Key.h"
+@@ -49,7 +46,7 @@ using namespace KODI::MESSAGING;
*/
static int Extract(const std::vector<std::string>& params)
{
@@ -34,7 +430,7 @@ diff -Nur xbmc-16.0-Jarvis.orig/xbmc/interfaces/builtins/ApplicationBuiltins.cpp
std::string strDestDirect;
if (params.size() < 2)
strDestDirect = URIUtils::GetDirectory(params[0]);
-@@ -57,10 +56,6 @@
+@@ -60,10 +57,6 @@ static int Extract(const std::vector<std::string>& params)
if (URIUtils::IsZIP(params[0]))
g_ZipManager.ExtractArchive(params[0],strDestDirect);
@@ -45,3 +441,22 @@ diff -Nur xbmc-16.0-Jarvis.orig/xbmc/interfaces/builtins/ApplicationBuiltins.cpp
else
CLog::Log(LOGERROR, "Extract, No archive given");
+diff --git a/xbmc/system.h b/xbmc/system.h
+index 07dfe87e4..a60b4f23b 100644
+--- a/xbmc/system.h
++++ b/xbmc/system.h
+@@ -81,14 +81,6 @@
+ #define HAS_MDNS_EMBEDDED
+ #endif
+
+-/**********************
+- * Non-free Components
+- **********************/
+-
+-#if defined(HAVE_XBMC_NONFREE)
+- #define HAS_FILESYSTEM_RAR
+-#endif
+-
+ /*****************
+ * Win32 Specific
+ *****************/