add method to access dvdclock used by players without having to talk though the playe...
authordavilla <davilla@4pi.com>
Sun, 5 May 2013 02:14:55 +0000 (22:14 -0400)
committerdavilla <davilla@4pi.com>
Sun, 5 May 2013 02:54:50 +0000 (22:54 -0400)
xbmc/cores/dvdplayer/DVDClock.cpp
xbmc/cores/dvdplayer/DVDClock.h

index 7284bb4..f38eab5 100644 (file)
@@ -28,8 +28,8 @@
 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()
 {
@@ -45,10 +45,15 @@ 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*/)
@@ -90,6 +95,12 @@ double CDVDClock::WaitAbsoluteClock(double target)
   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);
index 99723de..2ee505f 100644 (file)
@@ -66,7 +66,7 @@ public:
   //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);
@@ -87,4 +87,5 @@ protected:
   bool             m_speedadjust;
   CCriticalSection m_speedsection;
   static bool      m_ismasterclock;
+  static CDVDClock *m_playerclock;
 };