Module: wine Branch: master Commit: 8575935f610bafd3b3529d4243ca36b9a7fc6deb URL: http://source.winehq.org/git/wine.git/?a=commit;h=8575935f610bafd3b3529d4243...
Author: Eric Pouech eric.pouech@orange.fr Date: Sun Nov 8 15:09:46 2009 +0100
mmsystem.dll16: Correctly send messages up to winmm.dll.
Spotted by Christian Costa.
---
dlls/mmsystem.dll16/message16.c | 40 +++++++++++++++++++++++++++++++++++--- 1 files changed, 36 insertions(+), 4 deletions(-)
diff --git a/dlls/mmsystem.dll16/message16.c b/dlls/mmsystem.dll16/message16.c index af1c6c9..ce25b9c 100644 --- a/dlls/mmsystem.dll16/message16.c +++ b/dlls/mmsystem.dll16/message16.c @@ -979,10 +979,42 @@ DWORD MMSYSTDRV_Message(void* h, UINT msg, DWORD_PTR param1, DWORD_PTR param2) switch (thunk->kind) { case MMSYSTDRV_MIXER: ret = mixerMessage (h, msg, param1, param2); break; - case MMSYSTDRV_MIDIIN: ret = midiInMessage (h, msg, param1, param2); break; - case MMSYSTDRV_MIDIOUT: ret = midiOutMessage(h, msg, param1, param2); break; - case MMSYSTDRV_WAVEIN: ret = waveInMessage (h, msg, param1, param2); break; - case MMSYSTDRV_WAVEOUT: ret = waveOutMessage(h, msg, param1, param2); break; + case MMSYSTDRV_MIDIIN: + switch (msg) + { + case MIDM_ADDBUFFER: ret = midiInAddBuffer(h, (LPMIDIHDR)param1, param2); break; + case MIDM_PREPARE: ret = midiInPrepareHeader(h, (LPMIDIHDR)param1, param2); break; + case MIDM_UNPREPARE: ret = midiInUnprepareHeader(h, (LPMIDIHDR)param1, param2); break; + default: ret = midiInMessage(h, msg, param1, param2); break; + } + break; + case MMSYSTDRV_MIDIOUT: + switch (msg) + { + case MODM_PREPARE: ret = midiOutPrepareHeader(h, (LPMIDIHDR)param1, param2); break; + case MODM_UNPREPARE: ret = midiOutUnprepareHeader(h, (LPMIDIHDR)param1, param2); break; + case MODM_LONGDATA: ret = midiOutLongMsg(h, (LPMIDIHDR)param1, param2); break; + default: ret = midiOutMessage(h, msg, param1, param2); break; + } + break; + case MMSYSTDRV_WAVEIN: + switch (msg) + { + case WIDM_ADDBUFFER: ret = waveInAddBuffer(h, (LPWAVEHDR)param1, param2); break; + case WIDM_PREPARE: ret = waveInPrepareHeader(h, (LPWAVEHDR)param1, param2); break; + case WIDM_UNPREPARE: ret = waveInUnprepareHeader(h, (LPWAVEHDR)param1, param2); break; + default: ret = waveInMessage(h, msg, param1, param2); break; + } + break; + case MMSYSTDRV_WAVEOUT: + switch (msg) + { + case WODM_PREPARE: ret = waveOutPrepareHeader(h, (LPWAVEHDR)param1, param2); break; + case WODM_UNPREPARE: ret = waveOutUnprepareHeader(h, (LPWAVEHDR)param1, param2); break; + case WODM_WRITE: ret = waveOutWrite(h, (LPWAVEHDR)param1, param2); break; + default: ret = waveOutMessage(h, msg, param1, param2); break; + } + break; default: ret = MMSYSERR_INVALHANDLE; break; /* should never be reached */ } if (map == MMSYSTEM_MAP_OKMEM)