Skip to content

Commit

Permalink
Merge remote-tracking branch 'fetzerch/pvr-announce' into pvrapi_1_7_…
Browse files Browse the repository at this point in the history
…0. Github issue #2250
  • Loading branch information
opdenkamp committed Mar 6, 2013
2 parents 07e6c47 + d026e7d commit 79773eb
Show file tree
Hide file tree
Showing 15 changed files with 102 additions and 1 deletion.
24 changes: 23 additions & 1 deletion xbmc/addons/AddonDll.h
Expand Up @@ -29,13 +29,15 @@
#include "filesystem/SpecialProtocol.h"
#include "filesystem/Directory.h"
#include "utils/log.h"
#include "interfaces/IAnnouncer.h"
#include "interfaces/AnnouncementManager.h"

using namespace XFILE;

namespace ADDON
{
template<class TheDll, typename TheStruct, typename TheProps>
class CAddonDll : public CAddon
class CAddonDll : public CAddon, public ANNOUNCEMENT::IAnnouncer
{
public:
CAddonDll(const AddonProps &props);
Expand All @@ -55,6 +57,8 @@ namespace ADDON

bool DllLoaded(void) const;

void Announce(ANNOUNCEMENT::AnnouncementFlag flag, const char *sender, const char *message, const CVariant &data);

protected:
void HandleException(std::exception &e, const char* context);
bool Initialized() { return m_initialized; }
Expand Down Expand Up @@ -220,7 +224,10 @@ ADDON_STATUS CAddonDll<TheDll, TheStruct, TheProps>::Create()
{
status = m_pDll->Create(m_pHelpers->GetCallbacks(), m_pInfo);
if (status == ADDON_STATUS_OK)
{
m_initialized = true;
ANNOUNCEMENT::CAnnouncementManager::AddAnnouncer(this);
}
else if ((status == ADDON_STATUS_NEED_SETTINGS) || (status == ADDON_STATUS_NEED_SAVEDSETTINGS))
{
m_needsavedsettings = (status == ADDON_STATUS_NEED_SAVEDSETTINGS);
Expand Down Expand Up @@ -285,6 +292,8 @@ void CAddonDll<TheDll, TheStruct, TheProps>::Stop()
template<class TheDll, typename TheStruct, typename TheProps>
void CAddonDll<TheDll, TheStruct, TheProps>::Destroy()
{
ANNOUNCEMENT::CAnnouncementManager::RemoveAnnouncer(this);

/* Unload library file */
try
{
Expand Down Expand Up @@ -520,6 +529,19 @@ ADDON_STATUS CAddonDll<TheDll, TheStruct, TheProps>::TransferSettings()
return ADDON_STATUS_OK;
}

template<class TheDll, typename TheStruct, typename TheProps>
void CAddonDll<TheDll, TheStruct, TheProps>::Announce(ANNOUNCEMENT::AnnouncementFlag flag, const char *sender, const char *message, const CVariant &data)
{
try
{
m_pDll->Announce(ANNOUNCEMENT::AnnouncementFlagToString(flag), sender, message, &data);
}
catch (std::exception &e)
{
HandleException(e, "m_pDll->Announce()");
}
}

template<class TheDll, typename TheStruct, typename TheProps>
void CAddonDll<TheDll, TheStruct, TheProps>::HandleException(std::exception &e, const char* context)
{
Expand Down
3 changes: 3 additions & 0 deletions xbmc/addons/DllAddon.h
Expand Up @@ -36,6 +36,7 @@ class DllAddonInterface
virtual unsigned int GetSettings(ADDON_StructSetting*** sSet)=0;
virtual void FreeSettings()=0;
virtual ADDON_STATUS SetSetting(const char *settingName, const void *settingValue) =0;
virtual void Announce(const char *flag, const char *sender, const char *message, const void *data) =0;
};

template <typename TheStruct, typename Props>
Expand All @@ -52,6 +53,7 @@ class DllAddon : public DllDynamic, public DllAddonInterface<TheStruct, Props>
DEFINE_METHOD0(void, FreeSettings)
DEFINE_METHOD2(ADDON_STATUS, SetSetting, (const char *p1, const void *p2))
DEFINE_METHOD1(void, GetAddon, (TheStruct* p1))
DEFINE_METHOD4(void, Announce, (const char *p1, const char *p2, const char *p3, const void *p4))
BEGIN_METHOD_RESOLVE()
RESOLVE_METHOD_RENAME(get_addon,GetAddon)
RESOLVE_METHOD_RENAME(ADDON_Create, Create)
Expand All @@ -62,6 +64,7 @@ class DllAddon : public DllDynamic, public DllAddonInterface<TheStruct, Props>
RESOLVE_METHOD_RENAME(ADDON_SetSetting, SetSetting)
RESOLVE_METHOD_RENAME(ADDON_GetSettings, GetSettings)
RESOLVE_METHOD_RENAME(ADDON_FreeSettings, FreeSettings)
RESOLVE_METHOD_RENAME(ADDON_Announce, Announce)
END_METHOD_RESOLVE()
};

1 change: 1 addition & 0 deletions xbmc/addons/include/xbmc_addon_dll.h
Expand Up @@ -46,6 +46,7 @@ extern "C" {
unsigned int __declspec(dllexport) ADDON_GetSettings(ADDON_StructSetting ***sSet);
ADDON_STATUS __declspec(dllexport) ADDON_SetSetting(const char *settingName, const void *settingValue);
void __declspec(dllexport) ADDON_FreeSettings();
void __declspec(dllexport) ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data);

#ifdef __cplusplus
};
Expand Down
4 changes: 4 additions & 0 deletions xbmc/screensavers/rsxs-0.9/src/euphoria/euphoria.cc
Expand Up @@ -460,6 +460,10 @@ void ADDON_FreeSettings()
{
}

void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
{
}

void GetInfo(SCR_INFO *info)
{
}
Expand Down
4 changes: 4 additions & 0 deletions xbmc/screensavers/rsxs-0.9/src/plasma/plasma.cc
Expand Up @@ -381,6 +381,10 @@ void ADDON_FreeSettings()
{
}

void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
{
}

void GetInfo(SCR_INFO *info)
{
}
Expand Down
4 changes: 4 additions & 0 deletions xbmc/screensavers/rsxs-0.9/src/solarwinds/solarwinds.cc
Expand Up @@ -315,6 +315,10 @@ void ADDON_FreeSettings()
{
}

void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
{
}

void GetInfo(SCR_INFO *info)
{
}
Expand Down
7 changes: 7 additions & 0 deletions xbmc/visualizations/DirectXSpectrum/directx_spectrum.cpp
Expand Up @@ -463,3 +463,10 @@ extern "C" ADDON_STATUS ADDON_SetSetting(const char *strSetting, const void* val
return ADDON_STATUS_UNKNOWN;
}

//-- Announce -----------------------------------------------------------------
// Receive announcements from XBMC
//-----------------------------------------------------------------------------

extern "C" void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
{
}
8 changes: 8 additions & 0 deletions xbmc/visualizations/Goom/Main.cpp
Expand Up @@ -299,3 +299,11 @@ extern "C" ADDON_STATUS ADDON_SetSetting(const char *strSetting, const void* val
{
return ADDON_STATUS_OK;
}

//-- Announce -----------------------------------------------------------------
// Receive announcements from XBMC
// !!! Add-on master function !!!
//-----------------------------------------------------------------------------
extern "C" void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
{
}
8 changes: 8 additions & 0 deletions xbmc/visualizations/Milkdrop/MilkdropXBMC.cpp
Expand Up @@ -342,6 +342,14 @@ extern "C" ADDON_STATUS ADDON_SetSetting(const char* id, const void* value)
return ADDON_STATUS_OK;
}

//-- Announce -----------------------------------------------------------------
// Receive announcements from XBMC
//-----------------------------------------------------------------------------

extern "C" void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
{
}

//-- GetSubModules ------------------------------------------------------------
// Return any sub modules supported by this vis
//-----------------------------------------------------------------------------
Expand Down
7 changes: 7 additions & 0 deletions xbmc/visualizations/OpenGLSpectrum/opengl_spectrum.cpp
Expand Up @@ -599,3 +599,10 @@ extern "C" ADDON_STATUS ADDON_SetSetting(const char *strSetting, const void* val
return ADDON_STATUS_UNKNOWN;
}

//-- Announce -----------------------------------------------------------------
// Receive announcements from XBMC
// !!! Add-on master function !!!
//-----------------------------------------------------------------------------
extern "C" void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
{
}
7 changes: 7 additions & 0 deletions xbmc/visualizations/Vortex/VortexXBMC/VortexXBMC.cpp
Expand Up @@ -238,3 +238,10 @@ extern "C" unsigned int GetSubModules(char ***presets)
{
return 0; // this vis supports 0 sub modules
}

//-- Announce -----------------------------------------------------------------
// Receive announcements from XBMC
//-----------------------------------------------------------------------------
extern "C" void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
{
}
7 changes: 7 additions & 0 deletions xbmc/visualizations/WaveForm/Main.cpp
Expand Up @@ -297,3 +297,10 @@ extern "C" ADDON_STATUS ADDON_SetSetting(const char *strSetting, const void* val
return ADDON_STATUS_OK;
}

//-- Announce -----------------------------------------------------------------
// Receive announcements from XBMC
// !!! Add-on master function !!!
//-----------------------------------------------------------------------------
extern "C" void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
{
}
8 changes: 8 additions & 0 deletions xbmc/visualizations/WaveForm/Main_gles.cpp
Expand Up @@ -327,3 +327,11 @@ extern "C" ADDON_STATUS ADDON_SetSetting(const char *strSetting, const void* val
// return ADDON_STATUS_OK;
return ADDON_STATUS_UNKNOWN;
}

//-- Announce -----------------------------------------------------------------
// Receive announcements from XBMC
// !!! Add-on master function !!!
//-----------------------------------------------------------------------------
extern "C" void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
{
}
7 changes: 7 additions & 0 deletions xbmc/visualizations/XBMCProjectM/Main.cpp
Expand Up @@ -449,3 +449,10 @@ extern "C" unsigned int GetSubModules(char ***names)
{
return 0; // this vis supports 0 sub modules
}

//-- Announce -----------------------------------------------------------------
// Receive announcements from XBMC
//-----------------------------------------------------------------------------
extern "C" void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
{
}
4 changes: 4 additions & 0 deletions xbmc/visualizations/fishBMC/fishbmc_addon.cpp
Expand Up @@ -372,3 +372,7 @@ extern "C" ADDON_STATUS ADDON_SetSetting (const char *strSetting, const void* va

return ADDON_STATUS_OK;
}

extern "C" void ADDON_Announce(const char *flag, const char *sender, const char *message, const void *data)
{
}

0 comments on commit 79773eb

Please sign in to comment.