w32thread: call ResetEvent() in pthread_cond_broadcast().
Also add "volatile" to broadcast flag (since it is used from
multiple threads).
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 01eb9805f3)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
			
			
This commit is contained in:
		
				
					committed by
					
						
						Michael Niedermayer
					
				
			
			
				
	
			
			
			
						parent
						
							33636442e2
						
					
				
				
					commit
					4a4e4b8139
				
			@@ -120,7 +120,7 @@ typedef struct {
 | 
				
			|||||||
    volatile int waiter_count;
 | 
					    volatile int waiter_count;
 | 
				
			||||||
    HANDLE semaphore;
 | 
					    HANDLE semaphore;
 | 
				
			||||||
    HANDLE waiters_done;
 | 
					    HANDLE waiters_done;
 | 
				
			||||||
    int is_broadcast;
 | 
					    volatile int is_broadcast;
 | 
				
			||||||
} win32_cond_t;
 | 
					} win32_cond_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void pthread_cond_init(pthread_cond_t *cond, const void *unused_attr)
 | 
					static void pthread_cond_init(pthread_cond_t *cond, const void *unused_attr)
 | 
				
			||||||
@@ -187,6 +187,7 @@ static void pthread_cond_broadcast(pthread_cond_t *cond)
 | 
				
			|||||||
        ReleaseSemaphore(win32_cond->semaphore, win32_cond->waiter_count, NULL);
 | 
					        ReleaseSemaphore(win32_cond->semaphore, win32_cond->waiter_count, NULL);
 | 
				
			||||||
        pthread_mutex_unlock(&win32_cond->mtx_waiter_count);
 | 
					        pthread_mutex_unlock(&win32_cond->mtx_waiter_count);
 | 
				
			||||||
        WaitForSingleObject(win32_cond->waiters_done, INFINITE);
 | 
					        WaitForSingleObject(win32_cond->waiters_done, INFINITE);
 | 
				
			||||||
 | 
					        ResetEvent(win32_cond->waiters_done);
 | 
				
			||||||
        win32_cond->is_broadcast = 0;
 | 
					        win32_cond->is_broadcast = 0;
 | 
				
			||||||
    } else
 | 
					    } else
 | 
				
			||||||
        pthread_mutex_unlock(&win32_cond->mtx_waiter_count);
 | 
					        pthread_mutex_unlock(&win32_cond->mtx_waiter_count);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user