]> git.sesse.net Git - vlc/blobdiff - src/libvlc.h
Per-instance structure lock
[vlc] / src / libvlc.h
index b188090e98fd853ff8452f5c96b104c1c33783a6..8b47fd408bbba783f78329892be4dd7a396ce2e9 100644 (file)
@@ -25,6 +25,8 @@
 #ifndef LIBVLC_LIBVLC_H
 # define LIBVLC_LIBVLC_H 1
 
+typedef struct variable_t variable_t;
+
 extern const char vlc_usage[];
 
 /* Hotkey stuff */
@@ -49,6 +51,15 @@ void vlc_threads_end( void );
 /* Hopefully, no need to export this. There is a new thread API instead. */
 void vlc_thread_cancel (vlc_object_t *);
 
+void vlc_trace (const char *fn, const char *file, unsigned line);
+#define vlc_backtrace() vlc_trace(__func__, __FILE__, __LINE__)
+
+#if defined (LIBVLC_USE_PTHREAD) && !defined (NDEBUG)
+# define vlc_assert_locked( m ) \
+         assert (pthread_mutex_lock (m) == EDEADLK)
+#else
+# define vlc_assert_locked( m ) (void)m
+#endif
 
 /*
  * CPU capabilities
@@ -153,7 +164,7 @@ libvlc_global_data_t *vlc_global (void);
 /**
  * Private LibVLC data for each object.
  */
-struct vlc_object_internals_t
+typedef struct vlc_object_internals_t
 {
     /* Object variables */
     variable_t *    p_vars;
@@ -179,7 +190,7 @@ struct vlc_object_internals_t
     vlc_object_t    *prev, *next;
     vlc_object_t   **pp_children;
     int              i_children;
-};
+} vlc_object_internals_t;
 
 #define ZOOM_SECTION N_("Zoom")
 #define ZOOM_QUARTER_KEY_TEXT N_("1:4 Quarter")
@@ -189,6 +200,8 @@ struct vlc_object_internals_t
 
 #define vlc_internals( obj ) (((vlc_object_internals_t*)(VLC_OBJECT(obj)))-1)
 
+typedef struct sap_handler_t sap_handler_t;
+
 /**
  * Private LibVLC instance data.
  */
@@ -200,15 +213,14 @@ typedef struct libvlc_priv_t
     vlc_mutex_t        config_lock; ///< config file lock
     char *             psz_configfile;   ///< location of config file
 
-    /* There is no real reason to keep a list of items, but not to break
-     * everything, let's keep it */
-    input_item_array_t input_items; ///< Array of all created input items
     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               msg_all_objects_enabled; ///< Should we print all objects?
 
     /* Timer stats */
     vlc_mutex_t        timer_lock;  ///< Lock to protect timers
@@ -225,6 +237,10 @@ typedef struct libvlc_priv_t
     vlm_t             *p_vlm;  ///< the VLM singleton (or NULL)
     interaction_t     *p_interaction;    ///< interface interaction object
     httpd_t           *p_httpd; ///< HTTP daemon (src/network/httpd.c)
+#ifdef ENABLE_SOUT
+    sap_handler_t     *p_sap; ///< SAP SDP advertiser
+#endif
+    vlc_mutex_t        structure_lock;
 } libvlc_priv_t;
 
 static inline libvlc_priv_t *libvlc_priv (libvlc_int_t *libvlc)