void CPVRManager::SetState(ManagerState state)
{
- CSingleLock lock(m_managerStateMutex);
- m_managerState = state;
+ {
+ CSingleLock lock(m_managerStateMutex);
+ m_managerState = state;
+ SetChanged();
+ }
+
+ NotifyObservers(ObservableMessageManagerStateChanged);
}
void CPVRManager::Process(void)
#include "threads/Event.h"
#include "threads/Thread.h"
#include "utils/JobManager.h"
+#include "utils/Observer.h"
class CGUIDialogProgressBarHandle;
class CStopWatch;
typedef boost::shared_ptr<PVR::CPVRChannelGroup> CPVRChannelGroupPtr;
- class CPVRManager : public ISettingCallback, private CThread
+ class CPVRManager : public ISettingCallback, private CThread, public Observable
{
friend class CPVRClients;
CPVRChannelGroupInternal::~CPVRChannelGroupInternal(void)
{
Unload();
+ g_PVRManager.UnregisterObserver(this);
}
bool CPVRChannelGroupInternal::Load(void)
if (CPVRChannelGroup::Load())
{
UpdateChannelPaths();
- g_PVRManager.TriggerEpgsCreate();
+ g_PVRManager.RegisterObserver(this);
+
return true;
}
return true;
}
+
+void CPVRChannelGroupInternal::Notify(const Observable &obs, const ObservableMessage msg)
+{
+ if (msg == ObservableMessageManagerStateChanged)
+ {
+ g_PVRManager.TriggerEpgsCreate();
+ }
+}
*/
#include "PVRChannelGroup.h"
+#include "utils/Observer.h"
namespace PVR
{
/** XBMC's internal group, the group containing all channels */
- class CPVRChannelGroupInternal : public CPVRChannelGroup
+ class CPVRChannelGroupInternal : public CPVRChannelGroup, public Observer
{
friend class CPVRChannelGroups;
friend class CPVRDatabase;
virtual ~CPVRChannelGroupInternal(void);
+ virtual void Notify(const Observable &obs, const ObservableMessage msg);
+
/**
* @brief The amount of channels in this container.
* @return The amount of channels in this container.
ObservableMessageTimersReset,
ObservableMessageRecordings,
ObservableMessagePeripheralsChanged,
+ ObservableMessageManagerStateChanged
} ObservableMessage;
class Observer