<html><head></head><body>Looks OK but smwhy don't you use separate callback instead of matching the string?<br><br><div class="gmail_quote">Le 20 mai 2019 18:35:13 GMT+03:00, Romain Vimont <rom1v@videolabs.io> a écrit :<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">Expose the "device" event on the aout via a player callback.<hr> include/vlc_player.h |  9 +++++++++<br> src/input/player.c   | 11 +++++++++++<br> 2 files changed, 20 insertions(+)<br><br>diff --git a/include/vlc_player.h b/include/vlc_player.h<br>index d4c49fa89d..054c4abae3 100644<br>--- a/include/vlc_player.h<br>+++ b/include/vlc_player.h<br>@@ -944,6 +944,15 @@ struct vlc_player_aout_cbs<br>      */<br>     void (*on_mute_changed)(vlc_player_t *player,<br>         bool new_muted, void *data);<br>+<br>+    /**<br>+     * Called when the audio device has changed<br>+     *<br>+     * @param player unlocked player instance<br>+     * @param device the device name<br>+     */<br>+    void (*on_device_changed)(vlc_player_t *player, const char *device,<br>+                              void *data);<br> };<br> <br> /**<br>diff --git a/src/input/player.c b/src/input/player.c<br>index e01701ba65..e81c717f36 100644<br>--- a/src/input/player.c<br>+++ b/src/input/player.c<br>@@ -3044,6 +3044,15 @@ vlc_player_AoutCallback(vlc_object_t *this, const char *var,<br>             vlc_player_vout_OSDVolume(player, true);<br>         }<br>     }<br>+    else if (strcmp(var, "device") == 0)<br>+    {<br>+        const char *old = oldval.psz_string;<br>+        const char *new = newval.psz_string;<br>+        /* support NULL values for string comparison */<br>+        if (old != new && (!old || !new || strcmp(old, new)))<br>+            vlc_player_aout_SendEvent(player, on_device_changed,<br>+                                      newval.psz_string);<br>+    }<br>     else<br>         vlc_assert_unreachable();<br> <br>@@ -3513,6 +3522,7 @@ vlc_player_New(vlc_object_t *parent, enum vlc_player_lock_type lock_type,<br>     {<br>         var_AddCallback(aout, "volume", vlc_player_AoutCallback, player);<br>         var_AddCallback(aout, "mute", vlc_player_AoutCallback, player);<br>+        var_AddCallback(aout, "device", vlc_player_AoutCallback, player);<br>         var_AddCallback(player, "corks", vlc_player_CorkCallback, NULL);<br>         input_resource_PutAout(player->resource, aout);<br>     }<br>@@ -3534,6 +3544,7 @@ error:<br>     {<br>         var_DelCallback(aout, "volume", vlc_player_AoutCallback, player);<br>         var_DelCallback(aout, "mute", vlc_player_AoutCallback, player);<br>+        var_DelCallback(aout, "device", vlc_player_AoutCallback, player);<br>         var_DelCallback(player, "corks", vlc_player_AoutCallback, NULL);<br>     }<br>     if (player->resource)</pre></blockquote></div><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.</body></html>