<html><head></head><body>Hello,<br><br>Most if not all controls can be reduced to constant size state because they either cancel previous controls or accumulate. There are no reasons why queueing them should be allowed to fail.<br><br>What control actually can fail to be requested?<br><br><div class="gmail_quote">Le 26 août 2019 16:10:28 GMT+03:00, Thomas Guillem <thomas@gllm.fr> 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"><hr> src/input/input.c          |  9 ++++++---<br> src/input/input_internal.h | 14 +++++++-------<br> 2 files changed, 13 insertions(+), 10 deletions(-)<br><br>diff --git a/src/input/input.c b/src/input/input.c<br>index 2473cae292..02513ed21b 100644<br>--- a/src/input/input.c<br>+++ b/src/input/input.c<br>@@ -1412,8 +1412,8 @@ static void End( input_thread_t * p_input )<br> /*****************************************************************************<br>  * Control<br>  *****************************************************************************/<br>-void input_ControlPush( input_thread_t *p_input,<br>-                        int i_type, const input_control_param_t *p_param )<br>+int input_ControlPush( input_thread_t *p_input,<br>+                       int i_type, const input_control_param_t *p_param )<br> {<br>     input_thread_private_t *sys = input_priv(p_input);<br> <br>@@ -1428,6 +1428,8 @@ void input_ControlPush( input_thread_t *p_input,<br>                      i_type );<br>         if( p_param )<br>             ControlRelease( i_type, p_param );<br>+        vlc_mutex_unlock( &sys->lock_control );<br>+        return VLC_EGENERIC;<br>     }<br>     else<br>     {<br>@@ -1441,8 +1443,9 @@ void input_ControlPush( input_thread_t *p_input,<br>         sys->control[sys->i_control++] = c;<br> <br>         vlc_cond_signal( &sys->wait_control );<br>+        vlc_mutex_unlock( &sys->lock_control );<br>+        return VLC_SUCCESS;<br>     }<br>-    vlc_mutex_unlock( &sys->lock_control );<br> }<br> <br> static size_t ControlGetReducedIndexLocked( input_thread_t *p_input )<br>diff --git a/src/input/input_internal.h b/src/input/input_internal.h<br>index 67ee8a03ae..688fd56b19 100644<br>--- a/src/input/input_internal.h<br>+++ b/src/input/input_internal.h<br>@@ -587,30 +587,30 @@ enum input_control_e<br> <br> /* Internal helpers */<br> <br>-void input_ControlPush( input_thread_t *, int, const input_control_param_t * );<br>+int input_ControlPush( input_thread_t *, int, const input_control_param_t * );<br> <br> /* XXX for string value you have to allocate it before calling<br>  * input_ControlPushHelper<br>  */<br>-static inline void input_ControlPushHelper( input_thread_t *p_input, int i_type, vlc_value_t *val )<br>+static inline int input_ControlPushHelper( input_thread_t *p_input, int i_type, vlc_value_t *val )<br> {<br>     if( val != NULL )<br>     {<br>         input_control_param_t param = { .val = *val };<br>-        input_ControlPush( p_input, i_type, &param );<br>+        return input_ControlPush( p_input, i_type, &param );<br>     }<br>     else<br>     {<br>-        input_ControlPush( p_input, i_type, NULL );<br>+        return input_ControlPush( p_input, i_type, NULL );<br>     }<br> }<br> <br>-static inline void input_ControlPushEsHelper( input_thread_t *p_input, int i_type,<br>-                                              vlc_es_id_t *id )<br>+static inline int input_ControlPushEsHelper( input_thread_t *p_input, int i_type,<br>+                                             vlc_es_id_t *id )<br> {<br>     assert( i_type == INPUT_CONTROL_SET_ES || i_type == INPUT_CONTROL_UNSET_ES ||<br>             i_type == INPUT_CONTROL_RESTART_ES );<br>-    input_ControlPush( p_input, i_type, &(input_control_param_t) {<br>+    return input_ControlPush( p_input, i_type, &(input_control_param_t) {<br>         .id = vlc_es_id_Hold( id ),<br>     } );<br> }</pre></blockquote></div><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.</body></html>