Commit c7cd0ac4 authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

input: Attempt to fix variables deadlocks.

parent c351872b
...@@ -1550,7 +1550,7 @@ static bool Control( input_thread_t *p_input, int i_type, ...@@ -1550,7 +1550,7 @@ static bool Control( input_thread_t *p_input, int i_type,
b_force_update = true; b_force_update = true;
/* Switch to play */ /* Switch to play */
input_ChangeState( p_input, PLAYING_S); input_ChangeStateWithVarCallback( p_input, PLAYING_S, false );
/* */ /* */
if( !i_ret ) if( !i_ret )
...@@ -1580,7 +1580,7 @@ static bool Control( input_thread_t *p_input, int i_type, ...@@ -1580,7 +1580,7 @@ static bool Control( input_thread_t *p_input, int i_type,
} }
/* Switch to new state */ /* Switch to new state */
input_ChangeState( p_input, state); input_ChangeStateWithVarCallback( p_input, state, false );
/* */ /* */
if( !i_ret ) if( !i_ret )
...@@ -1591,7 +1591,7 @@ static bool Control( input_thread_t *p_input, int i_type, ...@@ -1591,7 +1591,7 @@ static bool Control( input_thread_t *p_input, int i_type,
b_force_update = true; b_force_update = true;
/* Correct "state" value */ /* Correct "state" value */
input_ChangeState( p_input, p_input->i_state ); input_ChangeStateWithVarCallback( p_input, p_input->i_state, false );
} }
else if( val.i_int != PLAYING_S && val.i_int != PAUSE_S ) else if( val.i_int != PLAYING_S && val.i_int != PAUSE_S )
{ {
......
...@@ -384,10 +384,17 @@ int subtitles_Filter( const char *); ...@@ -384,10 +384,17 @@ int subtitles_Filter( const char *);
void MRLSplit( char *, const char **, const char **, char ** ); void MRLSplit( char *, const char **, const char **, char ** );
static inline void input_ChangeState( input_thread_t *p_input, int state ) static inline void input_ChangeStateWithVarCallback( input_thread_t *p_input, int state, bool callback )
{ {
bool changed = (p_input->i_state != state); bool changed = (p_input->i_state != state);
var_SetInteger( p_input, "state", p_input->i_state = state ); if( callback )
var_SetInteger( p_input, "state", p_input->i_state = state );
else
{
vlc_value_t val;
val.i_int = PLAYING_S;
var_Change( p_input, "state", VLC_VAR_SETVALUE, &val, NULL );
}
if( changed ) if( changed )
{ {
vlc_event_t event; vlc_event_t event;
...@@ -397,6 +404,12 @@ static inline void input_ChangeState( input_thread_t *p_input, int state ) ...@@ -397,6 +404,12 @@ static inline void input_ChangeState( input_thread_t *p_input, int state )
} }
} }
static inline void input_ChangeState( input_thread_t *p_input, int state )
{
input_ChangeStateWithVarCallback( p_input, state, true );
}
/* Access */ /* Access */
#define access_New( a, b, c, d ) __access_New(VLC_OBJECT(a), b, c, d ) #define access_New( a, b, c, d ) __access_New(VLC_OBJECT(a), b, c, d )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment