int64_t CDVDClock::m_systemOffset;
int64_t CDVDClock::m_systemFrequency;
CCriticalSection CDVDClock::m_systemsection;
-
bool CDVDClock::m_ismasterclock;
+CDVDClock *CDVDClock::m_playerclock = NULL;;
CDVDClock::CDVDClock()
{
m_ismasterclock = true;
m_startClock = 0;
+
+ m_playerclock = this;
}
CDVDClock::~CDVDClock()
-{}
+{
+ CSingleLock lock(m_systemsection);
+ m_playerclock = NULL;
+}
// Returns the current absolute clock in units of DVD_TIME_BASE (usually microseconds).
double CDVDClock::GetAbsoluteClock(bool interpolated /*= true*/)
return (double)systemtarget / freq * DVD_TIME_BASE;
}
+CDVDClock* CDVDClock::GetMasterClock()
+{
+ CSingleLock lock(m_systemsection);
+ return m_playerclock;
+}
+
double CDVDClock::GetClock(bool interpolated /*= true*/)
{
CSharedLock lock(m_critSection);
//the rendermanager needs to know about that because it can synchronize the videoreferenceclock to the video timestamps
static void SetMasterClock(bool ismasterclock) { m_ismasterclock = ismasterclock; }
static bool IsMasterClock() { return m_ismasterclock; }
-
+ static CDVDClock* GetMasterClock();
protected:
static void CheckSystemClock();
static double SystemToAbsolute(int64_t system);
bool m_speedadjust;
CCriticalSection m_speedsection;
static bool m_ismasterclock;
+ static CDVDClock *m_playerclock;
};