]> git.sesse.net Git - vlc/commitdiff
auhal: unlock mutex in stream listener error paths
authorDavid Fuhrmann <david.fuhrmann@googlemail.com>
Sun, 23 Feb 2014 18:17:09 +0000 (19:17 +0100)
committerDavid Fuhrmann <david.fuhrmann@googlemail.com>
Mon, 24 Feb 2014 14:08:13 +0000 (15:08 +0100)
modules/audio_output/auhal.c

index cb5c07b15ccb8498953f9cd5d32c278147e2d198..3078c1af527e18a5546839976fbbaa3eac1d48c7 100644 (file)
@@ -1497,18 +1497,22 @@ static OSStatus StreamsChangedListener(AudioObjectID inObjectID,  UInt32 inNumbe
     AudioObjectPropertyAddress streamsAddress = { kAudioDevicePropertyStreams, kAudioDevicePropertyScopeOutput, kAudioObjectPropertyElementMaster };
     err = AudioObjectGetPropertyDataSize(p_sys->i_selected_dev, &streamsAddress, 0, NULL, &i_param_size);
     if (err != noErr) {
-        msg_Err(p_aout, "could not get number of streams [%4.4s]", (char *)&err);
+        msg_Err(p_aout, "could not get number of streams for device %i [%4.4s]", p_sys->i_selected_dev, (char *)&err);
+        vlc_mutex_unlock(&p_sys->var_lock);
         return VLC_EGENERIC;
     }
 
     i_streams = i_param_size / sizeof(AudioStreamID);
     p_streams = (AudioStreamID *)malloc(i_param_size);
-    if (p_streams == NULL)
+    if (p_streams == NULL) {
+        vlc_mutex_unlock(&p_sys->var_lock);
         return VLC_ENOMEM;
+    }
 
     err = AudioObjectGetPropertyData(p_sys->i_selected_dev, &streamsAddress, 0, NULL, &i_param_size, p_streams);
     if (err != noErr) {
         msg_Err(p_aout, "could not get list of streams [%4.4s]", (char *)&err);
+        vlc_mutex_unlock(&p_sys->var_lock);
         return VLC_EGENERIC;
     }
     vlc_mutex_unlock(&p_sys->var_lock);