* rc.c : remote control stdin/stdout plugin for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: rc.c,v 1.14 2002/12/06 16:34:06 sam Exp $
+ * $Id: rc.c,v 1.15 2002/12/07 15:25:26 gbazin Exp $
*
* Authors: Peter Surda <shurdeek@panorama.sth.ac.at>
*
static int Activate ( vlc_object_t * );
static void Run ( intf_thread_t *p_intf );
-static int Playlist ( vlc_object_t *, char *, char * );
-static int Quit ( vlc_object_t *, char *, char * );
-static int Intf ( vlc_object_t *, char *, char * );
-static int Volume ( vlc_object_t *, char *, char * );
-static int VolumeMove ( vlc_object_t *, char *, char * );
-static int AudioConfig ( vlc_object_t *, char *, char * );
+static int Playlist ( vlc_object_t *, char const *,
+ vlc_value_t, vlc_value_t, void * );
+static int Quit ( vlc_object_t *, char const *,
+ vlc_value_t, vlc_value_t, void * );
+static int Intf ( vlc_object_t *, char const *,
+ vlc_value_t, vlc_value_t, void * );
+static int Volume ( vlc_object_t *, char const *,
+ vlc_value_t, vlc_value_t, void * );
+static int VolumeMove ( vlc_object_t *, char const *,
+ vlc_value_t, vlc_value_t, void * );
+static int AudioConfig ( vlc_object_t *, char const *,
+ vlc_value_t, vlc_value_t, void * );
/*****************************************************************************
* Module descriptor
p_playlist = NULL;
/* Register commands that will be cleaned up upon object destruction */
- var_Create( p_intf, "quit", VLC_VAR_COMMAND );
- var_Set( p_intf, "quit", (vlc_value_t)(void*)Quit );
- var_Create( p_intf, "intf", VLC_VAR_COMMAND );
- var_Set( p_intf, "intf", (vlc_value_t)(void*)Intf );
-
- var_Create( p_intf, "play", VLC_VAR_COMMAND );
- var_Set( p_intf, "play", (vlc_value_t)(void*)Playlist );
- var_Create( p_intf, "stop", VLC_VAR_COMMAND );
- var_Set( p_intf, "stop", (vlc_value_t)(void*)Playlist );
- var_Create( p_intf, "pause", VLC_VAR_COMMAND );
- var_Set( p_intf, "pause", (vlc_value_t)(void*)Playlist );
- var_Create( p_intf, "seek", VLC_VAR_COMMAND );
- var_Set( p_intf, "seek", (vlc_value_t)(void*)Playlist );
- var_Create( p_intf, "prev", VLC_VAR_COMMAND );
- var_Set( p_intf, "prev", (vlc_value_t)(void*)Playlist );
- var_Create( p_intf, "next", VLC_VAR_COMMAND );
- var_Set( p_intf, "next", (vlc_value_t)(void*)Playlist );
-
- var_Create( p_intf, "title", VLC_VAR_COMMAND );
- var_Set( p_intf, "title", (vlc_value_t)(void*)Playlist );
- var_Create( p_intf, "title_n", VLC_VAR_COMMAND );
- var_Set( p_intf, "title_n", (vlc_value_t)(void*)Playlist );
- var_Create( p_intf, "title_p", VLC_VAR_COMMAND );
- var_Set( p_intf, "title_p", (vlc_value_t)(void*)Playlist );
- var_Create( p_intf, "chapter", VLC_VAR_COMMAND );
- var_Set( p_intf, "chapter", (vlc_value_t)(void*)Playlist );
- var_Create( p_intf, "chapter_n", VLC_VAR_COMMAND );
- var_Set( p_intf, "chapter_n", (vlc_value_t)(void*)Playlist );
- var_Create( p_intf, "chapter_p", VLC_VAR_COMMAND );
- var_Set( p_intf, "chapter_p", (vlc_value_t)(void*)Playlist );
-
- var_Create( p_intf, "volume", VLC_VAR_COMMAND );
- var_Set( p_intf, "volume", (vlc_value_t)(void*)Volume );
- var_Create( p_intf, "volup", VLC_VAR_COMMAND );
- var_Set( p_intf, "volup", (vlc_value_t)(void*)VolumeMove );
- var_Create( p_intf, "voldown", VLC_VAR_COMMAND );
- var_Set( p_intf, "voldown", (vlc_value_t)(void*)VolumeMove );
- var_Create( p_intf, "adev", VLC_VAR_COMMAND );
- var_Set( p_intf, "adev", (vlc_value_t)(void*)AudioConfig );
- var_Create( p_intf, "achan", VLC_VAR_COMMAND );
- var_Set( p_intf, "achan", (vlc_value_t)(void*)AudioConfig );
+ var_Create( p_intf, "quit", VLC_VAR_VOID | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "quit", Quit, NULL );
+ var_Create( p_intf, "intf", VLC_VAR_STRING | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "intf", Intf, NULL );
+
+ var_Create( p_intf, "play", VLC_VAR_VOID | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "play", Playlist, NULL );
+ var_Create( p_intf, "stop", VLC_VAR_VOID | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "stop", Playlist, NULL );
+ var_Create( p_intf, "pause", VLC_VAR_VOID | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "pause", Playlist, NULL );
+ var_Create( p_intf, "seek", VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "seek", Playlist, NULL );
+ var_Create( p_intf, "prev", VLC_VAR_VOID | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "prev", Playlist, NULL );
+ var_Create( p_intf, "next", VLC_VAR_VOID | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "next", Playlist, NULL );
+
+ var_Create( p_intf, "title", VLC_VAR_STRING | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "title", Playlist, NULL );
+ var_Create( p_intf, "title_n", VLC_VAR_VOID | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "title_n", Playlist, NULL );
+ var_Create( p_intf, "title_p", VLC_VAR_VOID | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "title_p", Playlist, NULL );
+ var_Create( p_intf, "chapter", VLC_VAR_STRING | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "chapter", Playlist, NULL );
+ var_Create( p_intf, "chapter_n", VLC_VAR_VOID | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "chapter_n", Playlist, NULL );
+ var_Create( p_intf, "chapter_p", VLC_VAR_VOID | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "chapter_p", Playlist, NULL );
+
+ var_Create( p_intf, "volume", VLC_VAR_STRING | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "volume", Volume, NULL );
+ var_Create( p_intf, "volup", VLC_VAR_STRING | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "volup", VolumeMove, NULL );
+ var_Create( p_intf, "voldown", VLC_VAR_STRING | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "voldown", VolumeMove, NULL );
+ var_Create( p_intf, "adev", VLC_VAR_STRING | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "adev", AudioConfig, NULL );
+ var_Create( p_intf, "achan", VLC_VAR_STRING | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_intf, "achan", AudioConfig, NULL );
while( !p_intf->b_die )
{
}
/* If the user typed a registered local command, try it */
- if( var_Type( p_intf, psz_cmd ) == VLC_VAR_COMMAND )
+ if( var_Type( p_intf, psz_cmd ) & VLC_VAR_ISCOMMAND )
{
vlc_value_t val;
int i_ret;
val.psz_string = psz_arg;
- i_ret = var_Get( p_intf, psz_cmd, &val );
+ i_ret = var_Set( p_intf, psz_cmd, val );
printf( "%s: returned %i (%s)\n",
psz_cmd, i_ret, vlc_error( i_ret ) );
}
/* Or maybe it's a global command */
- else if( var_Type( p_intf->p_libvlc, psz_cmd ) == VLC_VAR_COMMAND )
+ else if( var_Type( p_intf->p_libvlc, psz_cmd ) & VLC_VAR_ISCOMMAND )
{
vlc_value_t val;
int i_ret;
val.psz_string = psz_arg;
/* FIXME: it's a global command, but we should pass the
* local object as an argument, not p_intf->p_libvlc. */
- i_ret = var_Get( p_intf->p_libvlc, psz_cmd, &val );
+ i_ret = var_Set( p_intf->p_libvlc, psz_cmd, val );
printf( "%s: returned %i (%s)\n",
psz_cmd, i_ret, vlc_error( i_ret ) );
}
}
}
-static int Playlist( vlc_object_t *p_this, char *psz_cmd, char *psz_arg )
+static int Playlist( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
input_thread_t * p_input;
playlist_t * p_playlist;
}
else if( !strcmp( psz_cmd, "seek" ) )
{
- input_Seek( p_input, atoi( psz_arg ),
+ input_Seek( p_input, atoi( newval.psz_string ),
INPUT_SEEK_SECONDS | INPUT_SEEK_SET );
}
else if( !strcmp( psz_cmd, "chapter" ) ||
if( !strcmp( psz_cmd, "chapter" ) )
{
- if ( *psz_arg )
+ if ( *newval.psz_string )
{
/* Set. */
- i_chapter = atoi( psz_arg );
+ i_chapter = atoi( newval.psz_string );
}
else
{
if( !strcmp( psz_cmd, "title" ) )
{
- if ( *psz_arg )
+ if ( *newval.psz_string )
{
/* Set. */
- i_title = atoi( psz_arg );
+ i_title = atoi( newval.psz_string );
}
else
{
return VLC_SUCCESS;
}
-static int Quit( vlc_object_t *p_this, char *psz_cmd, char *psz_arg )
+static int Quit( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
p_this->p_vlc->b_die = VLC_TRUE;
return VLC_SUCCESS;
}
-static int Intf( vlc_object_t *p_this, char *psz_cmd, char *psz_arg )
+static int Intf( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
intf_thread_t *p_newintf;
char *psz_oldmodule = config_GetPsz( p_this->p_vlc, "intf" );
- config_PutPsz( p_this->p_vlc, "intf", psz_arg );
+ config_PutPsz( p_this->p_vlc, "intf", newval.psz_string );
p_newintf = intf_Create( p_this->p_vlc );
config_PutPsz( p_this->p_vlc, "intf", psz_oldmodule );
return VLC_SUCCESS;
}
-static int Signal( vlc_object_t *p_this, char *psz_cmd, char *psz_arg )
-{
- raise( atoi(psz_arg) );
- return VLC_SUCCESS;
-}
-
-static int Volume( vlc_object_t *p_this, char *psz_cmd, char *psz_arg )
+static int Volume( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
aout_instance_t * p_aout;
int i_error;
p_aout = vlc_object_find( p_this, VLC_OBJECT_AOUT, FIND_ANYWHERE );
if ( p_aout == NULL ) return VLC_ENOOBJ;
- if ( *psz_arg )
+ if ( *newval.psz_string )
{
/* Set. */
- audio_volume_t i_volume = atoi( psz_arg );
+ audio_volume_t i_volume = atoi( newval.psz_string );
if ( i_volume > AOUT_VOLUME_MAX )
{
printf( "Volume must be in the range %d-%d\n", AOUT_VOLUME_MIN,
return i_error;
}
-static int VolumeMove( vlc_object_t * p_this, char * psz_cmd, char * psz_arg )
+static int VolumeMove( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
aout_instance_t * p_aout;
audio_volume_t i_volume;
- int i_nb_steps = atoi(psz_arg);
+ int i_nb_steps = atoi(newval.psz_string);
int i_error = VLC_SUCCESS;
if ( i_nb_steps <= 0 || i_nb_steps > (AOUT_VOLUME_MAX/AOUT_VOLUME_STEP) )
return i_error;
}
-static int AudioConfig( vlc_object_t * p_this, char * psz_cmd, char * psz_arg )
+static int AudioConfig( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
aout_instance_t * p_aout;
const char * psz_variable;
psz_name = "audio channels";
}
- if ( !*psz_arg )
+ if ( !*newval.psz_string )
{
/* Retrieve all registered ***. */
vlc_value_t val;
else
{
vlc_value_t val;
- val.psz_string = psz_arg;
+ val.psz_string = newval.psz_string;
i_error = var_Set( (vlc_object_t *)p_aout, psz_variable, val );
}
return i_error;
}
-
* test4.c : Miscellaneous stress tests module for vlc
*****************************************************************************
* Copyright (C) 2002 VideoLAN
- * $Id: test4.c,v 1.4 2002/11/10 18:04:22 sam Exp $
+ * $Id: test4.c,v 1.5 2002/12/07 15:25:26 gbazin Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
/*****************************************************************************
* Local prototypes.
*****************************************************************************/
-static int Foo ( vlc_object_t *, char *, char * );
-
-static int Callback ( vlc_object_t *, char *, char * );
+static int Foo ( vlc_object_t *, char const *,
+ vlc_value_t, vlc_value_t, void * );
+static int Callback ( vlc_object_t *, char const *,
+ vlc_value_t, vlc_value_t, void * );
static int MyCallback( vlc_object_t *, char const *,
vlc_value_t, vlc_value_t, void * );
static void * MyThread ( vlc_object_t * );
-static int Stress ( vlc_object_t *, char *, char * );
+static int Stress ( vlc_object_t *, char const *,
+ vlc_value_t, vlc_value_t, void * );
static void * Dummy ( vlc_object_t * );
-static int Signal ( vlc_object_t *, char *, char * );
+static int Signal ( vlc_object_t *, char const *,
+ vlc_value_t, vlc_value_t, void * );
/*****************************************************************************
* Module descriptor.
*****************************************************************************/
vlc_module_begin();
set_description( _("Miscellaneous stress tests") );
- var_Create( p_module->p_libvlc, "foo-test", VLC_VAR_COMMAND );
- var_Set( p_module->p_libvlc, "foo-test", (vlc_value_t)(void*)Foo );
- var_Create( p_module->p_libvlc, "callback-test", VLC_VAR_COMMAND );
- var_Set( p_module->p_libvlc, "callback-test", (vlc_value_t)(void*)Callback );
- var_Create( p_module->p_libvlc, "stress-test", VLC_VAR_COMMAND );
- var_Set( p_module->p_libvlc, "stress-test", (vlc_value_t)(void*)Stress );
- var_Create( p_module->p_libvlc, "signal", VLC_VAR_COMMAND );
- var_Set( p_module->p_libvlc, "signal", (vlc_value_t)(void*)Signal );
+ var_Create( p_module->p_libvlc, "foo-test",
+ VLC_VAR_VOID | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_module->p_libvlc, "foo-test", Foo, NULL );
+ var_Create( p_module->p_libvlc, "callback-test",
+ VLC_VAR_VOID | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_module->p_libvlc, "callback-test", Callback, NULL );
+ var_Create( p_module->p_libvlc, "stress-test",
+ VLC_VAR_STRING | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_module->p_libvlc, "stress-test", Stress, NULL );
+ var_Create( p_module->p_libvlc, "signal",
+ VLC_VAR_STRING | VLC_VAR_ISCOMMAND );
+ var_AddCallback( p_module->p_libvlc, "signal", Signal, NULL );
vlc_module_end();
/*****************************************************************************
* Foo: put anything here
*****************************************************************************/
-static int Foo( vlc_object_t *p_this, char *psz_cmd, char *psz_arg )
+static int Foo( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
vlc_value_t val;
int i, i_vals;
vlc_value_t *p_vals;
- var_Create( p_this, "honk", VLC_VAR_STRING | VLC_VAR_ISLIST );
+ var_Create( p_this, "honk", VLC_VAR_STRING | VLC_VAR_HASCHOICE );
val.psz_string = "foo";
var_Change( p_this, "honk", VLC_VAR_ADDCHOICE, &val );
/*****************************************************************************
* Callback: test callback functions
*****************************************************************************/
-static int Callback( vlc_object_t *p_this, char *psz_cmd, char *psz_arg )
+static int Callback( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
int i;
char psz_var[20];
/*****************************************************************************
* Stress: perform various stress tests
*****************************************************************************/
-static int Stress( vlc_object_t *p_this, char *psz_cmd, char *psz_arg )
+static int Stress( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
vlc_object_t **pp_objects;
mtime_t start;
char * psz_blob;
int i, i_level;
- if( *psz_arg )
+ if( *newval.psz_string )
{
- i_level = atoi( psz_arg );
+ i_level = atoi( newval.psz_string );
if( i_level <= 0 )
{
i_level = 1;
/*****************************************************************************
* Signal: send a signal to the current thread.
*****************************************************************************/
-static int Signal( vlc_object_t *p_this, char *psz_cmd, char *psz_arg )
+static int Signal( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
- raise( atoi(psz_arg) );
+ raise( atoi(newval.psz_string) );
return VLC_SUCCESS;
}
-