#if defined (LIBVLC_USE_PTHREAD)
typedef pthread_t vlc_thread_t;
typedef pthread_mutex_t vlc_mutex_t;
+#define VLC_STATIC_MUTEX PTHREAD_MUTEX_INITIALIZER
typedef pthread_cond_t vlc_cond_t;
typedef pthread_key_t vlc_threadvar_t;
HANDLE handle;
void *(*entry) (void *);
void *data;
+#if defined( UNDER_CE )
+ HANDLE cancel_event;
+#endif
} *vlc_thread_t;
typedef struct
{
CRITICAL_SECTION mutex;
-}
-vlc_mutex_t;
+ LONG initialized;
+} vlc_mutex_t;
+#define VLC_STATIC_MUTEX { .initialized = 0, }
+
typedef HANDLE vlc_cond_t;
typedef DWORD vlc_threadvar_t;
VLC_EXPORT( int, vlc_cond_timedwait, (vlc_cond_t *, vlc_mutex_t *, mtime_t) );
VLC_EXPORT( int, vlc_threadvar_create, (vlc_threadvar_t * , void (*) (void *) ) );
VLC_EXPORT( void, vlc_threadvar_delete, (vlc_threadvar_t *) );
-VLC_EXPORT( int, __vlc_thread_create, ( vlc_object_t *, const char *, int, const char *, void * ( * ) ( vlc_object_t * ), int, bool ) );
+VLC_EXPORT( int, vlc_thread_create, ( vlc_object_t *, const char *, int, const char *, void * ( * ) ( vlc_object_t * ), int ) );
VLC_EXPORT( int, __vlc_thread_set_priority, ( vlc_object_t *, const char *, int, int ) );
VLC_EXPORT( void, __vlc_thread_join, ( vlc_object_t * ) );
};
#endif
-#define vlc_thread_ready vlc_object_signal
-
/**
* Save the cancellation state and disable cancellation for the calling thread.
* This function must be called before entering a piece of code that is not
/*****************************************************************************
* vlc_thread_create: create a thread
*****************************************************************************/
-#define vlc_thread_create( P_THIS, PSZ_NAME, FUNC, PRIORITY, WAIT ) \
- __vlc_thread_create( VLC_OBJECT(P_THIS), __FILE__, __LINE__, PSZ_NAME, FUNC, PRIORITY, WAIT )
+#define vlc_thread_create( P_THIS, PSZ_NAME, FUNC, PRIORITY ) \
+ vlc_thread_create( VLC_OBJECT(P_THIS), __FILE__, __LINE__, PSZ_NAME, FUNC, PRIORITY )
/*****************************************************************************
* vlc_thread_set_priority: set the priority of the calling thread
#define vlc_thread_join( P_THIS ) \
__vlc_thread_join( VLC_OBJECT(P_THIS) )
+#ifdef __cplusplus
+/**
+ * Helper C++ class to lock a mutex.
+ * The mutex is locked when the object is created, and unlocked when the object
+ * is destroyed.
+ */
+class vlc_mutex_locker
+{
+ private:
+ vlc_mutex_t *lock;
+ public:
+ vlc_mutex_locker (vlc_mutex_t *m) : lock (m)
+ {
+ vlc_mutex_lock (lock);
+ }
+
+ ~vlc_mutex_locker (void)
+ {
+ vlc_mutex_unlock (lock);
+ }
+};
+#endif
+
#endif /* !_VLC_THREADS_H */