- renamed winmm.OpenDriverW into winmm.OpenDriver
- replaced all inter-DLL calls (msacm and msvideo) to OpenDriverA with
OpenDriver (unicode form)
- as a consequence, driver name handling in msacm is now mostly
unicode
- moved UserYield16 and UnMapLS call out of the 32bit part of winmm
diff --git a/dlls/msacm/driver.c b/dlls/msacm/driver.c
index ef8b93c..b4b3f9c 100644
--- a/dlls/msacm/driver.c
+++ b/dlls/msacm/driver.c
@@ -292,15 +292,12 @@
len = strlen("Drivers32") + 1;
adod.pszSectionName = HeapAlloc(MSACM_hHeap, 0, len * sizeof(WCHAR));
MultiByteToWideChar(CP_ACP, 0, "Drivers32", -1, (LPWSTR)adod.pszSectionName, len);
- len = strlen(padid->pszDriverAlias) + 1;
- adod.pszAliasName = HeapAlloc(MSACM_hHeap, 0, len * sizeof(WCHAR));
- MultiByteToWideChar(CP_ACP, 0, padid->pszDriverAlias, -1, (LPWSTR)adod.pszAliasName, len);
+ adod.pszAliasName = padid->pszDriverAlias;
adod.dnDevNode = 0;
- pad->hDrvr = OpenDriverA(padid->pszDriverAlias, NULL, (DWORD)&adod);
+ pad->hDrvr = OpenDriver(padid->pszDriverAlias, NULL, (DWORD)&adod);
HeapFree(MSACM_hHeap, 0, (LPWSTR)adod.pszSectionName);
- HeapFree(MSACM_hHeap, 0, (LPWSTR)adod.pszAliasName);
if (!pad->hDrvr)
{
ret = adod.dwError;
@@ -314,7 +311,7 @@
/* FIXME: Create a WINE_ACMDRIVER32 */
*phad = (HACMDRIVER)pad;
- TRACE("'%s' => %08lx\n", padid->pszDriverAlias, (DWORD)pad);
+ TRACE("'%s' => %08lx\n", debugstr_w(padid->pszDriverAlias), (DWORD)pad);
return MMSYSERR_NOERROR;
gotError:
diff --git a/dlls/msacm/internal.c b/dlls/msacm/internal.c
index 5d41368..8e30f9b 100644
--- a/dlls/msacm/internal.c
+++ b/dlls/msacm/internal.c
@@ -34,6 +34,7 @@
#include "msacmdrv.h"
#include "wineacm.h"
#include "wine/debug.h"
+#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(msacm);
@@ -112,7 +113,7 @@
for (ntag = 0; ntag < add.cFormatTags; ntag++) {
aftd.dwFormatTagIndex = ntag;
if (MSACM_Message(had, ACMDM_FORMATTAG_DETAILS, (LPARAM)&aftd, ACM_FORMATTAGDETAILSF_INDEX)) {
- TRACE("IIOs (%s)\n", padid->pszDriverAlias);
+ TRACE("IIOs (%s)\n", debugstr_w(padid->pszDriverAlias));
goto errCleanUp;
}
padid->aFormatTag[ntag].dwFormatTag = aftd.dwFormatTag;
@@ -133,23 +134,25 @@
/***********************************************************************
* MSACM_GetRegistryKey
*/
-static LPSTR MSACM_GetRegistryKey(const WINE_ACMDRIVERID* padid)
+static LPWSTR MSACM_GetRegistryKey(const WINE_ACMDRIVERID* padid)
{
- static const char* baseKey = "Software\\Microsoft\\AudioCompressionManager\\DriverCache\\";
- LPSTR ret;
+ static const WCHAR baseKey[] = {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
+ 'A','u','d','i','o','C','o','m','p','r','e','s','s','i','o','n','M','a','n','a','g','e','r','\\',
+ 'D','r','i','v','e','r','C','a','c','h','e','\\','\0'};
+ LPWSTR ret;
int len;
if (!padid->pszDriverAlias) {
ERR("No alias needed for registry entry\n");
return NULL;
}
- len = strlen(baseKey);
- ret = HeapAlloc(MSACM_hHeap, 0, len + strlen(padid->pszDriverAlias) + 1);
+ len = strlenW(baseKey);
+ ret = HeapAlloc(MSACM_hHeap, 0, (len + strlenW(padid->pszDriverAlias) + 1) * sizeof(WCHAR));
if (!ret) return NULL;
- strcpy(ret, baseKey);
- strcpy(ret + len, padid->pszDriverAlias);
- CharLowerA(ret + len);
+ strcpyW(ret, baseKey);
+ strcpyW(ret + len, padid->pszDriverAlias);
+ CharLowerW(ret + len);
return ret;
}
@@ -158,7 +161,7 @@
*/
static BOOL MSACM_ReadCache(PWINE_ACMDRIVERID padid)
{
- LPSTR key = MSACM_GetRegistryKey(padid);
+ LPWSTR key = MSACM_GetRegistryKey(padid);
HKEY hKey;
DWORD type, size;
@@ -166,7 +169,7 @@
padid->aFormatTag = NULL;
- if (RegCreateKeyA(HKEY_LOCAL_MACHINE, key, &hKey))
+ if (RegCreateKeyW(HKEY_LOCAL_MACHINE, key, &hKey))
goto errCleanUp;
size = sizeof(padid->cFormatTags);
@@ -202,12 +205,12 @@
*/
static BOOL MSACM_WriteCache(PWINE_ACMDRIVERID padid)
{
- LPSTR key = MSACM_GetRegistryKey(padid);
+ LPWSTR key = MSACM_GetRegistryKey(padid);
HKEY hKey;
if (!key) return FALSE;
- if (RegCreateKeyA(HKEY_LOCAL_MACHINE, key, &hKey))
+ if (RegCreateKeyW(HKEY_LOCAL_MACHINE, key, &hKey))
goto errCleanUp;
if (RegSetValueExA(hKey, "cFormatTags", 0, REG_DWORD, (void*)&padid->cFormatTags, sizeof(DWORD)))
@@ -231,12 +234,13 @@
/***********************************************************************
* MSACM_RegisterDriver()
*/
-PWINE_ACMDRIVERID MSACM_RegisterDriver(LPSTR pszDriverAlias, LPSTR pszFileName,
+PWINE_ACMDRIVERID MSACM_RegisterDriver(LPWSTR pszDriverAlias, LPWSTR pszFileName,
HINSTANCE hinstModule)
{
PWINE_ACMDRIVERID padid;
- TRACE("('%s', '%s', %p)\n", pszDriverAlias, pszFileName, hinstModule);
+ TRACE("(%s, %s, %p)\n",
+ debugstr_w(pszDriverAlias), debugstr_w(pszFileName), hinstModule);
padid = (PWINE_ACMDRIVERID) HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVERID));
padid->obj.dwType = WINE_ACMOBJ_DRIVERID;
@@ -244,14 +248,14 @@
padid->pszDriverAlias = NULL;
if (pszDriverAlias)
{
- padid->pszDriverAlias = HeapAlloc( MSACM_hHeap, 0, strlen(pszDriverAlias)+1 );
- strcpy( padid->pszDriverAlias, pszDriverAlias );
+ padid->pszDriverAlias = HeapAlloc( MSACM_hHeap, 0, (strlenW(pszDriverAlias)+1) * sizeof(WCHAR) );
+ strcpyW( padid->pszDriverAlias, pszDriverAlias );
}
padid->pszFileName = NULL;
if (pszFileName)
{
- padid->pszFileName = HeapAlloc( MSACM_hHeap, 0, strlen(pszFileName)+1 );
- strcpy( padid->pszFileName, pszFileName );
+ padid->pszFileName = HeapAlloc( MSACM_hHeap, 0, (strlenW(pszFileName)+1) * sizeof(WCHAR) );
+ strcpyW( padid->pszFileName, pszFileName );
}
padid->hInstModule = hinstModule;
@@ -265,7 +269,7 @@
MSACM_pFirstACMDriverID = padid;
/* disable the driver if we cannot load the cache */
if (!MSACM_ReadCache(padid) && !MSACM_FillCache(padid)) {
- WARN("Couldn't load cache for ACM driver (%s)\n", pszFileName);
+ WARN("Couldn't load cache for ACM driver (%s)\n", debugstr_w(pszFileName));
MSACM_UnregisterDriver(padid);
return NULL;
}
@@ -277,8 +281,12 @@
*/
void MSACM_RegisterAllDrivers(void)
{
- LPSTR pszBuffer;
+ LPWSTR pszBuffer;
DWORD dwBufferLength;
+ static WCHAR msacm32[] = {'m','s','a','c','m','3','2','.','d','l','l','\0'};
+ static WCHAR msacmW[] = {'M','S','A','C','M','.'};
+ static WCHAR drv32[] = {'d','r','i','v','e','r','s','3','2','\0'};
+ static WCHAR sys[] = {'s','y','s','t','e','m','.','i','n','i','\0'};
/* FIXME
* What if the user edits system.ini while the program is running?
@@ -291,26 +299,32 @@
dwBufferLength = 1024;
/* EPP GetPrivateProfileSectionA("drivers32", NULL, 0, "system.ini"); */
- pszBuffer = (LPSTR) HeapAlloc(MSACM_hHeap, 0, dwBufferLength);
- if (GetPrivateProfileSectionA("drivers32", pszBuffer, dwBufferLength, "system.ini")) {
- char* s = pszBuffer;
- while (*s) {
- if (!strncasecmp("MSACM.", s, 6)) {
- char *s2 = s;
+ pszBuffer = (LPWSTR) HeapAlloc(MSACM_hHeap, 0, dwBufferLength * sizeof(WCHAR));
+ if (GetPrivateProfileSectionW(drv32, pszBuffer, dwBufferLength, sys))
+ {
+ LPWSTR s = pszBuffer, s2;
+
+ while (*s)
+ {
+ CharUpperBuffW(s, 6);
+ if (memcmp(s, msacmW, 6 * sizeof(WCHAR)) == 0)
+ {
+ s2 = s;
while (*s2 != '\0' && *s2 != '=') s2++;
- if (*s2) {
+ if (*s2)
+ {
*s2 = '\0';
MSACM_RegisterDriver(s, s2 + 1, 0);
*s2 = '=';
}
}
- s += strlen(s) + 1; /* Either next char or \0 */
+ s += strlenW(s) + 1; /* Either next char or \0 */
}
}
HeapFree(MSACM_hHeap, 0, pszBuffer);
- MSACM_RegisterDriver("msacm32.dll", "msacm32.dll", 0);
+ MSACM_RegisterDriver(msacm32, msacm32, 0);
}
/***********************************************************************
diff --git a/dlls/msacm/stream.c b/dlls/msacm/stream.c
index 6509207..c9bac47 100644
--- a/dlls/msacm/stream.c
+++ b/dlls/msacm/stream.c
@@ -216,7 +216,7 @@
was->hAcmDriver = had;
ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
- TRACE("%s => %08x\n", wadi->pszDriverAlias, ret);
+ TRACE("%s => %08x\n", debugstr_w(wadi->pszDriverAlias), ret);
if (ret == MMSYSERR_NOERROR) {
if (fdwOpen & ACM_STREAMOPENF_QUERY) {
acmDriverClose(had, 0L);
diff --git a/dlls/msacm/wineacm.h b/dlls/msacm/wineacm.h
index b9b4f72..702ab01 100644
--- a/dlls/msacm/wineacm.h
+++ b/dlls/msacm/wineacm.h
@@ -317,8 +317,8 @@
typedef struct _WINE_ACMDRIVERID
{
WINE_ACMOBJ obj;
- LPSTR pszDriverAlias;
- LPSTR pszFileName;
+ LPWSTR pszDriverAlias;
+ LPWSTR pszFileName;
HINSTANCE hInstModule; /* NULL if global */
PWINE_ACMDRIVER pACMDriverList;
PWINE_ACMDRIVERID pNextACMDriverID;
@@ -337,7 +337,7 @@
extern HANDLE MSACM_hHeap;
extern PWINE_ACMDRIVERID MSACM_pFirstACMDriverID;
extern PWINE_ACMDRIVERID MSACM_pLastACMDriverID;
-extern PWINE_ACMDRIVERID MSACM_RegisterDriver(LPSTR pszDriverAlias, LPSTR pszFileName,
+extern PWINE_ACMDRIVERID MSACM_RegisterDriver(LPWSTR pszDriverAlias, LPWSTR pszFileName,
HINSTANCE hinstModule);
extern void MSACM_RegisterAllDrivers(void);
extern PWINE_ACMDRIVERID MSACM_UnregisterDriver(PWINE_ACMDRIVERID p);
diff --git a/dlls/msvideo/msvideo_main.c b/dlls/msvideo/msvideo_main.c
index 359ec03..c228a07 100644
--- a/dlls/msvideo/msvideo_main.c
+++ b/dlls/msvideo/msvideo_main.c
@@ -48,12 +48,13 @@
static WINE_HIC* MSVIDEO_FirstHic /* = NULL */;
typedef struct _reg_driver reg_driver;
-struct _reg_driver{
- DWORD fccType;
- DWORD fccHandler;
- DRIVERPROC proc;
- char* name;
- reg_driver* next;
+struct _reg_driver
+{
+ DWORD fccType;
+ DWORD fccHandler;
+ DRIVERPROC proc;
+ LPWSTR name;
+ reg_driver* next;
};
static reg_driver* reg_driver_list = NULL;
@@ -164,34 +165,37 @@
BOOL VFWAPI ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags)
{
reg_driver* driver;
+ unsigned len;
TRACE("(%s,%s,%p,%p,0x%08x)\n", wine_dbgstr_fcc(fccType), wine_dbgstr_fcc(fccHandler), (void*)lParam, szDesc, wFlags);
/* Check if a driver is already registered */
- driver = reg_driver_list;
- while(driver)
+ for (driver = reg_driver_list; driver; driver = driver->next)
+ {
if (!compare_fourcc(fccType, driver->fccType) &&
!compare_fourcc(fccHandler, driver->fccHandler))
break;
- else
- driver = driver->next;
- if (driver)
- return FALSE;
+ }
+ if (driver) return FALSE;
/* Register the driver */
driver = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(reg_driver));
+ if (!driver) goto oom;
driver->fccType = fccType;
driver->fccHandler = fccHandler;
- switch(wFlags) {
+ switch(wFlags)
+ {
case ICINSTALL_FUNCTION:
driver->proc = (DRIVERPROC)lParam;
driver->name = NULL;
break;
case ICINSTALL_DRIVER:
driver->proc = NULL;
- driver->name = HeapAlloc(GetProcessHeap(), 0, strlen((char*)lParam));
- strcpy(driver->name, (char*) lParam);
+ len = MultiByteToWideChar(CP_ACP, 0, (char*)lParam, -1, NULL, 0);
+ driver->name = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+ if (!driver->name) goto oom;
+ MultiByteToWideChar(CP_ACP, 0, (char*)lParam, -1, driver->name, len);
break;
default:
ERR("Invalid flags!\n");
@@ -204,6 +208,9 @@
reg_driver_list = driver;
return TRUE;
+ oom:
+ if (driver) HeapFree(GetProcessHeap(), 0, driver);
+ return FALSE;
}
/***********************************************************************
@@ -211,30 +218,25 @@
*/
BOOL VFWAPI ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags)
{
- reg_driver* driver;
- reg_driver** previous;
+ reg_driver** pdriver;
TRACE("(%s,%s,0x%08x)\n", wine_dbgstr_fcc(fccType), wine_dbgstr_fcc(fccHandler), wFlags);
/* Check if a driver is already registered */
- driver = reg_driver_list;
- previous = ®_driver_list;
- while(driver)
- if (!compare_fourcc(fccType, driver->fccType) &&
- !compare_fourcc(fccHandler, driver->fccHandler))
+ for (pdriver = ®_driver_list; *pdriver; pdriver = &(*pdriver)->next)
+ {
+ if (!compare_fourcc(fccType, (*pdriver)->fccType) &&
+ !compare_fourcc(fccHandler, (*pdriver)->fccHandler))
break;
- else {
- previous = &(driver->next);
- driver = driver->next;
- }
- if (!driver)
+ }
+ if (!*pdriver)
return FALSE;
/* Remove the driver from the list */
- *previous = driver->next;
- if (driver->name)
- HeapFree(GetProcessHeap(), 0, driver->name);
- HeapFree(GetProcessHeap(), 0, driver);
+ *pdriver = (*pdriver)->next;
+ if ((*pdriver)->name)
+ HeapFree(GetProcessHeap(), 0, (*pdriver)->name);
+ HeapFree(GetProcessHeap(), 0, *pdriver);
return TRUE;
}
@@ -246,11 +248,12 @@
*/
HIC VFWAPI ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode)
{
- char codecname[10];
+ WCHAR codecname[10];
ICOPEN icopen;
HDRVR hdrv;
WINE_HIC* whic;
BOOL bIs16;
+ static WCHAR drv32W[] = {'d','r','i','v','e','r','s','3','2','\0'};
reg_driver* driver;
TRACE("(%s,%s,0x%08x)\n", wine_dbgstr_fcc(fccType), wine_dbgstr_fcc(fccHandler), wMode);
@@ -294,7 +297,7 @@
codecname[8] = HIBYTE(HIWORD(fccHandler));
codecname[9] = '\0';
- hdrv = OpenDriverA(codecname, "drivers32", (LPARAM)&icopen);
+ hdrv = OpenDriver(codecname, drv32W, (LPARAM)&icopen);
if (!hdrv)
{
if (fccType == streamtypeVIDEO)
@@ -305,14 +308,14 @@
codecname[3] = 'c';
fccType = ICTYPE_VIDEO;
- hdrv = OpenDriverA(codecname, "drivers32", (LPARAM)&icopen);
+ hdrv = OpenDriver(codecname, drv32W, (LPARAM)&icopen);
}
if (!hdrv)
return 0;
}
} else {
/* The driver has been registered at runtime with its name */
- hdrv = OpenDriverA(driver->name, NULL, (LPARAM)&icopen);
+ hdrv = OpenDriver(driver->name, NULL, (LPARAM)&icopen);
if (!hdrv)
return 0;
}
diff --git a/dlls/winmm/mmio.c b/dlls/winmm/mmio.c
index f4300ba..b835d26 100644
--- a/dlls/winmm/mmio.c
+++ b/dlls/winmm/mmio.c
@@ -261,7 +261,7 @@
struct IOProcList* pListNode;
struct IOProcList** ppListNode;
- TRACE("(%ld, %p, %08lX, %i)\n", fccIOProc, pIOProc, dwFlags, type);
+ TRACE("(%08lx, %p, %08lX, %i)\n", fccIOProc, pIOProc, dwFlags, type);
if (dwFlags & MMIO_GLOBALPROC)
FIXME("Global procedures not implemented\n");
@@ -529,14 +529,16 @@
wm->info.pchEndRead = wm->info.pchBuffer;
wm->info.pchEndWrite = wm->info.pchBuffer + wm->info.cchBuffer;
+ wm->bBufferLoaded = TRUE;
if (for_read) {
size = send_message(wm->ioProc, &wm->info, MMIOM_READ,
(LPARAM)wm->info.pchBuffer, size, MMIO_PROC_32A);
if (size > 0)
wm->info.pchEndRead += size;
+ else
+ wm->bBufferLoaded = FALSE;
}
- wm->bBufferLoaded = TRUE;
return size;
}
@@ -562,13 +564,6 @@
wm->info.dwFlags &= ~MMIO_ALLOCBUF;
}
- /* free segmented ptr mapping, if any */
- if (wm->info.dwReserved1 != 0L)
- {
- UnMapLS(wm->info.dwReserved1);
- wm->info.dwReserved1 = 0L;
- }
-
if (pchBuffer) {
wm->info.pchBuffer = pchBuffer;
} else if (cchBuffer) {
diff --git a/dlls/winmm/mmsystem.c b/dlls/winmm/mmsystem.c
index 0ef0ca3..df465f7 100644
--- a/dlls/winmm/mmsystem.c
+++ b/dlls/winmm/mmsystem.c
@@ -4,7 +4,7 @@
* MMSYTEM functions
*
* Copyright 1993 Martin Ayotte
- * 1998-2002 Eric Pouech
+ * 1998-2003 Eric Pouech
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -26,10 +26,6 @@
* 99/4 added mmTask and mmThread functions support
*/
-/* FIXME: I think there are some segmented vs. linear pointer weirdnesses
- * and long term pointers to 16 bit space in here
- */
-
#include <string.h>
#define NONAMELESSUNION
@@ -2690,12 +2686,13 @@
* MMIO_ResetSegmentedData
*
*/
-static LRESULT MMIO_SetSegmentedBuffer(HMMIO hmmio, SEGPTR ptr)
+static LRESULT MMIO_SetSegmentedBuffer(HMMIO hmmio, SEGPTR ptr, BOOL release)
{
LPWINE_MMIO wm;
if ((wm = MMIO_Get(hmmio)) == NULL)
return MMSYSERR_INVALHANDLE;
+ if (release) UnMapLS(wm->segBuffer16);
wm->segBuffer16 = ptr;
return MMSYSERR_NOERROR;
}
@@ -2727,7 +2724,7 @@
mmioinfo.adwInfo[3] = lpmmioinfo16->adwInfo[3];
ret = MMIO_Open(szFileName, &mmioinfo, dwOpenFlags, MMIO_PROC_16);
- MMIO_SetSegmentedBuffer(mmioinfo.hmmio, (SEGPTR)lpmmioinfo16->pchBuffer);
+ MMIO_SetSegmentedBuffer(mmioinfo.hmmio, (SEGPTR)lpmmioinfo16->pchBuffer, FALSE);
lpmmioinfo16->wErrorRet = mmioinfo.wErrorRet;
lpmmioinfo16->hmmio = HMMIO_16(mmioinfo.hmmio);
@@ -2742,6 +2739,7 @@
*/
MMRESULT16 WINAPI mmioClose16(HMMIO16 hmmio, UINT16 uFlags)
{
+ MMIO_SetSegmentedBuffer(HMMIO_32(hmmio), (SEGPTR)NULL, TRUE);
return mmioClose(HMMIO_32(hmmio), uFlags);
}
@@ -2854,7 +2852,9 @@
cchBuffer, uFlags);
if (ret == MMSYSERR_NOERROR)
- MMIO_SetSegmentedBuffer(HMMIO_32(hmmio), (DWORD)pchBuffer);
+ MMIO_SetSegmentedBuffer(HMMIO_32(hmmio), (DWORD)pchBuffer, TRUE);
+ else
+ UnMapLS((DWORD)pchBuffer);
return ret;
}
diff --git a/dlls/winmm/winmm.c b/dlls/winmm/winmm.c
index b770164..9dacf9b 100644
--- a/dlls/winmm/winmm.c
+++ b/dlls/winmm/winmm.c
@@ -34,7 +34,7 @@
#define NONAMELESSSTRUCT
#include "mmsystem.h"
#include "winbase.h"
-#include "wine/winuser16.h" /* FIXME: should be removed, only used for UserYield16 */
+#include "winuser.h"
#include "heap.h"
#include "winternl.h"
#include "winemm.h"
@@ -43,6 +43,21 @@
WINE_DEFAULT_DEBUG_CHANNEL(winmm);
+/******************************************************************
+ * MyUserYield
+ *
+ * Internal wrapper to call USER.UserYield16 (in fact through a Wine only export from USER32).
+ */
+static void MyUserYield(void)
+{
+ HMODULE mod = GetModuleHandleA( "user32.dll" );
+ if (mod)
+ {
+ FARPROC proc = GetProcAddress( mod, "UserYield16" );
+ if (proc) proc();
+ }
+}
+
/* ========================================================================
* G L O B A L S E T T I N G S
* ========================================================================*/
@@ -812,7 +827,7 @@
if ((HIWORD(data) != 0 && HWND_16(GetActiveWindow()) != HIWORD(data)) ||
(GetAsyncKeyState(LOWORD(data)) & 1) == 0) {
- UserYield16();
+ MyUserYield();
ret = 0;
} else {
MSG msg;
@@ -906,7 +921,7 @@
TRACE("(%04x)\n", uDeviceID);
if (!(wmd = MCI_GetDriver(uDeviceID)) || !wmd->lpfnYieldProc || !wmd->bIs32) {
- UserYield16();
+ MyUserYield();
} else {
ret = wmd->lpfnYieldProc(uDeviceID, wmd->dwYieldData);
}