Huw Davies : winecoreaudio: Move midi_in_add_buffer to the unixlib.

Alexandre Julliard julliard at winehq.org
Mon Nov 29 16:26:54 CST 2021


Module: wine
Branch: master
Commit: 27bda12c99bb753c7fa753c53c4030806f1eeaea
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=27bda12c99bb753c7fa753c53c4030806f1eeaea

Author: Huw Davies <huw at codeweavers.com>
Date:   Mon Nov 29 11:26:46 2021 +0000

winecoreaudio: Move midi_in_add_buffer to the unixlib.

Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/winecoreaudio.drv/coremidi.c | 46 +++++++++++++++++++++++++++++++++++
 dlls/winecoreaudio.drv/midi.c     | 50 ---------------------------------------
 2 files changed, 46 insertions(+), 50 deletions(-)

diff --git a/dlls/winecoreaudio.drv/coremidi.c b/dlls/winecoreaudio.drv/coremidi.c
index 8e12ad1a3c5..5d89b69e007 100644
--- a/dlls/winecoreaudio.drv/coremidi.c
+++ b/dlls/winecoreaudio.drv/coremidi.c
@@ -809,6 +809,49 @@ static DWORD midi_in_close(WORD dev_id, struct notify_context *notify)
     return MMSYSERR_NOERROR;
 }
 
+static DWORD midi_in_add_buffer(WORD dev_id, MIDIHDR *hdr, DWORD hdr_size)
+{
+    MIDIHDR **next;
+
+    TRACE("dev_id = %d hdr = %p hdr_size = %d\n", dev_id, hdr, hdr_size);
+
+    if (dev_id >= num_srcs)
+    {
+        WARN("bad device ID : %d\n", dev_id);
+        return MMSYSERR_BADDEVICEID;
+    }
+    if (!hdr || hdr_size < offsetof(MIDIHDR, dwOffset) || !hdr->dwBufferLength)
+    {
+        WARN("Invalid Parameter\n");
+        return MMSYSERR_INVALPARAM;
+    }
+    if (hdr->dwFlags & MHDR_INQUEUE)
+    {
+        WARN("Still playing\n");
+        return MIDIERR_STILLPLAYING;
+    }
+    if (!(hdr->dwFlags & MHDR_PREPARED))
+    {
+        WARN("Unprepared\n");
+        return MIDIERR_UNPREPARED;
+    }
+
+    hdr->dwFlags &= ~WHDR_DONE;
+    hdr->dwFlags |= MHDR_INQUEUE;
+    hdr->dwBytesRecorded = 0;
+    hdr->lpNext = NULL;
+
+    midi_in_lock((void *)TRUE);
+
+    next = &srcs[dev_id].lpQueueHdr;
+    while (*next) next = &(*next)->lpNext;
+    *next = hdr;
+
+    midi_in_lock((void *)FALSE);
+
+    return MMSYSERR_NOERROR;
+}
+
 static DWORD midi_in_prepare(WORD dev_id, MIDIHDR *hdr, DWORD hdr_size)
 {
     TRACE("dev_id = %d hdr = %p hdr_size = %d\n", dev_id, hdr, hdr_size);
@@ -966,6 +1009,9 @@ NTSTATUS midi_in_message(void *args)
     case MIDM_CLOSE:
         *params->err = midi_in_close(params->dev_id, params->notify);
         break;
+    case MIDM_ADDBUFFER:
+        *params->err = midi_in_add_buffer(params->dev_id, (MIDIHDR *)params->param_1, params->param_2);
+        break;
     case MIDM_PREPARE:
         *params->err = midi_in_prepare(params->dev_id, (MIDIHDR *)params->param_1, params->param_2);
         break;
diff --git a/dlls/winecoreaudio.drv/midi.c b/dlls/winecoreaudio.drv/midi.c
index 7894b4da906..4eb68c8b1d7 100644
--- a/dlls/winecoreaudio.drv/midi.c
+++ b/dlls/winecoreaudio.drv/midi.c
@@ -142,54 +142,6 @@ static void midi_lock( BOOL lock )
     UNIX_CALL(midi_in_lock, (void *)lock);
 }
 
-static DWORD MIDIIn_AddBuffer(WORD wDevID, LPMIDIHDR lpMidiHdr, DWORD dwSize)
-{
-    TRACE("wDevID=%d lpMidiHdr=%p dwSize=%d\n", wDevID, lpMidiHdr, dwSize);
-
-    if (wDevID >= MIDIIn_NumDevs) {
-        WARN("bad device ID : %d\n", wDevID);
-	return MMSYSERR_BADDEVICEID;
-    }
-    if (lpMidiHdr == NULL) {
-	WARN("Invalid Parameter\n");
-	return MMSYSERR_INVALPARAM;
-    }
-    if (dwSize < offsetof(MIDIHDR,dwOffset)) {
-	WARN("Invalid Parameter\n");
-	return MMSYSERR_INVALPARAM;
-    }
-    if (lpMidiHdr->dwBufferLength == 0) {
-	WARN("Invalid Parameter\n");
-	return MMSYSERR_INVALPARAM;
-    }
-    if (lpMidiHdr->dwFlags & MHDR_INQUEUE) {
-	WARN("Still playing\n");
-	return MIDIERR_STILLPLAYING;
-    }
-    if (!(lpMidiHdr->dwFlags & MHDR_PREPARED)) {
-	WARN("Unprepared\n");
-	return MIDIERR_UNPREPARED;
-    }
-
-    midi_lock( TRUE );
-    lpMidiHdr->dwFlags &= ~WHDR_DONE;
-    lpMidiHdr->dwFlags |= MHDR_INQUEUE;
-    lpMidiHdr->dwBytesRecorded = 0;
-    lpMidiHdr->lpNext = 0;
-    if (sources[wDevID].lpQueueHdr == 0) {
-	sources[wDevID].lpQueueHdr = lpMidiHdr;
-    } else {
-	LPMIDIHDR ptr;
-	for (ptr = sources[wDevID].lpQueueHdr;
-	     ptr->lpNext != 0;
-	     ptr = ptr->lpNext);
-	ptr->lpNext = lpMidiHdr;
-    }
-    midi_lock( FALSE );
-
-    return MMSYSERR_NOERROR;
-}
-
 static DWORD MIDIIn_Reset(WORD wDevID)
 {
     DWORD dwTime = GetTickCount();
@@ -384,8 +336,6 @@ DWORD WINAPI CoreAudio_midMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser, DWOR
 
     TRACE("%d %08x %08lx %08lx %08lx\n", wDevID, wMsg, dwUser, dwParam1, dwParam2);
     switch (wMsg) {
-        case MIDM_ADDBUFFER:
-            return MIDIIn_AddBuffer(wDevID, (LPMIDIHDR)dwParam1, dwParam2);
         case MIDM_RESET:
             return MIDIIn_Reset(wDevID);
     }




More information about the wine-cvs mailing list