#endif
#include "http.h"
-#include "vlc_url.h"
-#include "vlc_meta.h"
-#include "vlc_strings.h"
+#include <vlc_url.h>
+#include <vlc_meta.h>
+#include <vlc_strings.h>
static vlc_object_t *GetVLCObject( intf_thread_t *p_intf,
const char *psz_object,
bool *pb_need_release )
{
intf_sys_t *p_sys = p_intf->p_sys;
- int i_object_type = 0;
vlc_object_t *p_object = NULL;
*pb_need_release = false;
if( !strcmp( psz_object, "VLC_OBJECT_LIBVLC" ) )
p_object = VLC_OBJECT(p_intf->p_libvlc);
- else if( !strcmp( psz_object, "VLC_OBJECT_INTF" ) )
- p_object = VLC_OBJECT(p_intf);
else if( !strcmp( psz_object, "VLC_OBJECT_PLAYLIST" ) )
p_object = VLC_OBJECT(p_sys->p_playlist);
else if( !strcmp( psz_object, "VLC_OBJECT_INPUT" ) )
p_object = VLC_OBJECT(p_sys->p_input);
- else if( !strcmp( psz_object, "VLC_OBJECT_VOUT" ) )
- i_object_type = VLC_OBJECT_VOUT;
- else if( !strcmp( psz_object, "VLC_OBJECT_AOUT" ) )
- i_object_type = VLC_OBJECT_AOUT;
- else
- msg_Warn( p_intf, "unknown object type (%s)", psz_object );
-
- if( p_object == NULL && i_object_type )
+ else if( p_sys->p_input )
{
- *pb_need_release = true;
- p_object = vlc_object_find( p_intf, i_object_type, FIND_ANYWHERE );
+ if( !strcmp( psz_object, "VLC_OBJECT_VOUT" ) )
+ p_object = VLC_OBJECT( input_GetVout( p_sys->p_input ) );
+ else if( !strcmp( psz_object, "VLC_OBJECT_AOUT" ) )
+ p_object = VLC_OBJECT( input_GetAout( p_sys->p_input ) );
+ if( p_object )
+ *pb_need_release = true;
}
+ else
+ msg_Warn( p_intf, "unknown object type (%s)", psz_object );
return p_object;
}
/* 1. Integer function */
if( !strcmp( s, "!" ) )
{
- SSPushN( st, ~SSPopN( st, vars ) );
+ SSPushN( st, !SSPopN( st, vars ) );
}
else if( !strcmp( s, "^" ) )
{
else if( !strcmp( s, "url_encode" ) )
{
char *url = SSPop( st );
- char *value = vlc_UrlEncode( url );
+ char *value = encode_URI_component( url );
free( url );
SSPush( st, value );
free( value );
}
- else if( !strcmp( s, "xml_encode" ) )
+ else if( !strcmp( s, "xml_encode" )
+ || !strcmp( s, "htmlspecialchars" ) )
{
char *url = SSPop( st );
char *value = convert_xml_special_chars( url );
free( psz_src );
free( psz_dest );
}
- else if( !strcmp( s, "htmlspecialchars" ) )
- {
- char *psz_src = SSPop( st );
- char *psz_dest;
-
- psz_dest = convert_xml_special_chars( psz_src );
-
- SSPush( st, psz_dest );
- free( psz_src );
- free( psz_dest );
- }
else if( !strcmp( s, "realpath" ) )
{
char *psz_src = SSPop( st );
int i_id = SSPopN( st, vars );
int i_ret;
- vlc_object_lock( p_sys->p_playlist );
+ playlist_Lock( p_sys->p_playlist );
i_ret = playlist_Control( p_sys->p_playlist, PLAYLIST_VIEWPLAY,
pl_Locked, NULL,
playlist_ItemGetById( p_sys->p_playlist,
- i_id, pl_Locked ) );
- vlc_object_unlock( p_sys->p_playlist );
+ i_id ) );
+ playlist_Unlock( p_sys->p_playlist );
msg_Dbg( p_intf, "requested playlist item: %i", i_id );
SSPushN( st, i_ret );
}
case VLC_VAR_STRING:
psz_type = "VLC_VAR_STRING";
break;
- case VLC_VAR_MODULE:
- psz_type = "VLC_VAR_MODULE";
- break;
- case VLC_VAR_FILE:
- psz_type = "VLC_VAR_FILE";
- break;
- case VLC_VAR_DIRECTORY:
- psz_type = "VLC_VAR_DIRECTORY";
- break;
case VLC_VAR_VARIABLE:
psz_type = "VLC_VAR_VARIABLE";
break;
case VLC_VAR_INTEGER:
case VLC_VAR_HOTKEY:
val.i_int = SSPopN( st, vars );
- msg_Dbg( p_intf, "requested %s var change: %s->%d",
+ msg_Dbg( p_intf, "requested %s var change: %s->%"PRIu64,
psz_object, psz_variable, val.i_int );
break;
case VLC_VAR_STRING:
- case VLC_VAR_MODULE:
- case VLC_VAR_FILE:
- case VLC_VAR_DIRECTORY:
case VLC_VAR_VARIABLE:
val.psz_string = psz_value = SSPop( st );
msg_Dbg( p_intf, "requested %s var change: %s->%s",
if( !b_error )
var_Set( p_object, psz_variable, val );
- if( psz_value != NULL )
- free( psz_value );
+ free( psz_value );
}
else
msg_Warn( p_intf, "vlc_var_set called without an object" );
SSPushN( st, val.i_int );
break;
case VLC_VAR_STRING:
- case VLC_VAR_MODULE:
- case VLC_VAR_FILE:
- case VLC_VAR_DIRECTORY:
case VLC_VAR_VARIABLE:
SSPush( st, val.psz_string );
free( val.psz_string );
config_PutInt( p_intf, psz_variable, SSPopN( st, vars ) );
break;
case VLC_VAR_STRING:
- case VLC_VAR_MODULE:
- case VLC_VAR_FILE:
- case VLC_VAR_DIRECTORY:
{
char *psz_string = SSPop( st );
config_PutPsz( p_intf, psz_variable, psz_string );
SSPushN( st, config_GetInt( p_intf, psz_variable ) );
break;
case VLC_VAR_STRING:
- case VLC_VAR_MODULE:
- case VLC_VAR_FILE:
- case VLC_VAR_DIRECTORY:
{
char *psz_string = config_GetPsz( p_intf, psz_variable );
SSPush( st, psz_string );
}
i_result = config_SaveConfigFile( p_intf, psz_module );
- if( psz_module != NULL )
- free( psz_module );
+ free( psz_module );
SSPushN( st, i_result );
}
else if( !strcmp( s, "vlc_config_reset" ) )
{
playlist_item_t *p_item;
msg_Dbg( p_intf, "requested mrl add: %s", mrl );
+ playlist_Lock( p_sys->p_playlist );
p_item = playlist_ItemGetByInput( p_sys->p_playlist,
- p_input,
- pl_Unlocked );
+ p_input );
if( p_item )
i_ret = p_item->i_id;
+ playlist_Unlock( p_sys->p_playlist );
}
else
msg_Warn( p_intf, "adding mrl %s failed", mrl );
else if( !strcmp( s, "playlist_delete" ) )
{
int i_id = SSPopN( st, vars );
+ playlist_Lock( p_sys->p_playlist );
playlist_item_t *p_item = playlist_ItemGetById( p_sys->p_playlist,
- i_id, pl_Unlocked );
+ i_id );
if( p_item )
{
playlist_DeleteFromInput( p_sys->p_playlist,
- p_item->p_input->i_id, pl_Unlocked );
+ p_item->p_input, pl_Locked );
msg_Dbg( p_intf, "requested playlist delete: %d", i_id );
}
else
msg_Dbg( p_intf, "couldn't find playlist item to delete (%d)",
i_id );
}
+ playlist_Unlock( p_sys->p_playlist );
}
else if( !strcmp( s, "playlist_move" ) )
{
char *psz_vol = SSPop( st );
int i_value;
audio_volume_t i_volume;
- aout_VolumeGet( p_intf, &i_volume );
+ i_volume = aout_VolumeGet( p_sys->p_playlist );
if( psz_vol[0] == '+' )
{
i_value = atoi( psz_vol );
if( (i_volume + i_value) > AOUT_VOLUME_MAX )
- aout_VolumeSet( p_intf, AOUT_VOLUME_MAX );
+ aout_VolumeSet( p_sys->p_playlist, AOUT_VOLUME_MAX );
else
- aout_VolumeSet( p_intf, i_volume + i_value );
+ aout_VolumeSet( p_sys->p_playlist, i_volume + i_value );
}
else if( psz_vol[0] == '-' )
{
i_value = atoi( psz_vol );
if( (i_volume + i_value) < AOUT_VOLUME_MIN )
- aout_VolumeSet( p_intf, AOUT_VOLUME_MIN );
+ aout_VolumeSet( p_sys->p_playlist, AOUT_VOLUME_MIN );
else
- aout_VolumeSet( p_intf, i_volume + i_value );
+ aout_VolumeSet( p_sys->p_playlist, i_volume + i_value );
}
else if( strstr( psz_vol, "%") != NULL )
{
i_value = atoi( psz_vol );
if( i_value < 0 ) i_value = 0;
if( i_value > 400 ) i_value = 400;
- aout_VolumeSet( p_intf, (i_value * (AOUT_VOLUME_MAX - AOUT_VOLUME_MIN))/400+AOUT_VOLUME_MIN);
+ aout_VolumeSet( p_sys->p_playlist, (i_value * (AOUT_VOLUME_MAX - AOUT_VOLUME_MIN))/400+AOUT_VOLUME_MIN);
}
else
{
i_value = atoi( psz_vol );
if( i_value > AOUT_VOLUME_MAX ) i_value = AOUT_VOLUME_MAX;
if( i_value < AOUT_VOLUME_MIN ) i_value = AOUT_VOLUME_MIN;
- aout_VolumeSet( p_intf, i_value );
+ aout_VolumeSet( p_sys->p_playlist, i_value );
}
- aout_VolumeGet( p_intf, &i_volume );
+ i_volume = aout_VolumeGet( p_sys->p_playlist );
free( psz_vol );
}
else if( !strcmp( s, "vlc_get_meta" ) )
while( strcmp( psz_elt = SSPop( st ), "" )
&& strcmp( psz_elt, ";" ) )
{
- char *psz_buf =
- (char *)malloc( strlen( psz_cmd ) + strlen( psz_elt ) + 2 );
- sprintf( psz_buf, "%s %s", psz_cmd, psz_elt );
+ char* psz_buf;
+ if( asprintf( &psz_buf, "%s %s", psz_cmd, psz_elt ) == -1 )
+ psz_buf = NULL;
free( psz_cmd );
free( psz_elt );
psz_cmd = psz_buf;
}
else
{
- psz_error = malloc( strlen(vlm_answer->psz_name) +
- strlen(vlm_answer->psz_value) +
- strlen( " : ") + 1 );
- sprintf( psz_error , "%s : %s" , vlm_answer->psz_name,
- vlm_answer->psz_value );
+ if( asprintf( &psz_error , "%s : %s" , vlm_answer->psz_name,
+ vlm_answer->psz_value ) == -1 )
+ psz_error = NULL;
}
mvar_AppendNewVar( vars, "vlm_error", psz_error );
{
if( p_sys->p_input )
{
- vout_thread_t *p_vout;
- p_vout = vlc_object_find( p_sys->p_input,
- VLC_OBJECT_VOUT, FIND_CHILD );
-
+ vout_thread_t *p_vout = input_GetVout( p_sys->p_input );
if( p_vout )
{
- vout_Control( p_vout, VOUT_SNAPSHOT );
+ var_TriggerCallback( p_vout, "video-snapshot" );
vlc_object_release( p_vout );
msg_Dbg( p_intf, "requested snapshot" );
}