]> git.sesse.net Git - vlc/blobdiff - modules/control/http/rpn.c
Lock/Unlock the http control module.
[vlc] / modules / control / http / rpn.c
index 757c26c30b7d3bc160f6679a02df394ea637a832..712b145d7b8af8c486b249de0be152442221eca1 100644 (file)
@@ -52,8 +52,6 @@ static vlc_object_t *GetVLCObject( intf_thread_t *p_intf,
         i_object_type = VLC_OBJECT_VOUT;
     else if( !strcmp( psz_object, "VLC_OBJECT_AOUT" ) )
         i_object_type = VLC_OBJECT_AOUT;
-    else if( !strcmp( psz_object, "VLC_OBJECT_SOUT" ) )
-        i_object_type = VLC_OBJECT_SOUT;
     else
         msg_Warn( p_intf, "unknown object type (%s)", psz_object );
 
@@ -372,6 +370,14 @@ void EvaluateRPN( intf_thread_t *p_intf, mvar_t  *vars,
             SSPush( st, value );
             free( value );
         }
+        else if( !strcmp( s, "xml_encode" ) )
+        {
+            char *url = SSPop( st );
+            char *value = convert_xml_special_chars( url );
+            free( url );
+            SSPush( st, value );
+            free( value );
+        }
         else if( !strcmp( s, "addslashes" ) )
         {
             char *psz_src = SSPop( st );
@@ -431,7 +437,7 @@ void EvaluateRPN( intf_thread_t *p_intf, mvar_t  *vars,
         else if( !strcmp( s, "realpath" ) )
         {
             char *psz_src = SSPop( st );
-            char *psz_dir = RealPath( p_intf, psz_src );
+            char *psz_dir = RealPath( psz_src );
 
             SSPush( st, psz_dir );
             free( psz_src );
@@ -489,31 +495,33 @@ void EvaluateRPN( intf_thread_t *p_intf, mvar_t  *vars,
             int i_id = SSPopN( st, vars );
             int i_ret;
 
+            vlc_object_lock( p_sys->p_playlist );
             i_ret = playlist_Control( p_sys->p_playlist, PLAYLIST_VIEWPLAY,
-                                      true, NULL,
+                                      pl_Locked, NULL,
                                       playlist_ItemGetById( p_sys->p_playlist,
-                                      i_id, true ) );
+                                      i_id, pl_Locked ) );
+            vlc_object_unlock( p_sys->p_playlist );
             msg_Dbg( p_intf, "requested playlist item: %i", i_id );
             SSPushN( st, i_ret );
         }
         else if( !strcmp( s, "vlc_stop" ) )
         {
-            playlist_Control( p_sys->p_playlist, PLAYLIST_STOP, true );
+            playlist_Control( p_sys->p_playlist, PLAYLIST_STOP, pl_Unlocked );
             msg_Dbg( p_intf, "requested playlist stop" );
         }
         else if( !strcmp( s, "vlc_pause" ) )
         {
-            playlist_Control( p_sys->p_playlist, PLAYLIST_PAUSE, true );
+            playlist_Control( p_sys->p_playlist, PLAYLIST_PAUSE, pl_Unlocked );
             msg_Dbg( p_intf, "requested playlist pause" );
         }
         else if( !strcmp( s, "vlc_next" ) )
         {
-            playlist_Control( p_sys->p_playlist, PLAYLIST_SKIP, true, 1 );
+            playlist_Control( p_sys->p_playlist, PLAYLIST_SKIP, pl_Unlocked, 1 );
             msg_Dbg( p_intf, "requested playlist next" );
         }
         else if( !strcmp( s, "vlc_previous" ) )
         {
-            playlist_Control( p_sys->p_playlist, PLAYLIST_SKIP, true, -1 );
+            playlist_Control( p_sys->p_playlist, PLAYLIST_SKIP, pl_Unlocked, -1 );
             msg_Dbg( p_intf, "requested playlist previous" );
         }
         else if( !strcmp( s, "vlc_seek" ) )
@@ -846,7 +854,7 @@ void EvaluateRPN( intf_thread_t *p_intf, mvar_t  *vars,
             {
                 i_ret = playlist_AddInput( p_sys->p_playlist, p_input,
                                    PLAYLIST_APPEND, PLAYLIST_END, true,
-                                   false);
+                                   pl_Unlocked );
                 vlc_gc_decref( p_input );
                 if( i_ret == VLC_SUCCESS )
                     msg_Dbg( p_intf, "requested mrl add: %s", mrl );
@@ -861,18 +869,18 @@ void EvaluateRPN( intf_thread_t *p_intf, mvar_t  *vars,
         }
         else if( !strcmp( s, "playlist_empty" ) )
         {
-            playlist_Clear( p_sys->p_playlist, false );
+            playlist_Clear( p_sys->p_playlist, pl_Unlocked );
             msg_Dbg( p_intf, "requested playlist empty" );
         }
         else if( !strcmp( s, "playlist_delete" ) )
         {
             int i_id = SSPopN( st, vars );
             playlist_item_t *p_item = playlist_ItemGetById( p_sys->p_playlist,
-                                                            i_id, false );
+                                                            i_id, pl_Unlocked );
             if( p_item )
             {
                 playlist_DeleteFromInput( p_sys->p_playlist,
-                                          p_item->p_input->i_id, false );
+                                          p_item->p_input->i_id, pl_Unlocked );
                 msg_Dbg( p_intf, "requested playlist delete: %d", i_id );
             }
             else
@@ -1006,6 +1014,7 @@ void EvaluateRPN( intf_thread_t *p_intf, mvar_t  *vars,
             free( psz_meta );
             free( psz_val );
         }
+#ifdef ENABLE_VLM
         else if( !strcmp( s, "vlm_command" ) || !strcmp( s, "vlm_cmd" ) )
         {
             char *psz_elt;
@@ -1056,6 +1065,7 @@ void EvaluateRPN( intf_thread_t *p_intf, mvar_t  *vars,
             free( psz_cmd );
             free( psz_error );
         }
+#endif /* ENABLE_VLM */
         else if( !strcmp( s, "snapshot" ) )
         {
             if( p_sys->p_input )