No longer checking for correct iData in code.
diff --git a/multimedia/time.c b/multimedia/time.c index 4502cf1..be881fe 100644 --- a/multimedia/time.c +++ b/multimedia/time.c
@@ -124,7 +124,7 @@ { LPWINE_MM_IDATA iData = MULTIMEDIA_GetIData(); - if (!iData || IsBadWritePtr(iData, sizeof(WINE_MM_IDATA))) { + if (IsBadWritePtr(iData, sizeof(WINE_MM_IDATA))) { ERR("iData is not correctly set, please report. Expect failure.\n"); return 0; } @@ -149,18 +149,13 @@ */ MMRESULT WINAPI timeGetSystemTime(LPMMTIME lpTime, UINT wSize) { - LPWINE_MM_IDATA iData; - TRACE("(%p, %u);\n", lpTime, wSize); if (wSize >= sizeof(*lpTime)) { - iData = MULTIMEDIA_MMTimeStart(); - if (!iData) - return MMSYSERR_NOMEM; lpTime->wType = TIME_MS; - lpTime->u.ms = iData->mmSysTimeMS; + lpTime->u.ms = MULTIMEDIA_MMTimeStart()->mmSysTimeMS; - TRACE("=> %lu\n", iData->mmSysTimeMS); + TRACE("=> %lu\n", lpTime->u.ms); } return 0; @@ -171,18 +166,13 @@ */ MMRESULT16 WINAPI timeGetSystemTime16(LPMMTIME16 lpTime, UINT16 wSize) { - LPWINE_MM_IDATA iData; - TRACE("(%p, %u);\n", lpTime, wSize); if (wSize >= sizeof(*lpTime)) { - iData = MULTIMEDIA_MMTimeStart(); - if (!iData) - return MMSYSERR_NOMEM; lpTime->wType = TIME_MS; - lpTime->u.ms = iData->mmSysTimeMS; + lpTime->u.ms = MULTIMEDIA_MMTimeStart()->mmSysTimeMS; - TRACE("=> %lu\n", iData->mmSysTimeMS); + TRACE("=> %lu\n", lpTime->u.ms); } return 0; @@ -210,9 +200,6 @@ iData = MULTIMEDIA_MMTimeStart(); - if (!iData) - return 0; - lpNewTimer->uCurTime = wDelay; lpNewTimer->wDelay = wDelay; lpNewTimer->wResol = wResol; @@ -381,5 +368,13 @@ */ DWORD WINAPI timeGetTime(void) { + /* FIXME: releasing the win16 lock here is a temporary hack (I hope) + * that lets mciavi.drv run correctly + */ + if ( _ConfirmWin16Lock() ) { + SYSLEVEL_ReleaseWin16Lock(); + SYSLEVEL_RestoreWin16Lock(); + } + return MULTIMEDIA_MMTimeStart()->mmSysTimeMS; }