[vlc-commits] mmdevice: rework DevicesEnum parameters / return

Thomas Guillem git at videolan.org
Thu Mar 1 10:29:02 CET 2018


vlc/vlc-3.0 | branch: master | Thomas Guillem <thomas at gllm.fr> | Thu Mar  1 10:14:05 2018 +0100| [215e65e366e7fb020b74c66382265eebc93685d7] | committer: Thomas Guillem

mmdevice: rework DevicesEnum parameters / return

Don't rely on vlc_object_t anymore.

(cherry picked from commit c0ed6e86e82de94d168afbbd452969cf5b01b72e)
Signed-off-by: Thomas Guillem <thomas at gllm.fr>

> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=215e65e366e7fb020b74c66382265eebc93685d7
---

 modules/audio_output/mmdevice.c | 27 ++++++++++-----------------
 1 file changed, 10 insertions(+), 17 deletions(-)

diff --git a/modules/audio_output/mmdevice.c b/modules/audio_output/mmdevice.c
index c89bfddcaa..1bad48cb60 100644
--- a/modules/audio_output/mmdevice.c
+++ b/modules/audio_output/mmdevice.c
@@ -694,9 +694,9 @@ static const struct IMMNotificationClientVtbl vlc_MMNotificationClient =
     vlc_MMNotificationClient_OnPropertyValueChanged,
 };
 
-static int DevicesEnum(vlc_object_t *this, IMMDeviceEnumerator *it,
-                       void (*added_cb)(void *data, LPCWSTR wid, IMMDevice *dev),
-                       void *added_cb_data)
+static HRESULT DevicesEnum(IMMDeviceEnumerator *it,
+                           void (*added_cb)(void *data, LPCWSTR wid, IMMDevice *dev),
+                           void *added_cb_data)
 {
     HRESULT hr;
     IMMDeviceCollection *devs;
@@ -705,20 +705,12 @@ static int DevicesEnum(vlc_object_t *this, IMMDeviceEnumerator *it,
     hr = IMMDeviceEnumerator_EnumAudioEndpoints(it, eRender,
                                                 DEVICE_STATE_ACTIVE, &devs);
     if (FAILED(hr))
-    {
-        msg_Warn(this, "cannot enumerate audio endpoints (error 0x%lx)", hr);
-        return -1;
-    }
+        return hr;
 
     UINT count;
     hr = IMMDeviceCollection_GetCount(devs, &count);
     if (FAILED(hr))
-    {
-        msg_Warn(this, "cannot count audio endpoints (error 0x%lx)", hr);
-        count = 0;
-    }
-
-    unsigned n = 0;
+        return hr;
 
     for (UINT i = 0; i < count; i++)
     {
@@ -740,10 +732,9 @@ static int DevicesEnum(vlc_object_t *this, IMMDeviceEnumerator *it,
         added_cb(added_cb_data, devid, dev);
         IMMDevice_Release(dev);
         CoTaskMemFree(devid);
-        n++;
     }
     IMMDeviceCollection_Release(devs);
-    return n;
+    return S_OK;
 }
 
 static int DeviceRequestLocked(audio_output_t *aout)
@@ -1075,7 +1066,9 @@ static void *MMThread(void *data)
     EnterMTA();
     IMMDeviceEnumerator_RegisterEndpointNotificationCallback(it,
                                                           &sys->device_events);
-    DevicesEnum(VLC_OBJECT(aout), it, MMThread_DevicesEnum_Added, aout);
+    HRESULT hr = DevicesEnum(it, MMThread_DevicesEnum_Added, aout);
+    if (FAILED(hr))
+        msg_Warn(aout, "cannot enumerate audio endpoints (error 0x%lx)", hr);
 
     EnterCriticalSection(&sys->lock);
 
@@ -1430,7 +1423,7 @@ static int ReloadAudioDevices(vlc_object_t *this, char const *name,
     }
     list.count++;
 
-    DevicesEnum(this, it, Reload_DevicesEnum_Added, &list);
+    DevicesEnum(it, Reload_DevicesEnum_Added, &list);
 
 error:
     IMMDeviceEnumerator_Release((IMMDeviceEnumerator *)it);



More information about the vlc-commits mailing list