[vlc-devel] commit: Export var_Inherit() ( Rémi Denis-Courmont )
git version control
git at videolan.org
Wed Dec 30 19:04:12 CET 2009
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Wed Dec 30 19:38:03 2009 +0200| [9fd89d7b997a929968dbf0645277aa65948e94ea] | committer: Rémi Denis-Courmont
Export var_Inherit()
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9fd89d7b997a929968dbf0645277aa65948e94ea
---
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 217d7c7..43d6de7 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 484cd77..9217093 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 07673b7..dc504c6 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;
More information about the vlc-devel
mailing list