/*
* Threads subsystem
*/
-int vlc_threads_init( void );
-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 *);
* Message/logging stuff
*/
-typedef struct msg_queue_t
+/**
+ * Store all data required by messages interfaces.
+ */
+typedef struct msg_bank_t
{
/** Message queue lock */
- vlc_mutex_t lock;
- bool b_overflow;
-
- /* Message queue */
- msg_item_t msg[VLC_MSG_QSIZE]; /**< message queue */
- int i_start;
- int i_stop;
+ vlc_mutex_t lock;
+ vlc_cond_t wait;
/* Subscribers */
int i_sub;
#ifdef UNDER_CE
FILE *logfile;
#endif
-} msg_queue_t;
-
-/**
- * Store all data required by messages interfaces.
- */
-typedef struct msg_bank_t
-{
- vlc_mutex_t lock;
- msg_queue_t queue;
} msg_bank_t;
void msg_Create (libvlc_int_t *);
-void msg_Flush (libvlc_int_t *);
void msg_Destroy (libvlc_int_t *);
/** Internal message stack context */
#define vlc_custom_create(o, s, t, n) \
__vlc_custom_create(VLC_OBJECT(o), s, t, n)
-
-/**
- * The module bank
+/*
+ * To be cleaned-up module stuff:
*/
-extern module_bank_t *p_module_bank;
-
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. */
+VLC_EXPORT(char **, module_GetModulesNamesForCapability,
+ ( const char * psz_capability, char ***psz_longname ) );
+
+#ifdef LIBVLC_USE_PTHREAD
+# include <semaphore.h> /* TODO: get rid of vlc_thread_ready and this */
+#endif
+
/**
* Private LibVLC data for each object.
*/
/* Thread properties, if any */
vlc_thread_t thread_id;
bool b_thread;
+#ifdef LIBVLC_USE_PTHREAD
+ sem_t thread_ready;
+#elif defined (WIN32)
+ HANDLE thread_ready;
+#endif
/* Objects thread synchronization */
vlc_mutex_t lock;