1 #ifndef WINE_DSHOW_SYSCLOCK_H
2 #define WINE_DSHOW_SYSCLOCK_H
5 implements CLSID_SystemClock.
7 - At least, the following interfaces should be implemented:
16 typedef struct SC_IReferenceClockImpl
18 ICOM_VFIELD(IReferenceClock);
19 } SC_IReferenceClockImpl;
22 /* implementation limit */
23 #define WINE_QUARTZ_SYSCLOCK_TIMER_MAX 64
25 typedef struct QUARTZ_TimerEntry
30 REFERENCE_TIME rtStart;
31 REFERENCE_TIME rtInterval;
34 typedef struct CSystemClock
37 SC_IReferenceClockImpl refclk;
39 /* IReferenceClock fields. */
40 CRITICAL_SECTION m_csClock;
42 REFERENCE_TIME m_rtLast;
43 HANDLE m_hThreadTimer;
45 DWORD m_idThreadTimer;
47 DWORD m_dwAdvCookieNext;
48 QUARTZ_TimerEntry m_timerEntries[WINE_QUARTZ_SYSCLOCK_TIMER_MAX];
51 #define CSystemClock_THIS(iface,member) CSystemClock* This = ((CSystemClock*)(((char*)iface)-offsetof(CSystemClock,member)))
53 HRESULT QUARTZ_CreateSystemClock(IUnknown* punkOuter,void** ppobj);
55 HRESULT CSystemClock_InitIReferenceClock( CSystemClock* psc );
56 void CSystemClock_UninitIReferenceClock( CSystemClock* psc );
59 #endif /* WINE_DSHOW_SYSCLOCK_H */