]> git.sesse.net Git - vlc/blobdiff - src/misc/variables.c
Set libvlc path for other platforms
[vlc] / src / misc / variables.c
index 406c1aade9e84c4b73fcad62c44b9ef16549b393..9df5a40079c08e2a64309c0efc08973c63362d9a 100644 (file)
@@ -49,12 +49,21 @@ struct callback_entry_t
 /*****************************************************************************
  * Local comparison functions, returns 0 if v == w, < 0 if v < w, > 0 if v > w
  *****************************************************************************/
-static int CmpBool( vlc_value_t v, vlc_value_t w ) { return v.b_bool ? w.b_bool ? 0 : 1 : w.b_bool ? -1 : 0; }
-static int CmpInt( vlc_value_t v, vlc_value_t w ) { return v.i_int == w.i_int ? 0 : v.i_int > w.i_int ? 1 : -1; }
+static int CmpBool( vlc_value_t v, vlc_value_t w )
+{
+    return v.b_bool ? w.b_bool ? 0 : 1 : w.b_bool ? -1 : 0;
+}
+
+static int CmpInt( vlc_value_t v, vlc_value_t w )
+{
+    return v.i_int == w.i_int ? 0 : v.i_int > w.i_int ? 1 : -1;
+}
+
 static int CmpTime( vlc_value_t v, vlc_value_t w )
 {
     return v.i_time == w.i_time ? 0 : v.i_time > w.i_time ? 1 : -1;
 }
+
 static int CmpString( vlc_value_t v, vlc_value_t w )
 {
     if( !v.psz_string )
@@ -148,7 +157,8 @@ int_ops    = { CmpInt,     DupDummy,  FreeDummy,  },
 list_ops   = { CmpAddress, DupList,   FreeList,   },
 mutex_ops  = { CmpAddress, DupDummy,  FreeMutex,  },
 string_ops = { CmpString,  DupString, FreeString, },
-time_ops   = { CmpTime,    DupDummy,  FreeDummy,  };
+time_ops   = { CmpTime,    DupDummy,  FreeDummy,  },
+coords_ops = { NULL,       DupDummy,  FreeDummy,  };
 
 /*****************************************************************************
  * Local prototypes
@@ -198,6 +208,7 @@ static void Destroy( variable_t *p_var )
     free( p_var );
 }
 
+#undef var_Create
 /**
  * Initialize a vlc variable
  *
@@ -210,7 +221,7 @@ static void Destroy( variable_t *p_var )
  * \param i_type The variables type. Must be one of \ref var_type combined with
  *               zero or more \ref var_flags
  */
-int __var_Create( vlc_object_t *p_this, const char *psz_name, int i_type )
+int var_Create( vlc_object_t *p_this, const char *psz_name, int i_type )
 {
     static vlc_list_t dummy_null_list = {0, NULL, NULL};
     assert( p_this );
@@ -261,6 +272,10 @@ int __var_Create( vlc_object_t *p_this, const char *psz_name, int i_type )
             p_var->ops = &time_ops;
             p_var->val.i_time = 0;
             break;
+        case VLC_VAR_COORDS:
+            p_var->ops = &coords_ops;
+            p_var->val.coords.x = p_var->val.coords.y = 0;
+            break;
         case VLC_VAR_ADDRESS:
             p_var->ops = &addr_ops;
             p_var->val.p_address = NULL;
@@ -276,7 +291,11 @@ int __var_Create( vlc_object_t *p_this, const char *psz_name, int i_type )
             break;
         default:
             p_var->ops = &void_ops;
-            break;
+#ifndef NDEBUG
+            if( (i_type & VLC_VAR_CLASS) != VLC_VAR_VOID )
+                msg_Err( p_this, "Creating the variable '%s' without a type",
+                          psz_name );
+#endif
     }
 
     if( i_type & VLC_VAR_DOINHERIT )
@@ -328,6 +347,7 @@ int __var_Create( vlc_object_t *p_this, const char *psz_name, int i_type )
     return ret;
 }
 
+#undef var_Destroy
 /**
  * Destroy a vlc variable
  *
@@ -337,7 +357,7 @@ int __var_Create( vlc_object_t *p_this, const char *psz_name, int i_type )
  * \param p_this The object that holds the variable
  * \param psz_name The name of the variable
  */
-int __var_Destroy( vlc_object_t *p_this, const char *psz_name )
+int var_Destroy( vlc_object_t *p_this, const char *psz_name )
 {
     variable_t *p_var;
 
@@ -379,6 +399,7 @@ void var_DestroyAll( vlc_object_t *obj )
     tdestroy( priv->var_root, CleanupVar );
 }
 
+#undef var_Change
 /**
  * Perform an action on a variable
  *
@@ -388,8 +409,8 @@ void var_DestroyAll( vlc_object_t *obj )
  * \param p_val First action parameter
  * \param p_val2 Second action parameter
  */
-int __var_Change( vlc_object_t *p_this, const char *psz_name,
-                  int i_action, vlc_value_t *p_val, vlc_value_t *p_val2 )
+int var_Change( vlc_object_t *p_this, const char *psz_name,
+                int i_action, vlc_value_t *p_val, vlc_value_t *p_val2 )
 {
     int i;
     variable_t *p_var;
@@ -616,7 +637,7 @@ int __var_Change( vlc_object_t *p_this, const char *psz_name,
     return VLC_SUCCESS;
 }
 
-
+#undef var_GetAndSet
 /**
  * Perform a Get and Set on a variable
  *
@@ -626,14 +647,15 @@ int __var_Change( vlc_object_t *p_this, const char *psz_name,
  * \param p_val: The action parameter
  * \return vlc error codes
  */
-int __var_GetAndSet( vlc_object_t *p_this, const char *psz_name, int i_action,
-                     vlc_value_t val )
+int var_GetAndSet( vlc_object_t *p_this, const char *psz_name, int i_action,
+                   vlc_value_t *p_val )
 {
     int i_ret;
     variable_t *p_var;
     vlc_value_t oldval;
 
     assert( p_this );
+    assert( p_val );
 
     vlc_object_internals_t *p_priv = vlc_internals( p_this );
 
@@ -656,13 +678,21 @@ int __var_GetAndSet( vlc_object_t *p_this, const char *psz_name, int i_action,
     /* depending of the action requiered */
     switch( i_action )
     {
-    case VLC_VAR_TOGGLE_BOOL:
+    case VLC_VAR_BOOL_TOGGLE:
         assert( ( p_var->i_type & VLC_VAR_BOOL ) == VLC_VAR_BOOL );
         p_var->val.b_bool = !p_var->val.b_bool;
         break;
-    case VLC_VAR_INTEGER_INCDEC:
+    case VLC_VAR_INTEGER_ADD:
         assert( ( p_var->i_type & VLC_VAR_INTEGER ) == VLC_VAR_INTEGER );
-        p_var->val.i_int += val.i_int;
+        p_var->val.i_int += p_val->i_int;
+        break;
+    case VLC_VAR_INTEGER_OR:
+        assert( ( p_var->i_type & VLC_VAR_INTEGER ) == VLC_VAR_INTEGER );
+        p_var->val.i_int |= p_val->i_int;
+        break;
+    case VLC_VAR_INTEGER_NAND:
+        assert( ( p_var->i_type & VLC_VAR_INTEGER ) == VLC_VAR_INTEGER );
+        p_var->val.i_int &= ~p_val->i_int;
         break;
     default:
         vlc_mutex_unlock( &p_priv->var_lock );
@@ -671,6 +701,7 @@ int __var_GetAndSet( vlc_object_t *p_this, const char *psz_name, int i_action,
 
     /*  Check boundaries */
     CheckValue( p_var, &p_var->val );
+    *p_val = p_var->val;
 
     /* Deal with callbacks.*/
     i_ret = TriggerCallback( p_this, p_var, psz_name, oldval );
@@ -680,7 +711,7 @@ int __var_GetAndSet( vlc_object_t *p_this, const char *psz_name, int i_action,
     return i_ret;
 }
 
-
+#undef var_Type
 /**
  * Request a variable's type
  *
@@ -688,7 +719,7 @@ int __var_GetAndSet( vlc_object_t *p_this, const char *psz_name, int i_action,
  * variable could not be found.
  * \see \ref var_type
  */
-int __var_Type( vlc_object_t *p_this, const char *psz_name )
+int var_Type( vlc_object_t *p_this, const char *psz_name )
 {
     variable_t *p_var;
     int i_type = 0;
@@ -708,6 +739,7 @@ int __var_Type( vlc_object_t *p_this, const char *psz_name )
     return i_type;
 }
 
+#undef var_SetChecked
 int var_SetChecked( vlc_object_t *p_this, const char *psz_name,
                     int expected_type, vlc_value_t val )
 {
@@ -730,6 +762,12 @@ int var_SetChecked( vlc_object_t *p_this, const char *psz_name,
 
     assert( expected_type == 0 ||
             (p_var->i_type & VLC_VAR_CLASS) == expected_type );
+#ifndef NDEBUG
+        /* Alert if the type is VLC_VAR_VOID */
+        if( ( p_var->i_type & VLC_VAR_TYPE ) == VLC_VAR_VOID )
+            msg_Warn( p_this, "Calling var_Set on the void variable '%s' (0x%04x)", psz_name, p_var->i_type );
+#endif
+
 
     WaitUnused( p_this, p_var );
 
@@ -756,7 +794,7 @@ int var_SetChecked( vlc_object_t *p_this, const char *psz_name,
     return i_ret;
 }
 
-
+#undef var_Set
 /**
  * Set a variable's value
  *
@@ -764,11 +802,12 @@ int var_SetChecked( vlc_object_t *p_this, const char *psz_name,
  * \param psz_name The name of the variable
  * \param val the value to set
  */
-int __var_Set( vlc_object_t *p_this, const char *psz_name, vlc_value_t val )
+int var_Set( vlc_object_t *p_this, const char *psz_name, vlc_value_t val )
 {
     return var_SetChecked( p_this, psz_name, 0, val );
 }
 
+#undef var_GetChecked
 int var_GetChecked( vlc_object_t *p_this, const char *psz_name,
                     int expected_type, vlc_value_t *p_val )
 {
@@ -792,7 +831,7 @@ int var_GetChecked( vlc_object_t *p_this, const char *psz_name,
 #ifndef NDEBUG
         /* Alert if the type is VLC_VAR_VOID */
         if( ( p_var->i_type & VLC_VAR_TYPE ) == VLC_VAR_VOID )
-            msg_Warn( p_this, "Calling var_GetVoid on the void variable '%s' (0x%04x)", psz_name, p_var->i_type );
+            msg_Warn( p_this, "Calling var_Get on the void variable '%s' (0x%04x)", psz_name, p_var->i_type );
 #endif
 
         /* Duplicate value if needed */
@@ -805,6 +844,7 @@ int var_GetChecked( vlc_object_t *p_this, const char *psz_name,
     return err;
 }
 
+#undef var_Get
 /**
  * Get a variable's value
  *
@@ -813,11 +853,12 @@ int var_GetChecked( vlc_object_t *p_this, const char *psz_name,
  * \param p_val Pointer to a vlc_value_t that will hold the variable's value
  *              after the function is finished
  */
-int __var_Get( vlc_object_t *p_this, const char *psz_name, vlc_value_t *p_val )
+int var_Get( vlc_object_t *p_this, const char *psz_name, vlc_value_t *p_val )
 {
     return var_GetChecked( p_this, psz_name, 0, p_val );
 }
 
+#undef var_AddCallback
 /**
  * Register a callback in a variable
  *
@@ -834,8 +875,8 @@ int __var_Get( vlc_object_t *p_this, const char *psz_name, vlc_value_t *p_val )
  *          the variable. Use proper locking. This thread may not have much
  *          time to spare, so keep callback functions short.
  */
-int __var_AddCallback( vlc_object_t *p_this, const char *psz_name,
-                       vlc_callback_t pf_callback, void *p_data )
+int var_AddCallback( vlc_object_t *p_this, const char *psz_name,
+                     vlc_callback_t pf_callback, void *p_data )
 {
     variable_t *p_var;
     callback_entry_t entry;
@@ -871,14 +912,15 @@ int __var_AddCallback( vlc_object_t *p_this, const char *psz_name,
     return VLC_SUCCESS;
 }
 
+#undef var_DelCallback
 /**
  * Remove a callback from a variable
  *
  * pf_callback and p_data have to be given again, because different objects
  * might have registered the same callback function.
  */
-int __var_DelCallback( vlc_object_t *p_this, const char *psz_name,
-                       vlc_callback_t pf_callback, void *p_data )
+int var_DelCallback( vlc_object_t *p_this, const char *psz_name,
+                     vlc_callback_t pf_callback, void *p_data )
 {
     int i_entry;
     variable_t *p_var;
@@ -933,13 +975,14 @@ int __var_DelCallback( vlc_object_t *p_this, const char *psz_name,
     return VLC_SUCCESS;
 }
 
+#undef var_TriggerCallback
 /**
  * Trigger callback on a variable
  *
  * \param p_this The object that hold the variable
  * \param psz_name The name of the variable
  */
-int __var_TriggerCallback( vlc_object_t *p_this, const char *psz_name )
+int var_TriggerCallback( vlc_object_t *p_this, const char *psz_name )
 {
     int i_ret;
     variable_t *p_var;
@@ -1046,7 +1089,7 @@ void var_OptionParse( vlc_object_t *p_obj, const char *psz_option,
     /* Create the variable in the input object.
      * Children of the input object will be able to retreive this value
      * thanks to the inheritance property of the object variables. */
-    __var_Create( p_obj, psz_name, i_type );
+    var_Create( p_obj, psz_name, i_type );
 
     switch( i_type )
     {
@@ -1103,7 +1146,7 @@ void var_OptionParse( vlc_object_t *p_obj, const char *psz_option,
         goto cleanup;
     }
 
-    __var_Set( p_obj, psz_name, val );
+    var_Set( p_obj, psz_name, val );
 
     /* If that's a list, remove all elements allocated */
     if( i_type == VLC_VAR_LIST )
@@ -1334,12 +1377,12 @@ static int TriggerCallback( vlc_object_t *p_this, variable_t *p_var,
     return VLC_SUCCESS;
 }
 
-
+#undef var_Command
 /**********************************************************************
  * Execute a var command on an object identified by its name
  **********************************************************************/
-int __var_Command( vlc_object_t *p_this, const char *psz_name,
-                   const char *psz_cmd, const char *psz_arg, char **psz_msg )
+int var_Command( vlc_object_t *p_this, const char *psz_name,
+                 const char *psz_cmd, const char *psz_arg, char **psz_msg )
 {
     vlc_object_t *p_obj = vlc_object_find_name( p_this->p_libvlc,
                                                 psz_name, FIND_CHILD );