[AUDIO-BRINGUP]
authorJohannes Anderwald <johannes.anderwald@reactos.org>
Fri, 3 Dec 2010 11:14:29 +0000 (11:14 +0000)
committerJohannes Anderwald <johannes.anderwald@reactos.org>
Fri, 3 Dec 2010 11:14:29 +0000 (11:14 +0000)
- Fix opening of mixer / midi devices

svn path=/branches/audio-bringup/; revision=49917

lib/drivers/sound/mmebuddy/mmewrap.c
lib/drivers/sound/mmebuddy/wave/format.c

index 583d198..9e03770 100644 (file)
@@ -130,11 +130,11 @@ MmeOpenDevice(
     UINT Message;
     PSOUND_DEVICE SoundDevice;
     PSOUND_DEVICE_INSTANCE SoundDeviceInstance;
-    LPWAVEFORMATEX Format;
+    LPWAVEFORMATEX Format = NULL;
 
     SND_TRACE(L"Opening device");
 
-    VALIDATE_MMSYS_PARAMETER( IS_WAVE_DEVICE_TYPE(DeviceType) );    /* FIXME? wave in too? */
+    VALIDATE_MMSYS_PARAMETER( IS_WAVE_DEVICE_TYPE(DeviceType) || IS_MIXER_DEVICE_TYPE(DeviceType) || IS_MIDI_DEVICE_TYPE(DeviceType) );    /* FIXME? wave in too? */
     VALIDATE_MMSYS_PARAMETER( OpenParameters );
 
     Result = GetSoundDevice(DeviceType, DeviceId, &SoundDevice);
index ecc5bbc..34541c4 100644 (file)
@@ -65,8 +65,6 @@ SetWaveDeviceFormat(
     SND_TRACE(L"Setting wave format\n");
 
     VALIDATE_MMSYS_PARAMETER( IsValidSoundDeviceInstance(SoundDeviceInstance) );
-    VALIDATE_MMSYS_PARAMETER( Format );
-    VALIDATE_MMSYS_PARAMETER( FormatSize >= sizeof(WAVEFORMATEX) );
 
     Result = GetSoundDeviceFromInstance(SoundDeviceInstance, &SoundDevice);
     if ( ! MMSUCCESS(Result) )
@@ -74,9 +72,14 @@ SetWaveDeviceFormat(
 
     Result = GetSoundDeviceType(SoundDevice, &DeviceType);
     SND_ASSERT( Result == MMSYSERR_NOERROR );
+    if (DeviceType == WAVE_IN_DEVICE_TYPE || DeviceType == WAVE_OUT_DEVICE_TYPE)
+    {
+        VALIDATE_MMSYS_PARAMETER( Format );
+        VALIDATE_MMSYS_PARAMETER( FormatSize >= sizeof(WAVEFORMATEX) );
+    }
 
     /* Ensure we have a wave device (TODO: check if this applies to wavein as well) */
-    VALIDATE_MMSYS_PARAMETER( IS_WAVE_DEVICE_TYPE(DeviceType) );
+    VALIDATE_MMSYS_PARAMETER( IS_WAVE_DEVICE_TYPE(DeviceType) || IS_MIDI_DEVICE_TYPE(DeviceType) || IS_MIXER_DEVICE_TYPE(DeviceType));
 
     /* Obtain the function table */
     Result = GetSoundDeviceFunctionTable(SoundDevice, &FunctionTable);