]> git.sesse.net Git - vlc/blobdiff - include/vlc_threads.h
Spell developer properly
[vlc] / include / vlc_threads.h
index 8cf3d37a5fab07ff262575bfe8afb26fc61df2e7..d0d767ed026faa64b7fdfee57afab7b6bb04a9a8 100644 (file)
@@ -107,12 +107,21 @@ 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_rwlock_t vlc_rwlock_t;
 typedef pthread_key_t   vlc_threadvar_t;
 typedef struct vlc_timer_t vlc_timer_t;
+
+#ifndef __APPLE__
+/* There is no POSIX timer on Mac OS X. Move that to configure eventually. */
+#define HAVE_POSIX_TIMER 1
+#endif
+
 struct vlc_timer_t
 {
+#ifdef HAVE_POSIX_TIMER
     timer_t handle;
-    void (*func) (vlc_timer_t *, void *);
+#endif
+    void (*func) (void *);
     void *data;
 };
 
@@ -135,12 +144,23 @@ typedef struct
 #define VLC_STATIC_MUTEX { 0, }
 
 typedef HANDLE  vlc_cond_t;
+
+typedef struct
+{
+    vlc_mutex_t   mutex;
+    vlc_cond_t    read_wait;
+    vlc_cond_t    write_wait;
+    unsigned long readers;
+    unsigned long writers;
+    DWORD         writer;
+} vlc_rwlock_t;
+
 typedef DWORD   vlc_threadvar_t;
 typedef struct vlc_timer_t vlc_timer_t;
 struct vlc_timer_t
 {
     HANDLE handle;
-    void (*func) (vlc_timer_t *, void *);
+    void (*func) (void *);
     void *data;
     unsigned overrun;
     CRITICAL_SECTION serializer;
@@ -168,6 +188,11 @@ VLC_EXPORT( void, vlc_cond_signal, (vlc_cond_t *) );
 VLC_EXPORT( void, vlc_cond_broadcast, (vlc_cond_t *) );
 VLC_EXPORT( void, vlc_cond_wait, (vlc_cond_t *, vlc_mutex_t *) );
 VLC_EXPORT( int, vlc_cond_timedwait, (vlc_cond_t *, vlc_mutex_t *, mtime_t) );
+VLC_EXPORT( void, vlc_rwlock_init, (vlc_rwlock_t *) );
+VLC_EXPORT( void, vlc_rwlock_destroy, (vlc_rwlock_t *) );
+VLC_EXPORT( void, vlc_rwlock_rdlock, (vlc_rwlock_t *) );
+VLC_EXPORT( void, vlc_rwlock_wrlock, (vlc_rwlock_t *) );
+VLC_EXPORT( void, vlc_rwlock_unlock, (vlc_rwlock_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_threadvar_set, (vlc_threadvar_t, void *) );
@@ -181,7 +206,7 @@ VLC_EXPORT( void, vlc_cancel, (vlc_thread_t) );
 VLC_EXPORT( void, vlc_join, (vlc_thread_t, void **) );
 VLC_EXPORT (void, vlc_control_cancel, (int cmd, ...));
 
-VLC_EXPORT( int, vlc_timer_create, (vlc_timer_t *, void (*) (vlc_timer_t *, void *), void *) LIBVLC_USED );
+VLC_EXPORT( int, vlc_timer_create, (vlc_timer_t *, void (*) (void *), void *) LIBVLC_USED );
 VLC_EXPORT( void, vlc_timer_destroy, (vlc_timer_t *) );
 VLC_EXPORT( void, vlc_timer_schedule, (vlc_timer_t *, bool, mtime_t, mtime_t) );
 VLC_EXPORT( unsigned, vlc_timer_getoverrun, (const vlc_timer_t *) LIBVLC_USED );
@@ -234,7 +259,7 @@ struct vlc_cleanup_t
 };
 
 /* This macros opens a code block on purpose. This is needed for multiple
- * calls within a single function. This also prevent Win32 developpers from
+ * calls within a single function. This also prevent Win32 developers from
  * writing code that would break on POSIX (POSIX opens a block as well). */
 # define vlc_cleanup_push( routine, arg ) \
     do { \