aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartijn Kaijser <martijn@xbmc.org>2018-10-28 12:06:41 +0100
committerGitHub <noreply@github.com>2018-10-28 12:06:41 +0100
commit8f4f89c40a045686b4a582f73a3173fb0c3eed15 (patch)
treeb3dabf3a3aeeb79fa0f282b15ae102ae26867704
parent77bafbd0241750cb403b61c4de896939797704a6 (diff)
parent333ca47f8ba2699a31cead096015a446c0961777 (diff)
Merge pull request #14702 from garbear/ignore-broken-addons
Addons: Don't consider broken add-ons installable
-rw-r--r--xbmc/addons/AddonInstaller.cpp2
-rw-r--r--xbmc/addons/AddonManager.cpp2
-rw-r--r--xbmc/addons/GUIDialogAddonInfo.cpp2
-rw-r--r--xbmc/addons/GUIWindowAddonBrowser.cpp2
-rw-r--r--xbmc/addons/IAddon.h4
-rw-r--r--xbmc/filesystem/AddonsDirectory.cpp2
-rw-r--r--xbmc/interfaces/json-rpc/AddonsOperations.cpp2
7 files changed, 9 insertions, 7 deletions
diff --git a/xbmc/addons/AddonInstaller.cpp b/xbmc/addons/AddonInstaller.cpp
index 23e3419994..28bce5c1e9 100644
--- a/xbmc/addons/AddonInstaller.cpp
+++ b/xbmc/addons/AddonInstaller.cpp
@@ -641,7 +641,7 @@ bool CAddonInstallJob::DoWork()
CServiceBroker::GetEventLog().Add(
EventPtr(new CAddonManagementEvent(m_addon, m_isUpdate ? 24065 : 24084)), notify, false);
- if (m_isAutoUpdate && !m_addon->Broken().empty())
+ if (m_isAutoUpdate && m_addon->IsBroken())
{
CLog::Log(LOGDEBUG, "CAddonInstallJob[%s]: auto-disabling due to being marked as broken", m_addon->ID().c_str());
CServiceBroker::GetAddonMgr().DisableAddon(m_addon->ID());
diff --git a/xbmc/addons/AddonManager.cpp b/xbmc/addons/AddonManager.cpp
index ef662d3f30..b4382b3c59 100644
--- a/xbmc/addons/AddonManager.cpp
+++ b/xbmc/addons/AddonManager.cpp
@@ -945,7 +945,7 @@ bool CAddonMgr::IsAddonInstalled(const std::string& ID)
bool CAddonMgr::CanAddonBeInstalled(const AddonPtr& addon)
{
- return addon != nullptr &&!IsAddonInstalled(addon->ID());
+ return addon != nullptr && !addon->IsBroken() && !IsAddonInstalled(addon->ID());
}
bool CAddonMgr::CanUninstall(const AddonPtr& addon)
diff --git a/xbmc/addons/GUIDialogAddonInfo.cpp b/xbmc/addons/GUIDialogAddonInfo.cpp
index 30590af45a..00c44ec16c 100644
--- a/xbmc/addons/GUIDialogAddonInfo.cpp
+++ b/xbmc/addons/GUIDialogAddonInfo.cpp
@@ -161,7 +161,7 @@ void CGUIDialogAddonInfo::UpdateControls()
bool isInstalled = NULL != m_localAddon.get();
m_addonEnabled = m_localAddon && !CServiceBroker::GetAddonMgr().IsAddonDisabled(m_localAddon->ID());
bool canDisable = isInstalled && CServiceBroker::GetAddonMgr().CanAddonBeDisabled(m_localAddon->ID());
- bool canInstall = !isInstalled && m_item->GetAddonInfo()->Broken().empty();
+ bool canInstall = !isInstalled && !m_item->GetAddonInfo()->IsBroken();
bool canUninstall = m_localAddon && CServiceBroker::GetAddonMgr().CanUninstall(m_localAddon);
CONTROL_ENABLE_ON_CONDITION(CONTROL_BTN_INSTALL, canInstall || canUninstall);
diff --git a/xbmc/addons/GUIWindowAddonBrowser.cpp b/xbmc/addons/GUIWindowAddonBrowser.cpp
index 498be38210..3d5a85fbab 100644
--- a/xbmc/addons/GUIWindowAddonBrowser.cpp
+++ b/xbmc/addons/GUIWindowAddonBrowser.cpp
@@ -290,7 +290,7 @@ bool CGUIWindowAddonBrowser::GetDirectory(const std::string& strDirectory, CFile
{
for (int i = items.Size() - 1; i >= 0; i--)
{
- if (items[i]->GetAddonInfo() && !items[i]->GetAddonInfo()->Broken().empty())
+ if (items[i]->GetAddonInfo() && items[i]->GetAddonInfo()->IsBroken())
{
//check if it's installed
AddonPtr addon;
diff --git a/xbmc/addons/IAddon.h b/xbmc/addons/IAddon.h
index 41ffec16b5..fd02b1ef84 100644
--- a/xbmc/addons/IAddon.h
+++ b/xbmc/addons/IAddon.h
@@ -82,6 +82,8 @@ namespace ADDON
virtual void OnPostInstall(bool update, bool modal) =0;
virtual void OnPreUnInstall() =0;
virtual void OnPostUnInstall() =0;
+
+ // Derived property
+ bool IsBroken() const { return !Broken().empty(); }
};
};
-
diff --git a/xbmc/filesystem/AddonsDirectory.cpp b/xbmc/filesystem/AddonsDirectory.cpp
index 46326cf292..544128b444 100644
--- a/xbmc/filesystem/AddonsDirectory.cpp
+++ b/xbmc/filesystem/AddonsDirectory.cpp
@@ -798,7 +798,7 @@ void CAddonsDirectory::GenerateAddonListing(const CURL &path,
pItem->SetProperty("Addon.Status", g_localizeStrings.Get(24023));
if (hasUpdate)
pItem->SetProperty("Addon.Status", g_localizeStrings.Get(24068));
- else if (!addon->Broken().empty())
+ else if (addon->IsBroken())
pItem->SetProperty("Addon.Status", g_localizeStrings.Get(24098));
items.Add(pItem);
diff --git a/xbmc/interfaces/json-rpc/AddonsOperations.cpp b/xbmc/interfaces/json-rpc/AddonsOperations.cpp
index 1155c5a644..f110fa99a6 100644
--- a/xbmc/interfaces/json-rpc/AddonsOperations.cpp
+++ b/xbmc/interfaces/json-rpc/AddonsOperations.cpp
@@ -233,7 +233,7 @@ static CVariant Serialize(const AddonPtr& addon)
info["optional"] = dep.optional;
variant["dependencies"].push_back(std::move(info));
}
- if (addon->Broken().empty())
+ if (addon->IsBroken())
variant["broken"] = false;
else
variant["broken"] = addon->Broken();