[vlc-commits] auhal: fix compilation and simplify overly complicated code by adapting to the hotplug API

Felix Paul Kühne git at videolan.org
Sun Apr 14 12:14:36 CEST 2013


vlc | branch: master | Felix Paul Kühne <fkuehne at videolan.org> | Sun Apr 14 12:14:29 2013 +0200| [810446acd090e9cf3af3f27400d80735b4af5f57] | committer: Felix Paul Kühne

auhal: fix compilation and simplify overly complicated code by adapting to the hotplug API

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=810446acd090e9cf3af3f27400d80735b4af5f57
---

 modules/audio_output/auhal.c |   43 ++++++------------------------------------
 1 file changed, 6 insertions(+), 37 deletions(-)

diff --git a/modules/audio_output/auhal.c b/modules/audio_output/auhal.c
index 60e0fcd..cdeb323 100644
--- a/modules/audio_output/auhal.c
+++ b/modules/audio_output/auhal.c
@@ -133,7 +133,6 @@ static int      StartAnalog             (audio_output_t *, audio_sample_format_t
 static int      StartSPDIF              (audio_output_t *, audio_sample_format_t *);
 static void     Stop                    (audio_output_t *);
 
-static int      DeviceList              (audio_output_t *p_aout, char ***namesp, char ***descsp);
 static void     RebuildDeviceList       (audio_output_t *);
 static int      SwitchAudioDevice       (audio_output_t *p_aout, const char *name);
 static int      VolumeSet               (audio_output_t *, float);
@@ -193,7 +192,6 @@ static int Open(vlc_object_t *obj)
     p_aout->stop = Stop;
     p_aout->volume_set = VolumeSet;
     p_aout->mute_set = MuteSet;
-    p_aout->device_enum = DeviceList;
     p_aout->sys->devices = NULL;
     p_aout->device_select = SwitchAudioDevice;
 
@@ -967,41 +965,12 @@ static void Stop(audio_output_t *p_aout)
 #pragma mark -
 #pragma mark core interaction
 
-static int DeviceList(audio_output_t *p_aout, char ***namesp, char ***descsp)
+static void ReportDevice(audio_output_t *p_aout, UInt32 i_id, char *name)
 {
-    struct aout_sys_t   *p_sys = p_aout->sys;
-    char **names, **descs;
-    unsigned n = 0;
-
-    for (struct audio_device_t *device = p_sys->devices; device != NULL; device = device->next)
-        n++;
-
-    *namesp = names = xmalloc(sizeof(*names) * n);
-    *descsp = descs = xmalloc(sizeof(*descs) * n);
-
     char deviceid[100];
-    for (struct audio_device_t *device = p_sys->devices; device != NULL; device = device->next) {
-        sprintf(deviceid, "%i", device->deviceid);
-        *(names++) = strdup(deviceid);
-        *(descs++) = strdup(device->name);
-    }
-
-    return n;
-}
-
-static void add_device_to_list(audio_output_t * p_aout, UInt32 i_id, char *name)
-{
-    struct aout_sys_t *p_sys = p_aout->sys;
-
-    struct audio_device_t *device = malloc(sizeof(*device));
-    if (unlikely(device == NULL))
-        return;
-
-    device->next = p_sys->devices;
-    device->deviceid = i_id;
-    device->name = strdup(name);
+    sprintf(deviceid, "%i", i_id);
 
-    p_sys->devices = device;
+    aout_HotplugReport(p_aout, deviceid, name);
 }
 
 static void RebuildDeviceList(audio_output_t * p_aout)
@@ -1096,7 +1065,7 @@ static void RebuildDeviceList(audio_output_t * p_aout)
             continue;
         }
 
-        add_device_to_list(p_aout, i_id, psz_name);
+        ReportDevice(p_aout, i_id, psz_name);
 
         if (AudioDeviceSupportsDigital(p_aout, deviceIDs[i])) {
             b_digital = true;
@@ -1104,7 +1073,7 @@ static void RebuildDeviceList(audio_output_t * p_aout)
             char *psz_encoded_name = nil;
             asprintf(&psz_encoded_name, _("%s (Encoded Output)"), psz_name);
             i_id = i_id | AOUT_VAR_SPDIF_FLAG;
-            add_device_to_list(p_aout, i_id, psz_encoded_name);
+            ReportDevice(p_aout, i_id, psz_encoded_name);
             free(psz_encoded_name);
         }
 
@@ -1116,7 +1085,7 @@ static void RebuildDeviceList(audio_output_t * p_aout)
     }
 
     // TODO: fix default audio device
-    add_device_to_list(p_aout, 0, _("System Sound Output Device"));
+    ReportDevice(p_aout, 0, _("System Sound Output Device"));
 
     free(deviceIDs);
 }



More information about the vlc-commits mailing list