#include "threads/Atomics.h"
#include "windows/GUIWindowPVRCommon.h"
#include "utils/JobManager.h"
+#include "interfaces/AnnouncementManager.h"
#include "PVRManager.h"
#include "PVRDatabase.h"
using namespace MUSIC_INFO;
using namespace PVR;
using namespace EPG;
+using namespace ANNOUNCEMENT;
CPVRManager::CPVRManager(void) :
CThread("PVRManager"),
m_managerState(ManagerStateStopped),
m_bOpenPVRWindow(false)
{
+ CAnnouncementManager::AddAnnouncer(this);
ResetProperties();
}
CPVRManager::~CPVRManager(void)
{
+ CAnnouncementManager::RemoveAnnouncer(this);
Stop();
CLog::Log(LOGDEBUG,"PVRManager - destroyed");
}
+void CPVRManager::Announce(AnnouncementFlag flag, const char *sender, const char *message, const CVariant &data)
+{
+ if (!IsStarted() || (flag & (System)) == 0)
+ return;
+
+ if (strcmp(message, "OnWake") == 0)
+ ContinueLastChannel();
+}
+
CPVRManager &CPVRManager::Get(void)
{
static CPVRManager pvrManagerInstance;
while (IsStarted() && m_addons && m_addons->HasConnectedClients() && !bRestart)
{
/* continue last watched channel after first startup */
- if (m_bFirstStart && CSettings::Get().GetInt("pvrplayback.startlast") != START_LAST_CHANNEL_OFF)
+ if (m_bFirstStart)
+ {
+ {
+ CSingleLock lock(m_critSection);
+ m_bFirstStart = false;
+ }
ContinueLastChannel();
-
+ }
/* execute the next pending jobs if there are any */
try
{
bool CPVRManager::ContinueLastChannel(void)
{
- {
- CSingleLock lock(m_critSection);
- if (!m_bFirstStart)
- return true;
- m_bFirstStart = false;
- }
+ if (CSettings::Get().GetInt("pvrplayback.startlast") == START_LAST_CHANNEL_OFF)
+ return false;
- bool bReturn(false);
CFileItemPtr channel = m_channelGroups->GetLastPlayedChannel();
if (channel && channel->HasPVRChannelInfoTag())
{
CLog::Log(LOGNOTICE, "PVRManager - %s - continue playback on channel '%s'", __FUNCTION__, channel->GetPVRChannelInfoTag()->ChannelName().c_str());
- bReturn = StartPlayback(channel->GetPVRChannelInfoTag(), (CSettings::Get().GetInt("pvrplayback.startlast") == START_LAST_CHANNEL_MIN));
+ return StartPlayback(channel->GetPVRChannelInfoTag(), (CSettings::Get().GetInt("pvrplayback.startlast") == START_LAST_CHANNEL_MIN));
}
- return bReturn;
+ return false;
}
void CPVRManager::ResetDatabase(bool bResetEPGOnly /* = false */)
#include "threads/Thread.h"
#include "utils/JobManager.h"
#include "utils/Observer.h"
+#include "interfaces/IAnnouncer.h"
class CGUIDialogProgressBarHandle;
class CStopWatch;
typedef boost::shared_ptr<PVR::CPVRChannelGroup> CPVRChannelGroupPtr;
- class CPVRManager : public ISettingCallback, private CThread, public Observable
+ class CPVRManager : public ISettingCallback, private CThread, public Observable, public ANNOUNCEMENT::IAnnouncer
{
friend class CPVRClients;
*/
virtual ~CPVRManager(void);
+ virtual void Announce(ANNOUNCEMENT::AnnouncementFlag flag, const char *sender, const char *message, const CVariant &data);
+
/*!
* @brief Get the instance of the PVRManager.
* @return The PVRManager instance.