diff --git a/packages/addons/repository/repository.linuxserver.docker/sources/addon.xml b/packages/addons/repository/repository.linuxserver.docker/sources/addon.xml
index 2e285dd1b3..8aa9aa25c0 100644
--- a/packages/addons/repository/repository.linuxserver.docker/sources/addon.xml
+++ b/packages/addons/repository/repository.linuxserver.docker/sources/addon.xml
@@ -1,33 +1,36 @@
-
-
-
-
- https://raw.githubusercontent.com/linuxserver/libreelec-addon-repo/master/addons.xml
- https://raw.githubusercontent.com/linuxserver/libreelec-addon-repo/master/addons.xml.md5
- https://raw.githubusercontent.com/linuxserver/libreelec-addon-repo/master/download
-
-
- Install add-ons from LinuxServer.io's docker repository
-
+ name="LinuxServer.io's Docker Add-ons"
+ version="@PKG_VERSION@.@PKG_REV@"
+ provider-name="LinuxServer.io">
+
+
+
+
+
+ https://raw.githubusercontent.com/linuxserver/libreelec-addon-repo/master/addons.xml
+ https://raw.githubusercontent.com/linuxserver/libreelec-addon-repo/master/addons.xml.md5
+ https://raw.githubusercontent.com/linuxserver/libreelec-addon-repo/master/download
+ false
+
+
+
+ Install add-ons from LinuxServer.io's docker repository
+
Download and install docker container add-ons from the LinuxServer.io repository.
Please visit https://linuxserver.io for more information.
-
-
- all
-
+
+
+ all
+
@PKG_ADDON_NEWS@
-
-
- resources/icon.png
- resources/fanart.png
+
+
+ resources/icon.png
+ resources/fanart.png
@PKG_ADDON_SCREENSHOT@
-
-
+
+
diff --git a/packages/mediacenter/kodi/config/repository.kodi.game/addon.xml b/packages/mediacenter/kodi/config/repository.kodi.game/addon.xml
index f74c68aa72..d07f7e2e9a 100644
--- a/packages/mediacenter/kodi/config/repository.kodi.game/addon.xml
+++ b/packages/mediacenter/kodi/config/repository.kodi.game/addon.xml
@@ -7,9 +7,12 @@
- https://raw.githubusercontent.com/kodi-game/repository.kodi.game/master/release/addons.xml
- https://raw.githubusercontent.com/kodi-game/repository.kodi.game/master/release/addons.xml.md5
- https://github.com/kodi-game/repository.kodi.game/raw/master/release/
+
+ https://raw.githubusercontent.com/kodi-game/repository.kodi.game/master/release/addons.xml
+ https://raw.githubusercontent.com/kodi-game/repository.kodi.game/master/release/addons.xml.md5
+ https://github.com/kodi-game/repository.kodi.game/raw/master/release/
+ false
+
Install game add-ons from Kodi.tv
diff --git a/packages/mediacenter/kodi/config/repository.libreelec.tv/addon.xml b/packages/mediacenter/kodi/config/repository.libreelec.tv/addon.xml
index 8d17e43684..120eeccce3 100644
--- a/packages/mediacenter/kodi/config/repository.libreelec.tv/addon.xml
+++ b/packages/mediacenter/kodi/config/repository.libreelec.tv/addon.xml
@@ -5,9 +5,12 @@
provider-name="Team LibreELEC">
- @ADDON_URL@/addons.xml.gz
- @ADDON_URL@/addons.xml.gz.sha256
- @ADDON_URL@
+
+ @ADDON_URL@/addons.xml.gz
+ @ADDON_URL@/addons.xml.gz.sha256
+ @ADDON_URL@
+ false
+
LibreELEC Add-ons
diff --git a/packages/mediacenter/kodi/package.mk b/packages/mediacenter/kodi/package.mk
index 858ed19bdb..21ec636dff 100644
--- a/packages/mediacenter/kodi/package.mk
+++ b/packages/mediacenter/kodi/package.mk
@@ -3,8 +3,8 @@
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="kodi"
-PKG_VERSION="cdb14802e55d6ad12085059419ce515844364d45"
-PKG_SHA256="ef56c01a8b0052204c99b56039fa5737b99e46d5b58a4a23fc54e910af68b140"
+PKG_VERSION="2f11e994f322f7376476b186293a3df34246b9a7"
+PKG_SHA256="7268c2900c5b893f331e471b31bfb214ff91473753b78211887247585bb82487"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv"
PKG_URL="https://github.com/xbmc/xbmc/archive/${PKG_VERSION}.tar.gz"
diff --git a/packages/mediacenter/kodi/patches/kodi-100.03-disable-online-check.patch b/packages/mediacenter/kodi/patches/kodi-100.03-disable-online-check.patch
index c36394da9d..6fef36b352 100644
--- a/packages/mediacenter/kodi/patches/kodi-100.03-disable-online-check.patch
+++ b/packages/mediacenter/kodi/patches/kodi-100.03-disable-online-check.patch
@@ -3,14 +3,14 @@ Subject: disable online check
---
--- a/xbmc/GUIInfoManager.cpp
+++ b/xbmc/GUIInfoManager.cpp
-@@ -1832,7 +1832,6 @@ const infomap system_labels[] = {{"hasne
- {"currentcontrol", SYSTEM_CURRENT_CONTROL},
- {"currentcontrolid", SYSTEM_CURRENT_CONTROL_ID},
- {"dvdlabel", SYSTEM_DVD_LABEL},
-- {"internetstate", SYSTEM_INTERNET_STATE},
- {"osversioninfo", SYSTEM_OS_VERSION_INFO},
- {"kernelversion", SYSTEM_OS_VERSION_INFO}, // old, not correct name
- {"uptime", SYSTEM_UPTIME},
+@@ -1840,7 +1840,6 @@ const infomap system_labels[] = {
+ {"currentcontrol", SYSTEM_CURRENT_CONTROL},
+ {"currentcontrolid", SYSTEM_CURRENT_CONTROL_ID},
+ {"dvdlabel", SYSTEM_DVD_LABEL},
+- {"internetstate", SYSTEM_INTERNET_STATE},
+ {"osversioninfo", SYSTEM_OS_VERSION_INFO},
+ {"kernelversion", SYSTEM_OS_VERSION_INFO}, // old, not correct name
+ {"uptime", SYSTEM_UPTIME},
--- a/xbmc/utils/SystemInfo.cpp
+++ b/xbmc/utils/SystemInfo.cpp
@@ -273,7 +273,6 @@ bool CSysInfoJob::DoWork()
diff --git a/packages/mediacenter/kodi/patches/kodi-100.06-dont-set-_NET_WM_STATE_FULLSCREEN.patch b/packages/mediacenter/kodi/patches/kodi-100.06-dont-set-_NET_WM_STATE_FULLSCREEN.patch
deleted file mode 100644
index 0bb748a682..0000000000
--- a/packages/mediacenter/kodi/patches/kodi-100.06-dont-set-_NET_WM_STATE_FULLSCREEN.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From c16e99234ce40f201e58a2595e6dfa0703cf554c Mon Sep 17 00:00:00 2001
-From: Stefan Saraev
-Date: Wed, 11 Mar 2015 20:56:15 +0200
-Subject: [PATCH 06/13] dont set _NET_WM_STATE_FULLSCREEN
-
-I dont remember why I added this. I guess it was for
-some 3rdparty stuff that needed to go fullscreen but
-xbmc was acting weird..
-
-this should probably be removed after OE 6
----
- xbmc/windowing/X11/WinSystemX11.cpp | 2 --
- 1 file changed, 2 deletions(-)
-
---- a/xbmc/windowing/X11/WinSystemX11.cpp
-+++ b/xbmc/windowing/X11/WinSystemX11.cpp
-@@ -764,8 +764,6 @@ bool CWinSystemX11::SetWindow(int width,
-
- if (fullscreen && hasWM)
- {
-- Atom fs = XInternAtom(m_dpy, "_NET_WM_STATE_FULLSCREEN", True);
-- XChangeProperty(m_dpy, m_mainWindow, XInternAtom(m_dpy, "_NET_WM_STATE", True), XA_ATOM, 32, PropModeReplace, (unsigned char *) &fs, 1);
- // disable desktop compositing for KDE, when Kodi is in full-screen mode
- int one = 1;
- Atom composite = XInternAtom(m_dpy, "_KDE_NET_WM_BLOCK_COMPOSITING", True);
diff --git a/packages/mediacenter/kodi/patches/kodi-100.07-disable-minimize.patch b/packages/mediacenter/kodi/patches/kodi-100.07-disable-minimize.patch
index 2118ebb705..b990626e55 100644
--- a/packages/mediacenter/kodi/patches/kodi-100.07-disable-minimize.patch
+++ b/packages/mediacenter/kodi/patches/kodi-100.07-disable-minimize.patch
@@ -9,7 +9,7 @@ Subject: [PATCH 07/13] disable minimize
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
-@@ -2090,7 +2090,6 @@ void CApplication::OnApplicationMessage(
+@@ -2092,7 +2092,6 @@ void CApplication::OnApplicationMessage(
break;
case TMSG_MINIMIZE:
diff --git a/packages/mediacenter/kodi/patches/kodi-100.09-use-a-wrapper-to-setup-service-addons.patch b/packages/mediacenter/kodi/patches/kodi-100.09-use-a-wrapper-to-setup-service-addons.patch
index d80f0b27e2..6b23650cc5 100644
--- a/packages/mediacenter/kodi/patches/kodi-100.09-use-a-wrapper-to-setup-service-addons.patch
+++ b/packages/mediacenter/kodi/patches/kodi-100.09-use-a-wrapper-to-setup-service-addons.patch
@@ -76,7 +76,7 @@
public:
--- a/xbmc/addons/AddonManager.cpp
+++ b/xbmc/addons/AddonManager.cpp
-@@ -839,6 +839,7 @@ bool CAddonMgr::DisableAddon(const std::
+@@ -840,6 +840,7 @@ bool CAddonMgr::DisableAddon(const std::
AddonPtr addon;
if (GetAddon(id, addon, ADDON_UNKNOWN, OnlyEnabled::CHOICE_NO) && addon != NULL)
{
@@ -84,7 +84,7 @@
auto eventLog = CServiceBroker::GetEventLog();
if (eventLog)
eventLog->Add(EventPtr(new CAddonManagementEvent(addon, 24141)));
-@@ -890,6 +891,7 @@ bool CAddonMgr::EnableSingle(const std::
+@@ -891,6 +892,7 @@ bool CAddonMgr::EnableSingle(const std::
if (!m_database.EnableAddon(id))
return false;
m_disabled.erase(id);
diff --git a/packages/mediacenter/kodi/patches/kodi-100.10-handle-SIGTERM.patch b/packages/mediacenter/kodi/patches/kodi-100.10-handle-SIGTERM.patch
index 20f1f88d83..581511c582 100644
--- a/packages/mediacenter/kodi/patches/kodi-100.10-handle-SIGTERM.patch
+++ b/packages/mediacenter/kodi/patches/kodi-100.10-handle-SIGTERM.patch
@@ -1,6 +1,6 @@
-From a4632124ca32374fd1ab728f30be9aaa79186ba5 Mon Sep 17 00:00:00 2001
+From e658546b32da44813c3a9913fc55c71e1e946b13 Mon Sep 17 00:00:00 2001
From: MilhouseVH
-Date: Tue, 19 Mar 2019 18:06:56 +0000
+Date: Thu, 10 Mar 2022 23:20:09 +0100
Subject: [PATCH] handle SIGTERM
0. CApplication::Stop cant be trusted. (deadlocks crashes and boo)
@@ -15,22 +15,22 @@ so, when shutdown/reboot is requested:
6. addons / pvrmanager / cec / everything else.. are free to deadlock / crash now, we dont care
7. KILL
---
- xbmc/Application.cpp | 23 ++++++++++++++-----
+ xbmc/Application.cpp | 24 ++++++++++++++-----
xbmc/Application.h | 1 +
xbmc/XBApplicationEx.cpp | 1 +
xbmc/XBApplicationEx.h | 1 +
.../powermanagement/LogindUPowerSyscall.cpp | 2 --
- 5 files changed, 20 insertions(+), 8 deletions(-)
+ 5 files changed, 21 insertions(+), 8 deletions(-)
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
-@@ -1966,12 +1966,12 @@ void CApplication::OnApplicationMessage(
+@@ -1968,12 +1968,12 @@ void CApplication::OnApplicationMessage(
switch (msg)
{
case TMSG_POWERDOWN:
-- Stop(EXITCODE_POWERDOWN);
-+ SetExitCode(EXITCODE_POWERDOWN);
- CServiceBroker::GetPowerManager().Powerdown();
+- if (Stop(EXITCODE_POWERDOWN))
++ if (SetExitCode(EXITCODE_POWERDOWN))
+ CServiceBroker::GetPowerManager().Powerdown();
break;
case TMSG_QUIT:
@@ -39,13 +39,13 @@ so, when shutdown/reboot is requested:
break;
case TMSG_SHUTDOWN:
-@@ -1992,12 +1992,13 @@ void CApplication::OnApplicationMessage(
+@@ -1994,12 +1994,13 @@ void CApplication::OnApplicationMessage(
case TMSG_RESTART:
case TMSG_RESET:
-- Stop(EXITCODE_REBOOT);
-+ SetExitCode(EXITCODE_REBOOT);
- CServiceBroker::GetPowerManager().Reboot();
+- if (Stop(EXITCODE_REBOOT))
++ if (SetExitCode(EXITCODE_REBOOT))
+ CServiceBroker::GetPowerManager().Reboot();
break;
case TMSG_RESTARTAPP:
@@ -54,25 +54,7 @@ so, when shutdown/reboot is requested:
Stop(EXITCODE_RESTARTAPP);
#endif
break;
-@@ -2491,6 +2492,17 @@ bool CApplication::Cleanup()
- }
- }
-
-+void CApplication::SetExitCode(int exitCode)
-+{
-+ if (!m_ExitCodeSet)
-+ {
-+ CLog::Log(LOGINFO, "Saving exitCode %d", exitCode);
-+ // save it for CEC
-+ m_ExitCode = exitCode;
-+ m_ExitCodeSet = true;
-+ }
-+}
-+
- void CApplication::Stop(int exitCode)
- {
- CLog::Log(LOGINFO, "Stopping player");
-@@ -2517,7 +2529,7 @@ void CApplication::Stop(int exitCode)
+@@ -2530,7 +2531,7 @@ bool CApplication::Stop(int exitCode)
m_frameMoveGuard.unlock();
CVariant vExitCode(CVariant::VariantTypeObject);
@@ -81,7 +63,7 @@ so, when shutdown/reboot is requested:
CServiceBroker::GetAnnouncementManager()->Announce(ANNOUNCEMENT::System, "OnQuit", vExitCode);
// Abort any active screensaver
-@@ -2549,7 +2561,6 @@ void CApplication::Stop(int exitCode)
+@@ -2562,7 +2563,6 @@ bool CApplication::Stop(int exitCode)
// Needs cleaning up
CApplicationMessenger::GetInstance().Stop();
m_AppFocused = false;
@@ -89,7 +71,26 @@ so, when shutdown/reboot is requested:
CLog::Log(LOGINFO, "Stopping all");
// cancel any jobs from the jobmanager
-@@ -4199,7 +4210,7 @@ void CApplication::ProcessSlow()
+@@ -3149,6 +3149,18 @@ void CApplication::OnQueueNextItem()
+ CServiceBroker::GetGUI()->GetWindowManager().SendThreadMessage(msg);
+ }
+
++bool CApplication::SetExitCode(int exitCode)
++{
++ if (!m_ExitCodeSet)
++ {
++ CLog::Log(LOGINFO, "Saving exitCode {}", exitCode);
++ // save it for CEC
++ m_ExitCode = exitCode;
++ m_ExitCodeSet = true;
++ }
++ return true;
++}
++
+ void CApplication::OnPlayBackStopped()
+ {
+ CLog::LogF(LOGDEBUG, "CApplication::OnPlayBackStopped");
+@@ -4215,7 +4227,7 @@ void CApplication::ProcessSlow()
if (CPlatformPosix::TestQuitFlag())
{
CLog::Log(LOGINFO, "Quitting due to POSIX signal");
@@ -104,8 +105,8 @@ so, when shutdown/reboot is requested:
bool InitWindow(RESOLUTION res = RES_INVALID);
bool IsCurrentThread() const;
-+ void SetExitCode(int exitCode);
- void Stop(int exitCode);
++ bool SetExitCode(int exitCode);
+ bool Stop(int exitCode);
void UnloadSkin();
bool LoadCustomWindows();
--- a/xbmc/XBApplicationEx.cpp
diff --git a/packages/mediacenter/kodi/patches/kodi-100.15-rename-default-pulse-device.patch b/packages/mediacenter/kodi/patches/kodi-100.15-rename-default-pulse-device.patch
index 51948a85fd..ecf038710a 100644
--- a/packages/mediacenter/kodi/patches/kodi-100.15-rename-default-pulse-device.patch
+++ b/packages/mediacenter/kodi/patches/kodi-100.15-rename-default-pulse-device.patch
@@ -10,7 +10,7 @@ Subject: [PATCH] [PATCH] change pulseaudio default device name to Bluetooth
--- a/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp
-@@ -489,7 +489,7 @@ static void SinkInfoRequestCallback(pa_c
+@@ -491,7 +491,7 @@ static void SinkInfoRequestCallback(pa_c
CAEDeviceInfo defaultDevice;
defaultDevice.m_deviceName = std::string("Default");
defaultDevice.m_displayName = std::string("Default");
@@ -19,7 +19,7 @@ Subject: [PATCH] [PATCH] change pulseaudio default device name to Bluetooth
defaultDevice.m_dataFormats.insert(defaultDevice.m_dataFormats.end(),
defaultDataFormats.begin(), defaultDataFormats.end());
defaultDevice.m_channels = CAEChannelInfo(AE_CH_LAYOUT_2_0);
-@@ -497,6 +497,8 @@ static void SinkInfoRequestCallback(pa_c
+@@ -499,6 +499,8 @@ static void SinkInfoRequestCallback(pa_c
defaultDevice.m_deviceType = AE_DEVTYPE_PCM;
defaultDevice.m_wantsIECPassthrough = true;
sinkStruct->list->push_back(defaultDevice);
diff --git a/packages/mediacenter/kodi/patches/kodi-995.01-fix-missing-wayland-scanner-pkg-config.patch b/projects/Generic/devices/wayland/patches/kodi/kodi-995.01-fix-missing-wayland-scanner-pkg-config.patch
similarity index 100%
rename from packages/mediacenter/kodi/patches/kodi-995.01-fix-missing-wayland-scanner-pkg-config.patch
rename to projects/Generic/devices/wayland/patches/kodi/kodi-995.01-fix-missing-wayland-scanner-pkg-config.patch
diff --git a/packages/mediacenter/kodi/patches/kodi-999.16-PR20632-base-m_bFullScreenRoot-setting-on-res-infos-bFullScreen.patch b/projects/Generic/devices/wayland/patches/kodi/kodi-999.16-PR20632-base-m_bFullScreenRoot-setting-on-res-infos-bFullScreen.patch
similarity index 97%
rename from packages/mediacenter/kodi/patches/kodi-999.16-PR20632-base-m_bFullScreenRoot-setting-on-res-infos-bFullScreen.patch
rename to projects/Generic/devices/wayland/patches/kodi/kodi-999.16-PR20632-base-m_bFullScreenRoot-setting-on-res-infos-bFullScreen.patch
index 3497ad526a..a6cf72c967 100644
--- a/packages/mediacenter/kodi/patches/kodi-999.16-PR20632-base-m_bFullScreenRoot-setting-on-res-infos-bFullScreen.patch
+++ b/projects/Generic/devices/wayland/patches/kodi/kodi-999.16-PR20632-base-m_bFullScreenRoot-setting-on-res-infos-bFullScreen.patch
@@ -23,7 +23,7 @@ Fixes: #20629
--- a/xbmc/windowing/GraphicContext.cpp
+++ b/xbmc/windowing/GraphicContext.cpp
-@@ -409,7 +409,7 @@ void CGraphicContext::SetVideoResolution
+@@ -410,7 +410,7 @@ void CGraphicContext::SetVideoResolution
return;
}
diff --git a/packages/mediacenter/kodi/patches/kodi-100.12-prevent-kodi-switching-to-windowed-mode.patch b/projects/Generic/devices/x11/patches/kodi/kodi-100.12-prevent-kodi-switching-to-windowed-mode.patch
similarity index 100%
rename from packages/mediacenter/kodi/patches/kodi-100.12-prevent-kodi-switching-to-windowed-mode.patch
rename to projects/Generic/devices/x11/patches/kodi/kodi-100.12-prevent-kodi-switching-to-windowed-mode.patch