]> git.sesse.net Git - vlc/commitdiff
Export var_Inherit()
authorRémi Denis-Courmont <remi@remlab.net>
Wed, 30 Dec 2009 17:38:03 +0000 (19:38 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Wed, 30 Dec 2009 18:01:21 +0000 (20:01 +0200)
include/vlc_variables.h
src/libvlccore.sym
src/misc/variables.c

index 217d7c7472d7a68f57edeb59667e36e7ddb13bcd..43d6de7bca2a52dd20a803cb9676a64fe227ce45 100644 (file)
@@ -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 ** ) );
index 484cd77dde009cca208d57d3e80c7f1ea2d49e99..92170933640b204d575748d3f97a9cb23ce9d6dd 100644 (file)
@@ -445,6 +445,7 @@ __var_Set
 var_SetChecked
 __var_TriggerCallback
 __var_Type
+var_Inherit
 video_format_FixRgb
 video_format_IsSimilar
 video_format_Setup
index 07673b72a65cd88a73470e3ac223c201954ecb25..dc504c67a2fc47a2858020201499e47a3c78192c 100644 (file)
@@ -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;