From 9fd89d7b997a929968dbf0645277aa65948e94ea Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Wed, 30 Dec 2009 19:38:03 +0200 Subject: [PATCH] Export var_Inherit() --- include/vlc_variables.h | 1 + src/libvlccore.sym | 1 + src/misc/variables.c | 21 ++++++++++----------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/include/vlc_variables.h b/include/vlc_variables.h index 217d7c7472..43d6de7bca 100644 --- a/include/vlc_variables.h +++ b/include/vlc_variables.h @@ -143,6 +143,7 @@ VLC_EXPORT( int, __var_Get, ( vlc_object_t *, const char *, vlc_value_t * ) ); VLC_EXPORT( int, var_SetChecked, ( vlc_object_t *, const char *, int, vlc_value_t ) ); VLC_EXPORT( int, var_GetChecked, ( vlc_object_t *, const char *, int, vlc_value_t * ) ); VLC_EXPORT( int, __var_GetAndSet, ( vlc_object_t *, const char *, int, vlc_value_t ) ); +VLC_EXPORT( int, var_Inherit, ( vlc_object_t *, const char *, int, vlc_value_t * ) ); #define var_Command(a,b,c,d,e) __var_Command( VLC_OBJECT( a ), b, c, d, e ) VLC_EXPORT( int, __var_Command, ( vlc_object_t *, const char *, const char *, const char *, char ** ) ); diff --git a/src/libvlccore.sym b/src/libvlccore.sym index 484cd77dde..9217093364 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -445,6 +445,7 @@ __var_Set var_SetChecked __var_TriggerCallback __var_Type +var_Inherit video_format_FixRgb video_format_IsSimilar video_format_Setup diff --git a/src/misc/variables.c b/src/misc/variables.c index 07673b72a6..dc504c67a2 100644 --- a/src/misc/variables.c +++ b/src/misc/variables.c @@ -160,8 +160,6 @@ static int Lookup ( variable_t **, size_t, const char * ); static void CheckValue ( variable_t *, vlc_value_t * ); -static int InheritValue( vlc_object_t *, const char *, vlc_value_t *, - int ); static int TriggerCallback( vlc_object_t *, variable_t *, const char *, vlc_value_t ); @@ -268,7 +266,7 @@ int __var_Create( vlc_object_t *p_this, const char *psz_name, int i_type ) if( i_type & VLC_VAR_DOINHERIT ) { - if( InheritValue( p_this, psz_name, &p_var->val, p_var->i_type ) ) + if( var_Inherit( p_this, psz_name, i_type, &p_var->val ) ) msg_Err( p_this, "cannot inherit value for %s", psz_name ); else if( i_type & VLC_VAR_HASCHOICE ) { @@ -1382,16 +1380,17 @@ static void CheckValue ( variable_t *p_var, vlc_value_t *p_val ) } } -/***************************************************************************** - * InheritValue: try to inherit the value of this variable from the closest - * ancestor objects or ultimately from the configuration. - * The function should always be entered with the object var_lock locked. - *****************************************************************************/ -static int InheritValue( vlc_object_t *p_this, const char *psz_name, - vlc_value_t *p_val, int i_type ) +/** + * Finds the value of a variable. If the specified object does not hold a + * variable with the specified name, try the parent object, and iterate until + * the top of the tree. If no match is found, the value is read from the + * configuration. + */ +int var_Inherit( vlc_object_t *p_this, const char *psz_name, int i_type, + vlc_value_t *p_val ) { i_type &= VLC_VAR_CLASS; - for( vlc_object_t *obj = p_this->p_parent; obj != NULL; obj = obj->p_parent ) + for( vlc_object_t *obj = p_this; obj != NULL; obj = obj->p_parent ) if( var_GetChecked( obj, psz_name, i_type, p_val ) == VLC_SUCCESS ) return VLC_SUCCESS; -- 2.39.5