25 #ifdef HAVE_SYS_TIME_H 78 #define MMSYSTIME_MININTERVAL (1) 79 #define MMSYSTIME_MAXINTERVAL (65535) 84 TRACE(
"%04lx:CallBack => lpFunc=%p wTimerID=%04X dwUser=%08lX dwTriggerTime %ld(delta %ld)\n",
93 switch (lpTimer->
wFlags & 0x30) {
104 FIXME(
"Unknown callback type 0x%04x for mmtime callback (%p), ignored.\n",
115 static int nSizeLpTimers;
150 next_ptimer = &timer->
lpNext;
154 if (
idx == nSizeLpTimers) {
164 lpTimers[
idx++] = *timer;
176 *ptimer = *next_ptimer;
196 ret_time =
min(ret_time, delta_time);
198 ptimer = next_ptimer;
210 if (adjust_time > ret_time)
213 ret_time -= adjust_time;
228 TRACE(
"Starting main winmm thread\n");
250 TRACE(
"Exiting main winmm thread\n");
294 if (wSize >=
sizeof(*lpTime)) {
319 if (lpNewTimer ==
NULL)
352 TRACE(
"=> %u\n", wNewID + 1);
374 TRACE(
"(%u)\n", wID);
378 if (wID == (*lpTimer)->wTimerID) {
381 *lpTimer = (*lpTimer)->
lpNext;
389 WARN(
"wID=%u is not a valid timer ID\n", wID);
392 if (lpSelf->
wFlags & TIME_KILL_SYNCHRONOUS)
403 TRACE(
"(%p, %u)\n", lpCaps, wSize);
406 WARN(
"invalid lpCaps\n");
411 WARN(
"invalid wSize\n");
437 WARN(
"Stub; we set our timer resolution at minimum\n");
457 WARN(
"Stub; we set our timer resolution at minimum\n");
469 #if defined(COMMENTOUTPRIORTODELETING) 475 if (pFnReleaseThunkLock) pFnReleaseThunkLock(&
count);
476 if (pFnRestoreThunkLock) pFnRestoreThunkLock(
count);
MMRESULT WINAPI timeGetDevCaps(LPTIMECAPS lpCaps, UINT wSize)
MMRESULT WINAPI timeGetSystemTime(LPMMTIME lpTime, UINT wSize)
static DWORD CALLBACK TIME_MMSysTimeCallback()
GLuint GLuint GLsizei count
struct tagWINE_TIMERENTRY * lpNext
DWORD WINAPI GetTickCount(VOID)
MMRESULT WINAPI timeEndPeriod(UINT wPeriod)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
DWORD WINAPI GetLastError(VOID)
struct tagWINE_TIMERENTRY * LPWINE_TIMERENTRY
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
struct tagWINE_TIMERENTRY WINE_TIMERENTRY
MMRESULT WINAPI timeSetEvent(UINT wDelay, UINT wResol, LPTIMECALLBACK lpFunc, DWORD_PTR dwUser, UINT wFlags)
static DWORD CALLBACK TIME_MMSysTimeThread(LPVOID arg)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
void TIME_MMTimeStop(void)
#define TIME_CALLBACK_EVENT_PULSE
BOOL WINAPI DECLSPEC_HOTPATCH PulseEvent(IN HANDLE hEvent)
void TIME_MMTimeStart(void)
static HANDLE TIME_hKillEvent
BOOL WINAPI QueryPerformanceFrequency(OUT PLARGE_INTEGER lpFrequency)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
MMRESULT WINAPI timeKillEvent(UINT wID)
static BOOL TIME_TimeToDie
DWORD WINAPI GetCurrentThreadId(VOID)
BOOL WINAPI SetThreadPriority(IN HANDLE hThread, IN int nPriority)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static LPWINE_TIMERENTRY TIME_TimersList
CRITICAL_SECTION WINMM_cs
#define MMSYSTIME_MININTERVAL
MMRESULT WINAPI timeBeginPeriod(UINT wPeriod)
BOOL WINAPI QueryPerformanceCounter(OUT PLARGE_INTEGER lpPerformanceCount)
#define THREAD_PRIORITY_TIME_CRITICAL
static HANDLE TIME_hWakeEvent
static void TIME_TriggerCallBack(LPWINE_TIMERENTRY lpTimer)
_In_ DWORD _Out_ _In_ WORD wFlags
WINE_DEFAULT_DEBUG_CHANNEL(mmtime)
DWORD WINAPI timeGetTime(void)
#define MMSYSTIME_MAXINTERVAL
#define MMSYSERR_INVALPARAM
static LARGE_INTEGER TIME_qpcFreq
#define TIME_CALLBACK_FUNCTION
BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent(IN HANDLE hEvent)
WORD TIME_SetEventInternal(UINT wDelay, UINT wResol, LPTIMECALLBACK lpFunc, DWORD dwUser, UINT wFlags)
static HANDLE TIME_hMMTimer
TIMECALLBACK * LPTIMECALLBACK
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define TIME_CALLBACK_EVENT_SET
union mmtime_tag::@2973 u
#define HeapFree(x, y, z)