From 789eb1a08d4f06dc6efaecf55132343b6e5cd538 Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 8 Mar 2021 11:15:15 +0100 Subject: [PATCH 1/8] Require DMS 3.0.0 or higher --- .../resource.language.en_gb/strings.po | 4 - src/DvbData.cpp | 39 ++----- src/DvbData.h | 4 +- src/KVStore.cpp | 5 - src/KVStore.h | 1 - src/Timers.cpp | 102 ++++++++---------- src/Timers.h | 1 - 7 files changed, 55 insertions(+), 101 deletions(-) diff --git a/pvr.dvbviewer/resources/language/resource.language.en_gb/strings.po b/pvr.dvbviewer/resources/language/resource.language.en_gb/strings.po index 55fb126a..b6d2ad26 100644 --- a/pvr.dvbviewer/resources/language/resource.language.en_gb/strings.po +++ b/pvr.dvbviewer/resources/language/resource.language.en_gb/strings.po @@ -354,10 +354,6 @@ msgctxt "#30510" msgid "The time period cannot span more than 24 hours" msgstr "" -msgctxt "#30511" -msgid "EDL support requires DVBViewer Media Server %s or higher" -msgstr "" - msgctxt "#30512" msgid "PVR is running with guest permissions" msgstr "" diff --git a/src/DvbData.cpp b/src/DvbData.cpp index a3355e2b..690785d1 100644 --- a/src/DvbData.cpp +++ b/src/DvbData.cpp @@ -189,8 +189,8 @@ PVR_ERROR Dvb::GetCapabilities(kodi::addon::PVRCapabilities& capabilities) capabilities.SetSupportsChannelSettings(false); capabilities.SetHandlesInputStream(true); capabilities.SetHandlesDemuxing(false); - capabilities.SetSupportsRecordingPlayCount(false); - capabilities.SetSupportsLastPlayedPosition(false); + capabilities.SetSupportsRecordingPlayCount(true); + capabilities.SetSupportsLastPlayedPosition(true); capabilities.SetSupportsRecordingEdl(true); capabilities.SetSupportsRecordingsRename(false); capabilities.SetSupportsRecordingsLifetimeChange(false); @@ -200,12 +200,6 @@ PVR_ERROR Dvb::GetCapabilities(kodi::addon::PVRCapabilities& capabilities) { if (IsGuest()) capabilities.SetSupportsTimers(false); - - if (HasKVStore()) - { - capabilities.SetSupportsRecordingPlayCount(true); - capabilities.SetSupportsLastPlayedPosition(true); - } } return PVR_ERROR_NO_ERROR; } @@ -720,13 +714,10 @@ PVR_ERROR Dvb::GetRecordings(bool deleted, recording.group = groups.emplace(group, 0).first; ++recording.group->second; - if (m_kvstore.IsSupported()) - { - m_kvstore.Get("recplaycount_" + recording.id, - recording.playCount, KVStore::Hint::FETCH_ALL); - m_kvstore.Get("recplaypos_" + recording.id, - recording.lastPlayPosition, KVStore::Hint::FETCH_ALL); - } + m_kvstore.Get("recplaycount_" + recording.id, + recording.playCount, KVStore::Hint::FETCH_ALL); + m_kvstore.Get("recplaypos_" + recording.id, + recording.lastPlayPosition, KVStore::Hint::FETCH_ALL); recordings.push_back(recording); } @@ -889,15 +880,6 @@ PVR_ERROR Dvb::GetRecordingEdl(const kodi::addon::PVRRecording& recinfo, if (!IsConnected()) return PVR_ERROR_SERVER_ERROR; - if (m_backendVersion < DMS_VERSION_NUM(2, 1, 0, 0)) - { - kodi::Log(ADDON_LOG_ERROR, "Backend server is too old. Disabling EDL support."); - kodi::QueueFormattedNotification(QUEUE_ERROR, kodi::addon::GetLocalizedString(30511).c_str(), - DMS_VERSION_STR(2, 1, 0, 0)); - m_settings.m_edl.enabled = false; - return PVR_ERROR_NOT_IMPLEMENTED; - } - std::unique_ptr res = OpenFromAPI("api/sideload.html?rec=1&file=.edl" "&fileid=%s", recinfo.GetRecordingId().c_str()); if (res->error) @@ -946,8 +928,6 @@ PVR_ERROR Dvb::SetRecordingPlayCount(const kodi::addon::PVRRecording& recinfo, { if (!IsConnected()) return PVR_ERROR_SERVER_ERROR; - if (!HasKVStore()) - return PVR_ERROR_NOT_IMPLEMENTED; const std::string value = std::string("recplaycount_") + recinfo.GetRecordingId(); return m_kvstore.Set(value, count) @@ -959,8 +939,6 @@ PVR_ERROR Dvb::SetRecordingLastPlayedPosition( { if (!IsConnected()) return PVR_ERROR_SERVER_ERROR; - if (!HasKVStore()) - return PVR_ERROR_NOT_IMPLEMENTED; const std::string value = std::string("recplaypos_") + recinfo.GetRecordingId(); return m_kvstore.Set(value, lastplayedposition) @@ -972,8 +950,6 @@ PVR_ERROR Dvb::GetRecordingLastPlayedPosition( { if (!IsConnected()) return PVR_ERROR_SERVER_ERROR; - if (!HasKVStore()) - return PVR_ERROR_NOT_IMPLEMENTED; const std::string value = std::string("recplaypos_") + recinfo.GetRecordingId(); return m_kvstore.Get(value, position) @@ -1220,8 +1196,7 @@ void Dvb::Process() kodi::addon::CInstancePVRClient::TriggerRecordingUpdate(); /* actually the DMS should do this itself... */ - if (m_kvstore.IsSupported()) - m_kvstore.Save(); + m_kvstore.Save(); } } } diff --git a/src/DvbData.h b/src/DvbData.h index 598514aa..e658083b 100644 --- a/src/DvbData.h +++ b/src/DvbData.h @@ -25,7 +25,7 @@ #include // minimum version required -#define DMS_MIN_VERSION 1, 33, 2, 0 +#define DMS_MIN_VERSION 3, 0, 0, 0 #define DMS_MIN_VERSION_NUM DMS_VERSION_NUM2(DMS_MIN_VERSION) #define DMS_MIN_VERSION_STR DMS_VERSION_STR2(DMS_MIN_VERSION) @@ -158,8 +158,6 @@ class Dvb unsigned int GetBackendVersion(); bool IsGuest() { return m_isguest; } - bool HasKVStore() - { return m_kvstore.IsSupported(); }; dvbviewer::Settings &GetSettings() { return m_settings; }; diff --git a/src/KVStore.cpp b/src/KVStore.cpp index 41cc4f97..13541b2a 100644 --- a/src/KVStore.cpp +++ b/src/KVStore.cpp @@ -16,11 +16,6 @@ using namespace dvbviewer; -bool KVStore::IsSupported() const -{ - return m_cli.GetBackendVersion() >= DMS_VERSION_NUM(2, 1, 2, 0); -} - bool KVStore::IsErrorState() const { return m_error; diff --git a/src/KVStore.h b/src/KVStore.h index b68fc933..519b1325 100644 --- a/src/KVStore.h +++ b/src/KVStore.h @@ -48,7 +48,6 @@ class KVStore {}; KVStore(const KVStore &kvstore) = delete; - bool IsSupported() const; bool IsErrorState() const; void Reset(); diff --git a/src/Timers.cpp b/src/Timers.cpp index 2e27516f..1e4ab2f5 100644 --- a/src/Timers.cpp +++ b/src/Timers.cpp @@ -148,56 +148,53 @@ void Timers::GetTimerTypes(std::vector< std::unique_ptr deDupValues = { - /* PVR_Timer.iPreventDuplicateEpisodes values and presentation.*/ - static std::vector deDupValues = - { - { AutoTimer::DeDup::DISABLED, kodi::addon::GetLocalizedString(30430) }, - { AutoTimer::DeDup::CHECK_TITLE, kodi::addon::GetLocalizedString(30431) }, - { AutoTimer::DeDup::CHECK_SUBTITLE, kodi::addon::GetLocalizedString(30432) }, - { AutoTimer::DeDup::CHECK_TITLE_SUBTITLE, kodi::addon::GetLocalizedString(30433) }, - }; - - /* epg auto search */ - types.emplace_back(std::unique_ptr(new TimerType( - Timer::Type::EPG_AUTO_SEARCH, - PVR_TIMER_TYPE_IS_REPEATING | - PVR_TIMER_TYPE_SUPPORTS_ENABLE_DISABLE | - PVR_TIMER_TYPE_SUPPORTS_CHANNELS | - PVR_TIMER_TYPE_SUPPORTS_ANY_CHANNEL | - PVR_TIMER_TYPE_SUPPORTS_FIRST_DAY | - PVR_TIMER_TYPE_SUPPORTS_START_TIME | - PVR_TIMER_TYPE_SUPPORTS_END_TIME | - PVR_TIMER_TYPE_SUPPORTS_START_ANYTIME | - PVR_TIMER_TYPE_SUPPORTS_END_ANYTIME | - PVR_TIMER_TYPE_SUPPORTS_WEEKDAYS | - PVR_TIMER_TYPE_SUPPORTS_START_END_MARGIN | - PVR_TIMER_TYPE_SUPPORTS_PRIORITY | - PVR_TIMER_TYPE_SUPPORTS_TITLE_EPG_MATCH | - PVR_TIMER_TYPE_SUPPORTS_FULLTEXT_EPG_MATCH | - PVR_TIMER_TYPE_SUPPORTS_RECORDING_GROUP | - PVR_TIMER_TYPE_SUPPORTS_RECORD_ONLY_NEW_EPISODES, - "", /* Let Kodi generate the description */ - priorityValues, groupValues, deDupValues))); - types.back()->SetPreventDuplicateEpisodesDefault( - AutoTimer::DeDup::CHECK_TITLE_SUBTITLE); - - /* One-shot created by epg auto search */ - types.emplace_back(std::unique_ptr(new TimerType( - Timer::Type::EPG_AUTO_ONCE, - PVR_TIMER_TYPE_IS_MANUAL | - PVR_TIMER_TYPE_FORBIDS_NEW_INSTANCES | - PVR_TIMER_TYPE_SUPPORTS_ENABLE_DISABLE | - PVR_TIMER_TYPE_SUPPORTS_CHANNELS | - PVR_TIMER_TYPE_SUPPORTS_START_TIME | - PVR_TIMER_TYPE_SUPPORTS_END_TIME | - PVR_TIMER_TYPE_SUPPORTS_START_END_MARGIN | - PVR_TIMER_TYPE_SUPPORTS_PRIORITY | - PVR_TIMER_TYPE_SUPPORTS_RECORDING_GROUP, - kodi::addon::GetLocalizedString(30420), - priorityValues, groupValues))); - } + { AutoTimer::DeDup::DISABLED, kodi::addon::GetLocalizedString(30430) }, + { AutoTimer::DeDup::CHECK_TITLE, kodi::addon::GetLocalizedString(30431) }, + { AutoTimer::DeDup::CHECK_SUBTITLE, kodi::addon::GetLocalizedString(30432) }, + { AutoTimer::DeDup::CHECK_TITLE_SUBTITLE, kodi::addon::GetLocalizedString(30433) }, + }; + + /* epg auto search */ + types.emplace_back(std::unique_ptr(new TimerType( + Timer::Type::EPG_AUTO_SEARCH, + PVR_TIMER_TYPE_IS_REPEATING | + PVR_TIMER_TYPE_SUPPORTS_ENABLE_DISABLE | + PVR_TIMER_TYPE_SUPPORTS_CHANNELS | + PVR_TIMER_TYPE_SUPPORTS_ANY_CHANNEL | + PVR_TIMER_TYPE_SUPPORTS_FIRST_DAY | + PVR_TIMER_TYPE_SUPPORTS_START_TIME | + PVR_TIMER_TYPE_SUPPORTS_END_TIME | + PVR_TIMER_TYPE_SUPPORTS_START_ANYTIME | + PVR_TIMER_TYPE_SUPPORTS_END_ANYTIME | + PVR_TIMER_TYPE_SUPPORTS_WEEKDAYS | + PVR_TIMER_TYPE_SUPPORTS_START_END_MARGIN | + PVR_TIMER_TYPE_SUPPORTS_PRIORITY | + PVR_TIMER_TYPE_SUPPORTS_TITLE_EPG_MATCH | + PVR_TIMER_TYPE_SUPPORTS_FULLTEXT_EPG_MATCH | + PVR_TIMER_TYPE_SUPPORTS_RECORDING_GROUP | + PVR_TIMER_TYPE_SUPPORTS_RECORD_ONLY_NEW_EPISODES, + "", /* Let Kodi generate the description */ + priorityValues, groupValues, deDupValues))); + types.back()->SetPreventDuplicateEpisodesDefault( + AutoTimer::DeDup::CHECK_TITLE_SUBTITLE); + + /* One-shot created by epg auto search */ + types.emplace_back(std::unique_ptr(new TimerType( + Timer::Type::EPG_AUTO_ONCE, + PVR_TIMER_TYPE_IS_MANUAL | + PVR_TIMER_TYPE_FORBIDS_NEW_INSTANCES | + PVR_TIMER_TYPE_SUPPORTS_ENABLE_DISABLE | + PVR_TIMER_TYPE_SUPPORTS_CHANNELS | + PVR_TIMER_TYPE_SUPPORTS_START_TIME | + PVR_TIMER_TYPE_SUPPORTS_END_TIME | + PVR_TIMER_TYPE_SUPPORTS_START_END_MARGIN | + PVR_TIMER_TYPE_SUPPORTS_PRIORITY | + PVR_TIMER_TYPE_SUPPORTS_RECORDING_GROUP, + kodi::addon::GetLocalizedString(30420), + priorityValues, groupValues))); } Timers::Error Timers::RefreshAllTimers(bool &changes) @@ -205,7 +202,7 @@ Timers::Error Timers::RefreshAllTimers(bool &changes) bool changesAutotimers, changesTimers; /* refresh epg auto search first */ Timers::Error err = Timers::SUCCESS; - if (err == Timers::SUCCESS && CanAutoTimers()) + if (err == Timers::SUCCESS) err = RefreshAutoTimers(changesAutotimers); if (err == Timers::SUCCESS) err = RefreshTimers(changesTimers); @@ -581,11 +578,6 @@ void AutoTimer::CalcGUID() guid = title + "/" + searchPhrase; } -bool Timers::CanAutoTimers() const -{ - return m_cli.GetBackendVersion() >= DMS_VERSION_NUM(2, 1, 0, 0); -} - bool Timers::IsAutoTimer(const kodi::addon::PVRTimer &timer) { return timer.GetTimerType() == Timer::Type::EPG_AUTO_SEARCH; diff --git a/src/Timers.h b/src/Timers.h index 1e1b856e..c54f4988 100644 --- a/src/Timers.h +++ b/src/Timers.h @@ -164,7 +164,6 @@ class Timers const char *xmltag, std::map &timerlist, bool &changes); Error RefreshTimers(bool &changes); Error RefreshAutoTimers(bool &changes); - bool CanAutoTimers() const; bool IsAutoTimer(const kodi::addon::PVRTimer &timer); Error ParseTimerFrom(const kodi::addon::PVRTimer &tmr, Timer &timer); From 03758c99d48209081b649a0e5714b8bdfa111a78 Mon Sep 17 00:00:00 2001 From: manuel Date: Fri, 22 Apr 2022 00:53:55 +0200 Subject: [PATCH 2/8] Delete recordings: remove extra guest check --- src/DvbData.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/DvbData.cpp b/src/DvbData.cpp index 690785d1..133becfa 100644 --- a/src/DvbData.cpp +++ b/src/DvbData.cpp @@ -772,12 +772,6 @@ PVR_ERROR Dvb::DeleteRecording(const kodi::addon::PVRRecording& recording) if (!IsConnected()) return PVR_ERROR_SERVER_ERROR; - if (m_isguest) - { - kodi::QueueNotification(QUEUE_ERROR, "", kodi::addon::GetLocalizedString(30512)); - return PVR_ERROR_REJECTED; - } - std::unique_ptr res = GetFromAPI("api/recdelete.html?recid=%s&delfile=1", recording.GetRecordingId().c_str()); if (res->error) From eed21ebbf216bfd15302a899a550adb84bc31c04 Mon Sep 17 00:00:00 2001 From: manuel Date: Fri, 22 Apr 2022 09:27:55 +0200 Subject: [PATCH 3/8] Fix appveyor build --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 86d4ee14..2225a2ca 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -53,7 +53,7 @@ before_build: cd "$KODI/tools/depends" sed -i 's/@platform_ldflags@//' target/Toolchain_binaddons.cmake.in ./bootstrap - ./configure --prefix="$ROOT/kodi-build" --disable-debug ${params[@]} + ./configure --prefix="$ROOT/kodi-build" --disable-debug --with-rendersystem=gles ${params[@]} sed -i 's/^$(TOOLCHAIN_FILE): /mytoolchain: /' xbmc-addons.include make -C target/binary-addons mytoolchain cp target/binary-addons/mytoolchain $ROOT/Toolchain_binaddons.cmake From 58430baea42824a8e4767742765870ef0fd1516f Mon Sep 17 00:00:00 2001 From: manuel Date: Fri, 22 Apr 2022 10:09:41 +0200 Subject: [PATCH 4/8] Set up CI with Azure Pipelines --- azure-pipelines.yml | 65 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 azure-pipelines.yml diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 00000000..c69cbe87 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,65 @@ +variables: + app_id: 'pvr.vuplus' + +trigger: + branches: + include: + - Nexus + - releases/* + paths: + include: + - '*' + exclude: + - 'debian/*' + +jobs: + - job: Windows + + pool: + vmImage: 'VS2017-Win2016' + + strategy: + matrix: + Win32: + GENERATOR: "Visual Studio 15 2017" + ARCHITECTURE: Win32 + CONFIGURATION: Release + Win64: + GENERATOR: "Visual Studio 15 2017" + ARCHITECTURE: x64 + CONFIGURATION: Release + Win64-UWP: + GENERATOR: "Visual Studio 15 2017" + ARCHITECTURE: x64 + CONFIGURATION: Release + WINSTORE: -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0.17763.0" + ARM64-UWP: + GENERATOR: "Visual Studio 15 2017" + ARCHITECTURE: ARM64 + CONFIGURATION: Release + WINSTORE: -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0.17763.0" + + workspace: + clean: all + + steps: + + - script: | + cd .. + git clone --branch master --depth=1 https://github.com/xbmc/xbmc.git kodi + cd $(Build.SourcesDirectory) + mkdir build + cd build + mkdir "definition/$(app_id)" + echo $(app_id) . . > definition/$(app_id)/$(app_id).txt + mklink /J "$(Pipeline.Workspace)/$(app_id)" "$(Build.SourcesDirectory)" + + - task: CMake@1 + inputs: + workingDirectory: 'build' + cmakeArgs: '-T host=x64 -G "$(GENERATOR)" -A $(ARCHITECTURE) $(WINSTORE) -DADDONS_TO_BUILD=$(app_id) -DCMAKE_BUILD_TYPE=$(CONFIGURATION) -DADDONS_DEFINITION_DIR=$(Pipeline.Workspace)/$(app_id)/build/definition -DADDON_SRC_PREFIX=../.. -DCMAKE_INSTALL_PREFIX=../../kodi/addons -DPACKAGE_ZIP=1 ../../kodi/cmake/addons' + + - task: CMake@1 + inputs: + workingDirectory: 'build' + cmakeArgs: '--build . --config $(CONFIGURATION) --target $(app_id)' From 9090e2908d15ab0c80d62ec88e0d1d2610884d1d Mon Sep 17 00:00:00 2001 From: manuel Date: Fri, 22 Apr 2022 10:31:25 +0200 Subject: [PATCH 5/8] Change copyright date --- debian/copyright | 6 +++--- src/DvbData.cpp | 4 ++-- src/DvbData.h | 4 ++-- src/IStreamReader.h | 4 ++-- src/KVStore.cpp | 4 ++-- src/KVStore.h | 4 ++-- src/RecordingReader.cpp | 4 ++-- src/RecordingReader.h | 4 ++-- src/Settings.cpp | 4 ++-- src/Settings.h | 4 ++-- src/StreamReader.cpp | 4 ++-- src/StreamReader.h | 4 ++-- src/Timers.cpp | 4 ++-- src/Timers.h | 4 ++-- src/TimeshiftBuffer.cpp | 4 ++-- src/TimeshiftBuffer.h | 4 ++-- src/client.cpp | 4 ++-- src/client.h | 4 ++-- 18 files changed, 37 insertions(+), 37 deletions(-) diff --git a/debian/copyright b/debian/copyright index e6a8b01c..908c3550 100644 --- a/debian/copyright +++ b/debian/copyright @@ -2,8 +2,8 @@ Format: http://dep.debian.net/deps/dep5 Upstream-Name: pvr.dvbviewer Files: * -Copyright: 2005-2021 Team Kodi - 2013-2021 Manuel Mausz +Copyright: 2005-2022 Team Kodi + 2013-2022 Manuel Mausz 2012-2013 A600 License: GPL-2+ This package is free software; you can redistribute it and/or modify @@ -24,7 +24,7 @@ License: GPL-2+ Files: debian/* -Copyright: 2020-2021 Team Kodi +Copyright: 2020-2022 Team Kodi 2015 Manuel Mausz 2013 wsnipex License: GPL-2+ diff --git a/src/DvbData.cpp b/src/DvbData.cpp index 133becfa..727c3be3 100644 --- a/src/DvbData.cpp +++ b/src/DvbData.cpp @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/DvbData.h b/src/DvbData.h index e658083b..e394c49f 100644 --- a/src/DvbData.h +++ b/src/DvbData.h @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/IStreamReader.h b/src/IStreamReader.h index 5743bc7f..41ffe737 100644 --- a/src/IStreamReader.h +++ b/src/IStreamReader.h @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/KVStore.cpp b/src/KVStore.cpp index 13541b2a..f506beb8 100644 --- a/src/KVStore.cpp +++ b/src/KVStore.cpp @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/KVStore.h b/src/KVStore.h index 519b1325..4310fedd 100644 --- a/src/KVStore.h +++ b/src/KVStore.h @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/RecordingReader.cpp b/src/RecordingReader.cpp index cb1e68e2..66bbbe0b 100644 --- a/src/RecordingReader.cpp +++ b/src/RecordingReader.cpp @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/RecordingReader.h b/src/RecordingReader.h index 4f27b2a2..a0112178 100644 --- a/src/RecordingReader.h +++ b/src/RecordingReader.h @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/Settings.cpp b/src/Settings.cpp index 284d8ceb..f76b62c9 100644 --- a/src/Settings.cpp +++ b/src/Settings.cpp @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/Settings.h b/src/Settings.h index da7d6161..73d3fd65 100644 --- a/src/Settings.h +++ b/src/Settings.h @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/StreamReader.cpp b/src/StreamReader.cpp index f182114f..e0cacbf9 100644 --- a/src/StreamReader.cpp +++ b/src/StreamReader.cpp @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/StreamReader.h b/src/StreamReader.h index 1a624431..6f9df63a 100644 --- a/src/StreamReader.h +++ b/src/StreamReader.h @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/Timers.cpp b/src/Timers.cpp index 1e4ab2f5..c0de71b3 100644 --- a/src/Timers.cpp +++ b/src/Timers.cpp @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/Timers.h b/src/Timers.h index c54f4988..3e1c26a1 100644 --- a/src/Timers.h +++ b/src/Timers.h @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/TimeshiftBuffer.cpp b/src/TimeshiftBuffer.cpp index b8bfd702..d746d254 100644 --- a/src/TimeshiftBuffer.cpp +++ b/src/TimeshiftBuffer.cpp @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/TimeshiftBuffer.h b/src/TimeshiftBuffer.h index fc055964..a8ce8b2b 100644 --- a/src/TimeshiftBuffer.h +++ b/src/TimeshiftBuffer.h @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/client.cpp b/src/client.cpp index d1470baa..bfbd90eb 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. diff --git a/src/client.h b/src/client.h index 97d03e54..a2357ccc 100644 --- a/src/client.h +++ b/src/client.h @@ -1,6 +1,6 @@ /* - * Copyright (C) 2005-2021 Team Kodi (https://kodi.tv) - * Copyright (C) 2013-2021 Manuel Mausz + * Copyright (C) 2005-2022 Team Kodi (https://kodi.tv) + * Copyright (C) 2013-2022 Manuel Mausz * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSE.md for more information. From 64bdc06a9151b9e130abedf8fa165afcb14ba2c1 Mon Sep 17 00:00:00 2001 From: manuel Date: Fri, 22 Apr 2022 00:44:29 +0200 Subject: [PATCH 6/8] Make sure to only reference non-hidden channels --- src/DvbData.cpp | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/DvbData.cpp b/src/DvbData.cpp index 727c3be3..2766fa0b 100644 --- a/src/DvbData.cpp +++ b/src/DvbData.cpp @@ -1402,6 +1402,18 @@ bool Dvb::LoadChannels() } } + auto searchChannelByBackendId = [&](uint64_t backendId) -> DvbChannel* { + for (auto channel : m_channels) + { + bool found = (std::find(channel->backendIds.begin(), + channel->backendIds.end(), backendId) + != channel->backendIds.end()); + if (found) + return channel; + } + return nullptr; + }; + if (m_settings.m_useFavourites && !m_settings.m_useFavouritesFile) { m_groups.clear(); @@ -1424,12 +1436,7 @@ bool Dvb::LoadChannels() { uint64_t backendId = 0; xChannel->QueryValueAttribute("ID", &backendId); - DvbChannel *channel = GetChannel([&](const DvbChannel *channel) - { - return (std::find(channel->backendIds.begin(), - channel->backendIds.end(), backendId) - != channel->backendIds.end()); - }); + DvbChannel *channel = searchChannelByBackendId(backendId); if (!channel) { kodi::Log(ADDON_LOG_INFO, "Favourites contains unresolvable channel: %s." @@ -1529,12 +1536,7 @@ bool Dvb::LoadChannels() channelName = ConvertToUtf8(channelName); } - DvbChannel *channel = GetChannel([&](const DvbChannel *channel) - { - return (std::find(channel->backendIds.begin(), - channel->backendIds.end(), backendId) - != channel->backendIds.end()); - }); + DvbChannel *channel = searchChannelByBackendId(backendId); if (!channel) { const char *descr = (channelName.empty()) ? xEntry->GetText() @@ -1598,6 +1600,8 @@ DvbChannel *Dvb::GetChannel(std::function func) { for (auto channel : m_channels) { + if (channel->hidden) + continue; if (func(channel)) return channel; } From 998a35eb5f3dea613442a89482a8abbab5a9ae60 Mon Sep 17 00:00:00 2001 From: manuel Date: Fri, 22 Apr 2022 10:45:07 +0200 Subject: [PATCH 7/8] Release version 20.3.0 --- pvr.dvbviewer/addon.xml.in | 2 +- pvr.dvbviewer/changelog.txt | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/pvr.dvbviewer/addon.xml.in b/pvr.dvbviewer/addon.xml.in index f2f790b8..74018a45 100644 --- a/pvr.dvbviewer/addon.xml.in +++ b/pvr.dvbviewer/addon.xml.in @@ -1,7 +1,7 @@ @ADDON_DEPENDS@ diff --git a/pvr.dvbviewer/changelog.txt b/pvr.dvbviewer/changelog.txt index 3c84ee9f..6883ee98 100644 --- a/pvr.dvbviewer/changelog.txt +++ b/pvr.dvbviewer/changelog.txt @@ -1,24 +1,29 @@ +v20.3.0 +- Require DMS 3.0.0 or higher +- Make sure to only reference non-hidden channels +- Delete recordings: remove extra guest check + v20.2.0 - Translation updates by Weblate - Kodi main API update to version 2.0.0 v20.1.0 - Kodi API to 8.0.0 - - Add supports recordings delete capability - - Enforce EDL limits +- Add supports recordings delete capability +- Enforce EDL limits v20.0.0 - Translations updates from Weblate - - da_dk, eo, et_ee, ko_kr, pl_pl - - Also allow addon.xml content update by Weblate +- da_dk, eo, et_ee, ko_kr, pl_pl +- Also allow addon.xml content update by Weblate - Changed test builds to 'Kodi 20 Nexus' - Increased version to 20.0.0 - - With start of Kodi 20 Nexus, takes addon as major the same version number as Kodi. - This done to know easier to which Kodi the addon works. +- With start of Kodi 20 Nexus, takes addon as major the same version number as Kodi. + This done to know easier to which Kodi the addon works. v7.3.3 - Translations updates from Weblate - - pl_pl +- pl_pl v7.3.2 - Fix for extra assets tag in addon.xml From bf65d9a3a27a930575d1676c63ea7ca283fb74e2 Mon Sep 17 00:00:00 2001 From: manuel Date: Fri, 22 Apr 2022 12:47:52 +0200 Subject: [PATCH 8/8] Update build platform --- appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 2225a2ca..b4f04b93 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -5,11 +5,11 @@ environment: CONFIG: Debug KODI_BRANCH: master # usually synced with APPVEYOR_REPO_BRANCH matrix: - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 PLATFORM: win32 MSVC_PLATFORM: x86 CONFIG: RelWithDebInfo - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 PLATFORM: win64 MSVC_PLATFORM: amd64 CONFIG: RelWithDebInfo