]> git.sesse.net Git - vlc/blobdiff - src/libvlc.h
Unexport vlc_object_detach
[vlc] / src / libvlc.h
index 97e4adefa9bbbd098411fb15ba4e9db65d800c25..4ab242a1e795ee85bd805c2615425085c1afb412 100644 (file)
@@ -27,8 +27,6 @@
 
 typedef struct variable_t variable_t;
 
-extern const char vlc_usage[];
-
 /* Actions (hot keys) */
 typedef struct action
 {
@@ -37,8 +35,8 @@ typedef struct action
 } action_t;
 extern const struct action libvlc_actions[];
 extern const size_t libvlc_actions_count;
-extern int vlc_key_to_action (vlc_object_t *, const char *,
-                              vlc_value_t, vlc_value_t, void *);
+extern int vlc_InitActions (libvlc_int_t *);
+extern void vlc_DeinitActions (libvlc_int_t *);
 
 /*
  * OS-specific initialization
@@ -50,18 +48,22 @@ void system_End       ( libvlc_int_t * );
 /*
  * Legacy object stuff that is still used within libvlccore (only)
  */
-#define vlc_object_signal_unlocked( obj )
-
-vlc_list_t *vlc_list_find( vlc_object_t *, int, int );
+void vlc_object_detach (vlc_object_t *);
+#define vlc_object_detach( o ) vlc_object_detach(VLC_OBJECT(o))
 
 /*
  * Threads subsystem
  */
 
+/* This cannot be used as is from plugins: */
+void vlc_detach (vlc_thread_t);
+
 /* Hopefully, no need to export this. There is a new thread API instead. */
 void vlc_thread_cancel (vlc_object_t *);
 int vlc_object_waitpipe (vlc_object_t *obj);
 
+void vlc_threads_setup (libvlc_int_t *);
+
 void vlc_trace (const char *fn, const char *file, unsigned line);
 #define vlc_backtrace() vlc_trace(__func__, __FILE__, __LINE__)
 
@@ -76,6 +78,7 @@ void vlc_assert_locked (vlc_mutex_t *);
  */
 extern uint32_t cpu_flags;
 uint32_t CPUCapabilities( void );
+bool vlc_CPU_CheckPluginDir (const char *name);
 
 /*
  * Message/logging stuff
@@ -87,8 +90,7 @@ uint32_t CPUCapabilities( void );
 typedef struct msg_bank_t
 {
     /** Message queue lock */
-    vlc_mutex_t lock;
-    vlc_cond_t  wait;
+    vlc_rwlock_t lock;
 
     /* Subscribers */
     int i_sub;
@@ -138,30 +140,33 @@ __vlc_custom_create (vlc_object_t *p_this, size_t i_size, int i_type,
 #define vlc_custom_create(o, s, t, n) \
         __vlc_custom_create(VLC_OBJECT(o), s, t, n)
 
+/**
+ * Assign a name to an object for vlc_object_find_name().
+ */
+extern int vlc_object_set_name(vlc_object_t *, const char *);
+#define vlc_object_set_name(o, n) vlc_object_set_name(VLC_OBJECT(o), n)
+
 /*
  * To be cleaned-up module stuff:
  */
 extern char *psz_vlcpath;
 
-/* Return a NULL terminated array with the names of the modules that have a
- * certain capability.
- * Free after uses both the string and the table. */
-char **module_GetModulesNamesForCapability (const char * psz_capability,
-                                            char ***psz_longname);
 module_t *module_find_by_shortcut (const char *psz_shortcut);
 
 /**
  * Private LibVLC data for each object.
  */
-typedef struct vlc_object_internals_t
+typedef struct vlc_object_internals vlc_object_internals_t;
+
+struct vlc_object_internals
 {
     int             i_object_type; /* Object type, deprecated */
+    char           *psz_name; /* given name */
 
     /* Object variables */
-    variable_t *    p_vars;
+    void           *var_root;
     vlc_mutex_t     var_lock;
     vlc_cond_t      var_wait;
-    int             i_vars;
 
     /* Thread properties, if any */
     vlc_thread_t    thread_id;
@@ -176,10 +181,11 @@ typedef struct vlc_object_internals_t
     vlc_destructor_t pf_destructor;
 
     /* Objects tree structure */
-    vlc_object_t    *prev, *next;
-    vlc_object_t   **pp_children;
-    int              i_children;
-} vlc_object_internals_t;
+    vlc_object_internals_t *next;  /* next sibling */
+    vlc_object_internals_t *prev;  /* previous sibling */
+    vlc_object_internals_t *first; /* first child */
+    vlc_object_t   *old_parent;
+};
 
 #define ZOOM_SECTION N_("Zoom")
 #define ZOOM_QUARTER_KEY_TEXT N_("1:4 Quarter")
@@ -188,6 +194,7 @@ typedef struct vlc_object_internals_t
 #define ZOOM_DOUBLE_KEY_TEXT N_("2:1 Double")
 
 #define vlc_internals( obj ) (((vlc_object_internals_t*)(VLC_OBJECT(obj)))-1)
+#define vlc_externals( priv ) ((vlc_object_t *)((priv) + 1))
 
 typedef struct sap_handler_t sap_handler_t;
 
@@ -197,22 +204,21 @@ typedef struct sap_handler_t sap_handler_t;
 typedef struct libvlc_priv_t
 {
     libvlc_int_t       public_data;
-    vlc_cond_t         exiting; ///< signaled when VLC wants to exit
 
     int                i_last_input_id ; ///< Last id of input item
 
     /* Messages */
     msg_bank_t         msg_bank;    ///< The message bank
     int                i_verbose;   ///< info messages
-    bool               b_color;     ///< color messages?
     vlc_dictionary_t   msg_enabled_objects; ///< Enabled objects
+    bool               b_color;     ///< color messages?
     bool               msg_all_objects_enabled; ///< Should we print all objects?
 
     /* Timer stats */
+    bool               b_stats;     ///< Whether to collect stats
     vlc_mutex_t        timer_lock;  ///< Lock to protect timers
     counter_t        **pp_timers;   ///< Array of all timers
     int                i_timers;    ///< Number of timers
-    bool               b_stats;     ///< Whether to collect stats
 
     /* Singleton objects */
     module_t          *p_memcpy_module;  ///< Fast memcpy plugin used