]> git.sesse.net Git - vlc/commitdiff
Win32: support vlc_cond_wait() with a static mutex
authorRémi Denis-Courmont <remi@remlab.net>
Thu, 18 Aug 2011 14:47:16 +0000 (17:47 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Thu, 18 Aug 2011 14:08:06 +0000 (17:08 +0300)
src/win32/thread.c

index 06236193609b7f0d503b885359dfb56c5ce6c3e1..17ca410b66284dc1a1f341239fecf16499e50c19 100644 (file)
@@ -281,13 +281,12 @@ void vlc_cond_wait (vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex)
 {
     DWORD result;
 
-    assert (p_mutex->dynamic); /* TODO */
     do
     {
         vlc_testcancel ();
-        LeaveCriticalSection (&p_mutex->mutex);
+        vlc_mutex_unlock (p_mutex);
         result = vlc_WaitForSingleObject (p_condvar->handle, INFINITE);
-        EnterCriticalSection (&p_mutex->mutex);
+        vlc_mutex_lock (p_mutex);
     }
     while (result == WAIT_IO_COMPLETION);
 
@@ -299,7 +298,6 @@ int vlc_cond_timedwait (vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex,
 {
     DWORD result;
 
-    assert (p_mutex->dynamic); /* TODO */
     do
     {
         vlc_testcancel ();
@@ -320,9 +318,9 @@ int vlc_cond_timedwait (vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex,
             total = 0;
 
         DWORD delay = (total > 0x7fffffff) ? 0x7fffffff : total;
-        LeaveCriticalSection (&p_mutex->mutex);
+        vlc_mutex_unlock (p_mutex);
         result = vlc_WaitForSingleObject (p_condvar->handle, delay);
-        EnterCriticalSection (&p_mutex->mutex);
+        vlc_mutex_lock (p_mutex);
     }
     while (result == WAIT_IO_COMPLETION);