- p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE );
- if( p_input )
- {
- p_playlist = pl_Hold( p_input );
- char cmd[6];
- switch( playlist_Status( p_playlist ) )
- {
- case PLAYLIST_STOPPED:
- strcpy( cmd, "stop" );
- break;
- case PLAYLIST_RUNNING:
- strcpy( cmd, "play" );
- break;
- case PLAYLIST_PAUSED:
- strcpy( cmd, "pause" );
- break;
- default:
- cmd[0] = '\0';
- } /* var_GetInteger( p_input, "state" ) */
- msg_rc( STATUS_CHANGE "( %s state: %d ): %s",
- cmd, newval.i_int,
- ppsz_input_state[ newval.i_int ] );
- vlc_object_release( p_playlist );
- vlc_object_release( p_input );
- }
+ p_playlist = pl_Hold( p_intf );
+ PL_LOCK;
+ int i_status = playlist_Status( p_playlist );
+ PL_UNLOCK;
+ pl_Release( p_intf );
+
+ switch( i_status )
+ {
+ case PLAYLIST_STOPPED:
+ strcpy( cmd, "stop" );
+ break;
+ case PLAYLIST_RUNNING:
+ strcpy( cmd, "play" );
+ break;
+ case PLAYLIST_PAUSED:
+ strcpy( cmd, "pause" );
+ break;
+ default:
+ cmd[0] = '\0';
+ } /* var_GetInteger( p_input, "state" ) */
+ msg_rc( STATUS_CHANGE "( %s state: %d ): %s", cmd, newval.i_int,
+ ppsz_input_state[ newval.i_int ] );
+