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 */