Eric Pouech : mmsystem.dll16: Correctly send messages up to winmm.dll.

Alexandre Julliard julliard at winehq.org
Mon Nov 9 15:14:18 CST 2009


Module: wine
Branch: master
Commit: 8575935f610bafd3b3529d4243ca36b9a7fc6deb
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=8575935f610bafd3b3529d4243ca36b9a7fc6deb

Author: Eric Pouech <eric.pouech at 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)




More information about the wine-cvs mailing list