Commit 1114ee5a authored by Derk-Jan Hartman's avatar Derk-Jan Hartman

* include/variables.h

  src/misc/variables.c: Added a VLC_VAR_TRIGGER_CALLBACKS action
* src/libvlc.c: You can now change verbosity on the fly by using the "verbose"
  variable of p_vlc. -1 == quiet
parent 528a21a0
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* variables.h: variables handling * variables.h: variables handling
***************************************************************************** *****************************************************************************
* Copyright (C) 2002 VideoLAN * Copyright (C) 2002 VideoLAN
* $Id: variables.h,v 1.19 2003/12/02 12:57:35 gbazin Exp $ * $Id: variables.h,v 1.20 2004/01/09 20:36:21 hartman Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* *
...@@ -137,36 +137,37 @@ struct variable_t ...@@ -137,36 +137,37 @@ struct variable_t
* \param p_val The new minimum value * \param p_val The new minimum value
* \param p_val2 Unused * \param p_val2 Unused
*/ */
#define VLC_VAR_SETMIN 0x0010 #define VLC_VAR_SETMIN 0x0010
/** /**
* Set the maximum value of this variable * Set the maximum value of this variable
* \param p_val The new maximum value * \param p_val The new maximum value
* \param p_val2 Unused * \param p_val2 Unused
*/ */
#define VLC_VAR_SETMAX 0x0011 #define VLC_VAR_SETMAX 0x0011
#define VLC_VAR_SETSTEP 0x0012 #define VLC_VAR_SETSTEP 0x0012
/** /**
* Set the value of this variable without triggering any callbacks * Set the value of this variable without triggering any callbacks
* \param p_val The new value * \param p_val The new value
* \param p_val2 Unused * \param p_val2 Unused
*/ */
#define VLC_VAR_SETVALUE 0x0013 #define VLC_VAR_SETVALUE 0x0013
#define VLC_VAR_SETTEXT 0x0014 #define VLC_VAR_SETTEXT 0x0014
#define VLC_VAR_GETTEXT 0x0015 #define VLC_VAR_GETTEXT 0x0015
#define VLC_VAR_ADDCHOICE 0x0020 #define VLC_VAR_ADDCHOICE 0x0020
#define VLC_VAR_DELCHOICE 0x0021 #define VLC_VAR_DELCHOICE 0x0021
#define VLC_VAR_CLEARCHOICES 0x0022 #define VLC_VAR_CLEARCHOICES 0x0022
#define VLC_VAR_SETDEFAULT 0x0023 #define VLC_VAR_SETDEFAULT 0x0023
#define VLC_VAR_GETCHOICES 0x0024 #define VLC_VAR_GETCHOICES 0x0024
#define VLC_VAR_FREECHOICES 0x0025 #define VLC_VAR_FREECHOICES 0x0025
#define VLC_VAR_GETLIST 0x0026 #define VLC_VAR_GETLIST 0x0026
#define VLC_VAR_FREELIST 0x0027 #define VLC_VAR_FREELIST 0x0027
#define VLC_VAR_CHOICESCOUNT 0x0028 #define VLC_VAR_CHOICESCOUNT 0x0028
#define VLC_VAR_INHERITVALUE 0x0030 #define VLC_VAR_INHERITVALUE 0x0030
#define VLC_VAR_TRIGGER_CALLBACKS 0x0035
/**@}*/ /**@}*/
/***************************************************************************** /*****************************************************************************
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* libvlc.c: main libvlc source * libvlc.c: main libvlc source
***************************************************************************** *****************************************************************************
* Copyright (C) 1998-2004 VideoLAN * Copyright (C) 1998-2004 VideoLAN
* $Id: libvlc.c,v 1.109 2004/01/06 12:02:05 zorglub Exp $ * $Id: libvlc.c,v 1.110 2004/01/09 20:36:21 hartman Exp $
* *
* Authors: Vincent Seguin <seguin@via.ecp.fr> * Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org> * Samuel Hocevar <sam@zoy.org>
...@@ -99,6 +99,8 @@ static void ShowConsole ( void ); ...@@ -99,6 +99,8 @@ static void ShowConsole ( void );
#endif #endif
static int ConsoleWidth ( void ); static int ConsoleWidth ( void );
static int VerboseCallback( vlc_object_t *, char const *,
vlc_value_t, vlc_value_t, void * );
/***************************************************************************** /*****************************************************************************
* vlc_current_object: return the current object. * vlc_current_object: return the current object.
...@@ -497,18 +499,17 @@ int VLC_Init( int i_object, int i_argc, char *ppsz_argv[] ) ...@@ -497,18 +499,17 @@ int VLC_Init( int i_object, int i_argc, char *ppsz_argv[] )
/* /*
* Message queue options * Message queue options
*/ */
var_Create( p_vlc, "verbose", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
if( config_GetInt( p_vlc, "quiet" ) ) if( config_GetInt( p_vlc, "quiet" ) )
{ {
libvlc.i_verbose = -1; vlc_value_t val;
} val.i_int = -1;
else var_Set( p_vlc, "verbose", val );
{
int i_tmp = config_GetInt( p_vlc, "verbose" );
if( i_tmp >= 0 )
{
libvlc.i_verbose = __MIN( i_tmp, 2 );
}
} }
var_AddCallback( p_vlc, "verbose", VerboseCallback, NULL );
var_Change( p_vlc, "verbose", VLC_VAR_TRIGGER_CALLBACKS, NULL, NULL );
libvlc.b_color = libvlc.b_color && config_GetInt( p_vlc, "color" ); libvlc.b_color = libvlc.b_color && config_GetInt( p_vlc, "color" );
/* /*
...@@ -1630,3 +1631,15 @@ static int ConsoleWidth( void ) ...@@ -1630,3 +1631,15 @@ static int ConsoleWidth( void )
return i_width; return i_width;
} }
static int VerboseCallback( vlc_object_t *p_this, const char *psz_variable,
vlc_value_t old_val, vlc_value_t new_val, void *param)
{
vlc_t *p_vlc = (vlc_t *)p_this;
if( new_val.i_int >= -1 )
{
p_vlc->p_libvlc->i_verbose = __MIN( new_val.i_int, 2 );
}
return VLC_SUCCESS;
}
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* variables.c: routines for object variables handling * variables.c: routines for object variables handling
***************************************************************************** *****************************************************************************
* Copyright (C) 2002-2004 VideoLAN * Copyright (C) 2002-2004 VideoLAN
* $Id: variables.c,v 1.35 2004/01/06 12:02:06 zorglub Exp $ * $Id: variables.c,v 1.36 2004/01/09 20:36:21 hartman Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* *
...@@ -614,6 +614,41 @@ int __var_Change( vlc_object_t *p_this, const char *psz_name, ...@@ -614,6 +614,41 @@ int __var_Change( vlc_object_t *p_this, const char *psz_name,
} }
} }
break; break;
case VLC_VAR_TRIGGER_CALLBACKS:
{
/* Deal with callbacks. Tell we're in a callback, release the lock,
* call stored functions, retake the lock. */
if( p_var->i_entries )
{
int i_var;
int i_entries = p_var->i_entries;
callback_entry_t *p_entries = p_var->p_entries;
p_var->b_incallback = VLC_TRUE;
vlc_mutex_unlock( &p_this->var_lock );
/* The real calls */
for( ; i_entries-- ; )
{
p_entries[i_entries].pf_callback( p_this, psz_name, p_var->val, p_var->val,
p_entries[i_entries].p_data );
}
vlc_mutex_lock( &p_this->var_lock );
i_var = Lookup( p_this->p_vars, p_this->i_vars, psz_name );
if( i_var < 0 )
{
msg_Err( p_this, "variable %s has disappeared", psz_name );
vlc_mutex_unlock( &p_this->var_lock );
return VLC_ENOVAR;
}
p_var = &p_this->p_vars[i_var];
p_var->b_incallback = VLC_FALSE;
}
}
break;
default: default:
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment