Skip to content

Commit

Permalink
Merge pull request #12905 from ksooo/pvr-addon-events
Browse files Browse the repository at this point in the history
[PVR] Handle addon enabled|disabled via CAddonMgr events. …
  • Loading branch information
ksooo committed Oct 11, 2017
2 parents cddbeec + 1665b93 commit a10da67
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 45 deletions.
10 changes: 0 additions & 10 deletions xbmc/addons/Addon.cpp
Expand Up @@ -393,16 +393,6 @@ AddonVersion CAddon::GetDependencyVersion(const std::string &dependencyID) const
return AddonVersion("0.0.0");
}

void OnEnabled(const AddonPtr& addon)
{
addon->OnEnabled();
}

void OnDisabled(const AddonPtr& addon)
{
addon->OnDisabled();
}

void OnPreInstall(const AddonPtr& addon)
{
//Fallback to the pre-install callback in the addon.
Expand Down
20 changes: 4 additions & 16 deletions xbmc/addons/Addon.h
Expand Up @@ -36,12 +36,10 @@ namespace ADDON

const char* const ORIGIN_SYSTEM = "b6a50484-93a0-4afb-a01c-8d17e059feda";

void OnEnabled(const AddonPtr& addon);
void OnDisabled(const AddonPtr& addon);
void OnPreInstall(const AddonPtr& addon);
void OnPostInstall(const AddonPtr& addon, bool update, bool modal);
void OnPreUnInstall(const AddonPtr& addon);
void OnPostUnInstall(const AddonPtr& addon);
void OnPreInstall(const AddonPtr& addon);
void OnPostInstall(const AddonPtr& addon, bool update, bool modal);
void OnPreUnInstall(const AddonPtr& addon);
void OnPostUnInstall(const AddonPtr& addon);

class CAddon : public IAddon
{
Expand Down Expand Up @@ -194,16 +192,6 @@ class CAddon : public IAddon
bool MeetsVersion(const AddonVersion &version) const override { return m_addonInfo.MeetsVersion(version); }
bool ReloadSettings() override;

/*! \brief callback for when this add-on is disabled.
Use to perform any needed actions (e.g. stop a service)
*/
void OnDisabled() override {};

/*! \brief callback for when this add-on is enabled.
Use to perform any needed actions (e.g. start a service)
*/
void OnEnabled() override {};

/*! \brief retrieve the running instance of an add-on if it persists while running.
*/
AddonPtr GetRunningInstance() const override { return AddonPtr(); }
Expand Down
2 changes: 0 additions & 2 deletions xbmc/addons/AddonManager.cpp
Expand Up @@ -836,7 +836,6 @@ bool CAddonMgr::DisableAddon(const std::string& id)
AddonPtr addon;
if (GetAddon(id, addon, ADDON_UNKNOWN, false) && addon != NULL)
{
ADDON::OnDisabled(addon);
CEventLog::GetInstance().Add(EventPtr(new CAddonManagementEvent(addon, 24141)));
}

Expand Down Expand Up @@ -865,7 +864,6 @@ bool CAddonMgr::EnableSingle(const std::string& id)
if (!m_database.DisableAddon(id, false))
return false;
m_disabled.erase(id);
ADDON::OnEnabled(addon);

CEventLog::GetInstance().Add(EventPtr(new CAddonManagementEvent(addon, 24064)));

Expand Down
2 changes: 0 additions & 2 deletions xbmc/addons/IAddon.h
Expand Up @@ -89,8 +89,6 @@ namespace ADDON
virtual AddonVersion GetDependencyVersion(const std::string &dependencyID) const =0;
virtual bool MeetsVersion(const AddonVersion &version) const =0;
virtual bool ReloadSettings() =0;
virtual void OnDisabled() =0;
virtual void OnEnabled() =0;
virtual AddonPtr GetRunningInstance() const=0;
virtual void OnPreInstall() =0;
virtual void OnPostInstall(bool update, bool modal) =0;
Expand Down
12 changes: 0 additions & 12 deletions xbmc/addons/PVRClient.cpp
Expand Up @@ -69,18 +69,6 @@ CPVRClient::~CPVRClient(void)
Destroy();
}

void CPVRClient::OnDisabled()
{
CAddon::OnDisabled();
CServiceBroker::GetPVRManager().Clients()->UpdateAddons();
}

void CPVRClient::OnEnabled()
{
CAddon::OnEnabled();
CServiceBroker::GetPVRManager().Clients()->UpdateAddons();
}

void CPVRClient::StopRunningInstance()
{
const ADDON::AddonPtr addon(GetRunningInstance());
Expand Down
2 changes: 0 additions & 2 deletions xbmc/addons/PVRClient.h
Expand Up @@ -211,8 +211,6 @@ namespace PVR
explicit CPVRClient(ADDON::CAddonInfo addonInfo);
~CPVRClient(void) override;

void OnDisabled() override;
void OnEnabled() override;
void OnPreInstall() override;
void OnPostInstall(bool update, bool modal) override;
void OnPreUnInstall() override;
Expand Down
12 changes: 11 additions & 1 deletion xbmc/pvr/addons/PVRClients.cpp
Expand Up @@ -57,14 +57,15 @@ CPVRClients::CPVRClients(void) :

CPVRClients::~CPVRClients(void)
{
CServiceBroker::GetAddonMgr().Events().Unsubscribe(this);
CServiceBroker::GetAddonMgr().UnregisterAddonMgrCallback(ADDON_PVRDLL);
Unload();
}

void CPVRClients::Start(void)
{
CServiceBroker::GetAddonMgr().RegisterAddonMgrCallback(ADDON_PVRDLL, this);

CServiceBroker::GetAddonMgr().Events().Subscribe(this, &CPVRClients::OnAddonEvent);
UpdateAddons();
}

Expand Down Expand Up @@ -1458,3 +1459,12 @@ void CPVRClients::OnPowerSavingDeactivated()
for (auto &client : clients)
client.second->OnPowerSavingDeactivated();
}

void CPVRClients::OnAddonEvent(const AddonEvent& event)
{
if (typeid(event) == typeid(AddonEvents::Enabled) ||
typeid(event) == typeid(AddonEvents::Disabled))
{
UpdateAddons();
}
}
11 changes: 11 additions & 0 deletions xbmc/pvr/addons/PVRClients.h
Expand Up @@ -30,6 +30,11 @@
#include "pvr/channels/PVRChannel.h"
#include "pvr/recordings/PVRRecording.h"

namespace ADDON
{
struct AddonEvent;
}

namespace PVR
{
class CPVREpg;
Expand Down Expand Up @@ -706,6 +711,12 @@ namespace PVR
void OnPowerSavingActivated();
void OnPowerSavingDeactivated();

/*!
* @brief Handle addon events (enable, disable, ...).
* @param event The addon event.
*/
void OnAddonEvent(const ADDON::AddonEvent& event);

private:
/*!
* @brief Get the instance of the client.
Expand Down

0 comments on commit a10da67

Please sign in to comment.