Jörg Höhle : midimap: Have GetDevCaps error out when no MIDI device is present.

Alexandre Julliard julliard at winehq.org
Mon Feb 22 08:46:55 CST 2010


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

Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date:   Thu Feb 18 17:37:25 2010 +0100

midimap: Have GetDevCaps error out when no MIDI device is present.

---

 dlls/midimap/midimap.c  |    1 +
 dlls/winmm/tests/midi.c |    6 ++++++
 2 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/dlls/midimap/midimap.c b/dlls/midimap/midimap.c
index 77b8596..a55c722 100644
--- a/dlls/midimap/midimap.c
+++ b/dlls/midimap/midimap.c
@@ -470,6 +470,7 @@ static DWORD modGetDevCaps(UINT wDevID, MIDIMAPDATA* mom, LPMIDIOUTCAPSW lpMidiC
 	MIDICAPS_VOLUME|MIDICAPS_LRVOLUME
     };
     if (lpMidiCaps == NULL) return MMSYSERR_INVALPARAM;
+    if (!numMidiOutPorts) return MMSYSERR_BADDEVICEID;
 
     memcpy(lpMidiCaps, &mappercaps, min(size, sizeof(*lpMidiCaps)));
     return MMSYSERR_NOERROR;
diff --git a/dlls/winmm/tests/midi.c b/dlls/winmm/tests/midi.c
index 4038d41..eea066d 100644
--- a/dlls/winmm/tests/midi.c
+++ b/dlls/winmm/tests/midi.c
@@ -437,7 +437,13 @@ static void test_midi_outfns(HWND hwnd)
         ok(!rc, "midiOutClose rc=%s\n", mmsys_error(rc));
     }
     if (!ndevs) {
+        MIDIOUTCAPSA capsA;
         skip("Found no MIDI out device\n");
+
+        rc = midiOutGetDevCapsA(MIDIMAPPER, &capsA, sizeof(capsA));
+        /* GetDevCaps and Open must return compatible results */
+        ok(rc==MMSYSERR_BADDEVICEID || broken(rc==MMSYSERR_NODRIVER /*nt,w2k*/), "midiOutGetDevCaps MAPPER with no MIDI rc=%s\n", mmsys_error(rc));
+
         rc = midiOutOpen(&hm, MIDIMAPPER, 0, 0, CALLBACK_NULL);
         if (rc==MIDIERR_INVALIDSETUP) todo_wine /* Wine without snd-seq */
         ok(rc==MMSYSERR_BADDEVICEID || broken(rc==MMSYSERR_NODRIVER /*w2k*/), "midiOutOpen MAPPER with no MIDI rc=%s\n", mmsys_error(rc));




More information about the wine-cvs mailing list