]> git.sesse.net Git - vlc/blobdiff - src/audio_output/dec.c
aout: move aout_ChannelsRestart()
[vlc] / src / audio_output / dec.c
index 92e4fdf9a051a701ca474bc9b4a1a44c39a89bb4..52e4fcfd5a98feacfdfb19595a5aa1c73cefd54a 100644 (file)
@@ -166,7 +166,7 @@ static void aout_CheckRestart (audio_output_t *aout)
  * Marks the audio output for restart, to update any parameter of the output
  * plug-in (e.g. output device or channel mapping).
  */
-void aout_RequestRestart (audio_output_t *aout)
+static void aout_RequestRestart (audio_output_t *aout)
 {
     aout_owner_t *owner = aout_owner (aout);
 
@@ -174,6 +174,22 @@ void aout_RequestRestart (audio_output_t *aout)
     vlc_atomic_set (&owner->restart, AOUT_RESTART_OUTPUT|AOUT_RESTART_INPUT);
 }
 
+int aout_ChannelsRestart (vlc_object_t *obj, const char *varname,
+                          vlc_value_t oldval, vlc_value_t newval, void *data)
+{
+    audio_output_t *aout = (audio_output_t *)obj;
+    (void)oldval; (void)newval; (void)data;
+
+    if (!strcmp (varname, "audio-device"))
+    {
+        /* This is supposed to be a significant change and supposes
+         * rebuilding the channel choices. */
+        var_Destroy (aout, "stereo-mode");
+    }
+    aout_RequestRestart (aout);
+    return 0;
+}
+
 /**
  * This function will safely mark aout input to be restarted as soon as
  * possible to take configuration changes into account