Skip to content

Commit

Permalink
pvr: removed the lockless GetState() and SetState() in CPVRManager an…
Browse files Browse the repository at this point in the history
…d just hold a lock again. closes #464
  • Loading branch information
opdenkamp committed Mar 24, 2012
1 parent 7c82260 commit dab4d70
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 14 deletions.
23 changes: 9 additions & 14 deletions xbmc/pvr/PVRManager.cpp
Expand Up @@ -174,15 +174,14 @@ void CPVRManager::Stop(void)

ManagerState CPVRManager::GetState(void) const
{
return (ManagerState)cas((volatile long*)(&m_managerState), 0, 0);
CSingleLock lock(m_managerStateMutex);
return m_managerState;
}

void CPVRManager::SetState(ManagerState state)
{
long oldstate = m_managerState;
while(oldstate != cas((volatile long*)(&m_managerState), oldstate, state))
oldstate = cas((volatile long*)(&m_managerState), oldstate, state);
return;
CSingleLock lock(m_managerStateMutex);
m_managerState = state;
}

void CPVRManager::Process(void)
Expand All @@ -197,13 +196,9 @@ void CPVRManager::Process(void)
}

if (GetState() == ManagerStateStarting)
{
SetState(ManagerStateStarted);
}
else
{
return;
}

/* main loop */
CLog::Log(LOGDEBUG, "PVRManager - %s - entering main loop", __FUNCTION__);
Expand Down Expand Up @@ -947,6 +942,11 @@ bool CPVRManager::IsInitialising(void) const
return GetState() == ManagerStateStarting;
}

bool CPVRManager::IsStarted(void) const
{
return GetState() == ManagerStateStarted;
}

bool CPVRManager::IsPlayingTV(void) const
{
return IsStarted() && m_addons && m_addons->IsPlayingTV();
Expand Down Expand Up @@ -1084,8 +1084,3 @@ void CPVRManager::ExecutePendingJobs(void)

m_triggerEvent.Reset();
}

bool CPVRManager::IsStarted(void) const
{
return GetState() == ManagerStateStarted;
}
1 change: 1 addition & 0 deletions xbmc/pvr/PVRManager.h
Expand Up @@ -532,6 +532,7 @@ namespace PVR
int m_LastChannel;
unsigned int m_LastChannelChanged;

CCriticalSection m_managerStateMutex;
ManagerState m_managerState;
};

Expand Down

0 comments on commit dab4d70

Please sign in to comment.