- bool changed = (p_input->i_state != state);
- var_SetInteger( p_input, "state", p_input->i_state = state );
+ const bool changed = p_input->i_state != state;
+
+ p_input->i_state = state;
+
+ input_item_SetHasErrorWhenReading( p_input->p->input.p_item, (state == ERROR_S) );
+
+ if( callback )
+ {
+ var_SetInteger( p_input, "state", state );
+ }
+ else
+ {
+ vlc_value_t val;
+ val.i_int = state;
+ var_Change( p_input, "state", VLC_VAR_SETVALUE, &val, NULL );
+ }