Jörg Höhle : winmm: Restore checking of callback flags.
Alexandre Julliard
julliard at winehq.org
Fri Aug 5 10:20:49 CDT 2011
Module: wine
Branch: master
Commit: 547f4cace9e654e4cdd3db2949337a5df4285322
URL: http://source.winehq.org/git/wine.git/?a=commit;h=547f4cace9e654e4cdd3db2949337a5df4285322
Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date: Wed Jul 27 23:44:09 2011 +0200
winmm: Restore checking of callback flags.
---
dlls/winmm/waveform.c | 26 ++++++++++++--------------
1 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/dlls/winmm/waveform.c b/dlls/winmm/waveform.c
index a571fb8..bdac0a8 100644
--- a/dlls/winmm/waveform.c
+++ b/dlls/winmm/waveform.c
@@ -300,19 +300,11 @@ static WINMM_Device *WINMM_GetDeviceFromHWAVE(HWAVE hwave)
/* Note: NotifyClient should never be called while holding the device lock
* since the client may call wave* functions from within the callback. */
-static DWORD WINMM_NotifyClient(WINMM_CBInfo *info, WORD msg, DWORD_PTR param1,
+static inline void WINMM_NotifyClient(WINMM_CBInfo *info, WORD msg, DWORD_PTR param1,
DWORD_PTR param2)
{
- TRACE("(%p, %u, %lx, %lx)\n", info->hwave, msg, param1, param2);
-
- if((info->flags & DCB_TYPEMASK) == DCB_NULL)
- return MMSYSERR_NOERROR;
-
- if(!DriverCallback(info->callback, info->flags, (HDRVR)info->hwave,
- msg, info->user, param1, param2))
- return MMSYSERR_ERROR;
-
- return MMSYSERR_NOERROR;
+ DriverCallback(info->callback, info->flags, (HDRVR)info->hwave,
+ msg, info->user, param1, param2);
}
static HRESULT WINMM_GetFriendlyName(IMMDevice *device, WCHAR *out,
@@ -2330,6 +2322,9 @@ MMRESULT WINAPI waveOutOpen(LPHWAVEOUT lphWaveOut, UINT uDeviceID,
ERR("Couldn't start the device thread: %08x\n", hr);
return MMSYSERR_ERROR;
}
+ res = WINMM_CheckCallback(dwCallback, dwFlags, FALSE);
+ if(res != MMSYSERR_NOERROR)
+ return res;
info.format = (WAVEFORMATEX*)lpFormat;
info.callback = dwCallback;
@@ -2978,6 +2973,9 @@ MMRESULT WINAPI waveInOpen(HWAVEIN* lphWaveIn, UINT uDeviceID,
ERR("Couldn't start the device thread: %08x\n", hr);
return MMSYSERR_ERROR;
}
+ res = WINMM_CheckCallback(dwCallback, dwFlags, FALSE);
+ if(res != MMSYSERR_NOERROR)
+ return res;
info.format = (WAVEFORMATEX*)lpFormat;
info.callback = dwCallback;
@@ -3347,13 +3345,13 @@ UINT WINAPI mixerOpen(LPHMIXER lphMix, UINT uDeviceID, DWORD_PTR dwCallback,
if(!lphMix)
return MMSYSERR_INVALPARAM;
- if(uDeviceID >= g_outmmdevices_count + g_inmmdevices_count)
- return MMSYSERR_BADDEVICEID;
-
mr = WINMM_CheckCallback(dwCallback, fdwOpen, TRUE);
if(mr != MMSYSERR_NOERROR)
return mr;
+ if(uDeviceID >= g_outmmdevices_count + g_inmmdevices_count)
+ return MMSYSERR_BADDEVICEID;
+
if(uDeviceID < g_outmmdevices_count){
mmdevice = &g_out_mmdevices[uDeviceID];
*lphMix = (HMIXER)WINMM_MakeHWAVE(uDeviceID, TRUE,
More information about the wine-cvs
mailing list