[CMAKE]
[reactos.git] / dll / win32 / wdmaud.drv / mmixer.c
index 0b7cac1..a3a021c 100644 (file)
@@ -282,7 +282,7 @@ Enum(
         HeapFree(GetProcessHeap(), 0, DetailData);
         return MM_STATUS_NO_MEMORY;
     }
-
+       DPRINT1("DeviceName %S\n", DetailData->DevicePath);
     wcscpy(*DeviceName, DetailData->DevicePath);
     HeapFree(GetProcessHeap(), 0, DetailData);
 
@@ -354,10 +354,11 @@ WdmAudInitUserModeMixer()
     return TRUE;
 }
 
-VOID
-WdmAudCleanupMMixer()
+MMRESULT
+WdmAudCleanupByMMixer()
 {
     /* TODO */
+    return MMSYSERR_NOERROR;
 }
 
 MMRESULT
@@ -444,7 +445,7 @@ WdmAudGetWaveInCapabilities(
 }
 
 MMRESULT
-WdmAudSetWdmWaveDeviceFormatByMMixer(
+WdmAudSetWaveDeviceFormatByMMixer(
     IN  PSOUND_DEVICE_INSTANCE Instance,
     IN  DWORD DeviceId,
     IN  PWAVEFORMATEX WaveFormat,
@@ -518,7 +519,10 @@ WdmAudOpenSoundDeviceByMMixer(
     IN  struct _SOUND_DEVICE* SoundDevice,
     OUT PVOID* Handle)
 {
-    return WdmAudInitUserModeMixer();
+    if (WdmAudInitUserModeMixer())
+        return MMSYSERR_NOERROR;
+    else
+        return MMSYSERR_ERROR;
 }
 
 MMRESULT
@@ -561,7 +565,7 @@ WdmAudCloseSoundDeviceByMMixer(
 }
 
 MMRESULT
-WdmAudGetNumDevsByMMixer(
+WdmAudGetNumWdmDevsByMMixer(
     IN  MMDEVICE_TYPE DeviceType,
     OUT DWORD* DeviceCount)
 {
@@ -647,21 +651,50 @@ WdmAudSetMixerDeviceFormatByMMixer(
 }
 
 MMRESULT
-WdmAudSetWdmWaveStateByMMixer(
+WdmAudSetWaveStateByMMixer(
     IN  struct _SOUND_DEVICE_INSTANCE* SoundDeviceInstance,
     IN BOOL bStart)
 {
-    if (bStart)
+    MMDEVICE_TYPE DeviceType;
+    PSOUND_DEVICE SoundDevice;
+    MMRESULT Result;
+
+    Result = GetSoundDeviceFromInstance(SoundDeviceInstance, &SoundDevice);
+    SND_ASSERT( Result == MMSYSERR_NOERROR );
+
+
+    Result = GetSoundDeviceType(SoundDevice, &DeviceType);
+    SND_ASSERT( Result == MMSYSERR_NOERROR );
+
+    if (DeviceType == WAVE_IN_DEVICE_TYPE || DeviceType == WAVE_OUT_DEVICE_TYPE)
     {
-        MMixerSetWaveStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_ACQUIRE);
-        MMixerSetWaveStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_PAUSE);
-        MMixerSetWaveStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_RUN);
+        if (bStart)
+        {
+            MMixerSetWaveStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_ACQUIRE);
+            MMixerSetWaveStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_PAUSE);
+            MMixerSetWaveStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_RUN);
+        }
+        else
+        {
+            MMixerSetWaveStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_PAUSE);
+            MMixerSetWaveStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_ACQUIRE);
+            MMixerSetWaveStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_STOP);
+        }
     }
-    else
+    else if (DeviceType == MIDI_IN_DEVICE_TYPE || DeviceType == MIDI_OUT_DEVICE_TYPE)
     {
-        MMixerSetWaveStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_PAUSE);
-        MMixerSetWaveStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_ACQUIRE);
-        MMixerSetWaveStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_STOP);
+        if (bStart)
+        {
+            MMixerSetMidiStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_ACQUIRE);
+            MMixerSetMidiStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_PAUSE);
+            MMixerSetMidiStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_RUN);
+        }
+        else
+        {
+            MMixerSetMidiStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_PAUSE);
+            MMixerSetMidiStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_ACQUIRE);
+            MMixerSetMidiStatus(&MixerContext, SoundDeviceInstance->Handle, KSSTATE_STOP);
+        }
     }
 
     return MMSYSERR_NOERROR;
@@ -678,7 +711,7 @@ WdmAudResetStreamByMMixer(
 }
 
 MMRESULT
-WdmAudGetWdmPositionByMMixer(
+WdmAudGetWavePositionByMMixer(
     IN  struct _SOUND_DEVICE_INSTANCE* SoundDeviceInstance,
     IN  MMTIME* Time)
 {