From 5baff3a1c78cb59f890054b614ad6ac5b966e362 Mon Sep 17 00:00:00 2001 From: André Fabian Silva Delgado Date: Wed, 8 Feb 2017 07:23:57 -0300 Subject: kodi-17.0-1.parabola1: updating version --- libre/kodi/10160.patch | 22 - libre/kodi/10775.patch | 839 ---------------------------- libre/kodi/9703.patch | 1432 ------------------------------------------------ libre/kodi/PKGBUILD | 139 +++-- libre/kodi/libre.patch | 459 +++++++++++++++- 5 files changed, 502 insertions(+), 2389 deletions(-) delete mode 100644 libre/kodi/10160.patch delete mode 100644 libre/kodi/10775.patch delete mode 100644 libre/kodi/9703.patch 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 -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 @@ - - - -- - - - -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(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(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(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(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(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(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 -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 @@ - - - -- -+ - - - -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(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 -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 -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 @@ - - - -- -+ - - - -@@ -24,6 +24,7 @@ - - - -+ - - - -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 -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(); // - 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]; // - 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 - 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;jSetPixelIndex(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; yleft,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; yGetEffWidth(); -- 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 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;ipnum_trans);ip++) -+ for (ip=0;ipnum_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 // - - #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 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 (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; yx < 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); // - 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); // - 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); // - 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 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>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 # Maintainer (Arch): BlackIkeEagle < ike DOT devolder AT gmail DOT com > +# Contributor (Arch): graysky +# Contributor (Arch): DonVla +# Contributor (Arch): Ulf Winkelvos +# Contributor (Arch): Ralf Barth +# Contributor (Arch): B & monty - Thanks for your hints :) +# Contributor (Arch): marzoul +# Contributor (Arch): Sergej Pupykin # Contributor (Arch): Brad Fanella # Contributor (Arch): [vEX] # Contributor (Arch): Zeqadious -# Contributor (Arch): BlackIkeEagle < ike DOT devolder AT gmail DOT com > # Contributor (Arch): Bartłomiej Piotrowski # Contributor (Arch): Maxime Gauduin # Maintainer: André Silva # Contributor: Isaac David +# +# Original credits go to Edgar Hucek +# 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 @@ - - -- http://mirrors.kodi.tv/addons/jarvis/addons.xml.gz -- http://mirrors.kodi.tv/addons/jarvis/addons.xml.gz.md5 -- http://mirrors.kodi.tv/addons/jarvis -+ http://repo.parabola.nu/other/kodi-libre/addons/jarvis/addons.xml.gz -+ http://repo.parabola.nu/other/kodi-libre/addons/jarvis/addons.xml.gz.md5 -+ http://repo.parabola.nu/other/kodi-libre/addons/jarvis - true - +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 = ""; }; + DF93D67F1444A8B0007C6459 /* PipeFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PipeFile.cpp; sourceTree = ""; }; + DF93D6801444A8B0007C6459 /* PipeFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PipeFile.h; sourceTree = ""; }; +- DF93D6811444A8B0007C6459 /* RarFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RarFile.cpp; sourceTree = ""; }; +- DF93D6821444A8B0007C6459 /* RarFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RarFile.h; sourceTree = ""; }; + DF93D6851444A8B0007C6459 /* SFTPFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SFTPFile.cpp; sourceTree = ""; }; + DF93D6861444A8B0007C6459 /* SFTPFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SFTPFile.h; sourceTree = ""; }; + DF93D6871444A8B0007C6459 /* ShoutcastFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShoutcastFile.cpp; sourceTree = ""; }; +@@ -4356,10 +4348,6 @@ + E38E17430D25F9FA00618676 /* PlaylistFileDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlaylistFileDirectory.h; sourceTree = ""; }; + E38E17440D25F9FA00618676 /* PluginDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginDirectory.cpp; sourceTree = ""; }; + E38E17450D25F9FA00618676 /* PluginDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginDirectory.h; sourceTree = ""; }; +- E38E17460D25F9FA00618676 /* RarDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RarDirectory.cpp; sourceTree = ""; }; +- E38E17470D25F9FA00618676 /* RarDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RarDirectory.h; sourceTree = ""; }; +- E38E17480D25F9FA00618676 /* RarManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RarManager.cpp; sourceTree = ""; }; +- E38E17490D25F9FA00618676 /* RarManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RarManager.h; sourceTree = ""; }; + E38E17530D25F9FA00618676 /* SmartPlaylistDirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SmartPlaylistDirectory.cpp; sourceTree = ""; }; + E38E17540D25F9FA00618676 /* SmartPlaylistDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SmartPlaylistDirectory.h; sourceTree = ""; }; + E38E17560D25F9FA00618676 /* SMBDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMBDirectory.h; sourceTree = ""; }; +@@ -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 @@ + + + +- http://mirrors.kodi.tv/addons/krypton/addons.xml.gz +- http://mirrors.kodi.tv/addons/krypton/addons.xml.gz.md5 +- http://mirrors.kodi.tv/addons/krypton ++ http://repo.parabola.nu/other/kodi-libre/addons/krypton/addons.xml.gz ++ http://repo.parabola.nu/other/kodi-libre/addons/krypton/addons.xml.gz.md5 ++ http://repo.parabola.nu/other/kodi-libre/addons/krypton + true -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 @@ + +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 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& 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& 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 + *****************/ -- cgit v1.2.3