* variables.h: variables handling
*****************************************************************************
* 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>
*
* \param p_val The new minimum value
* \param p_val2 Unused
*/
-#define VLC_VAR_SETMIN 0x0010
+#define VLC_VAR_SETMIN 0x0010
/**
* Set the maximum value of this variable
* \param p_val The new maximum value
* \param p_val2 Unused
*/
-#define VLC_VAR_SETMAX 0x0011
-#define VLC_VAR_SETSTEP 0x0012
+#define VLC_VAR_SETMAX 0x0011
+#define VLC_VAR_SETSTEP 0x0012
/**
* Set the value of this variable without triggering any callbacks
* \param p_val The new value
* \param p_val2 Unused
*/
-#define VLC_VAR_SETVALUE 0x0013
-
-#define VLC_VAR_SETTEXT 0x0014
-#define VLC_VAR_GETTEXT 0x0015
-
-#define VLC_VAR_ADDCHOICE 0x0020
-#define VLC_VAR_DELCHOICE 0x0021
-#define VLC_VAR_CLEARCHOICES 0x0022
-#define VLC_VAR_SETDEFAULT 0x0023
-#define VLC_VAR_GETCHOICES 0x0024
-#define VLC_VAR_FREECHOICES 0x0025
-#define VLC_VAR_GETLIST 0x0026
-#define VLC_VAR_FREELIST 0x0027
-#define VLC_VAR_CHOICESCOUNT 0x0028
-
-#define VLC_VAR_INHERITVALUE 0x0030
+#define VLC_VAR_SETVALUE 0x0013
+
+#define VLC_VAR_SETTEXT 0x0014
+#define VLC_VAR_GETTEXT 0x0015
+
+#define VLC_VAR_ADDCHOICE 0x0020
+#define VLC_VAR_DELCHOICE 0x0021
+#define VLC_VAR_CLEARCHOICES 0x0022
+#define VLC_VAR_SETDEFAULT 0x0023
+#define VLC_VAR_GETCHOICES 0x0024
+#define VLC_VAR_FREECHOICES 0x0025
+#define VLC_VAR_GETLIST 0x0026
+#define VLC_VAR_FREELIST 0x0027
+#define VLC_VAR_CHOICESCOUNT 0x0028
+
+#define VLC_VAR_INHERITVALUE 0x0030
+#define VLC_VAR_TRIGGER_CALLBACKS 0x0035
/**@}*/
/*****************************************************************************
* libvlc.c: main libvlc source
*****************************************************************************
* 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>
* Samuel Hocevar <sam@zoy.org>
#endif
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.
/*
* Message queue options
*/
+
+ var_Create( p_vlc, "verbose", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
if( config_GetInt( p_vlc, "quiet" ) )
{
- libvlc.i_verbose = -1;
- }
- else
- {
- int i_tmp = config_GetInt( p_vlc, "verbose" );
- if( i_tmp >= 0 )
- {
- libvlc.i_verbose = __MIN( i_tmp, 2 );
- }
+ vlc_value_t val;
+ val.i_int = -1;
+ var_Set( p_vlc, "verbose", val );
}
+ 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" );
/*
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;
+}
* variables.c: routines for object variables handling
*****************************************************************************
* 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>
*
}
}
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:
break;