1/*** 2 This file is part of PulseAudio. 3 4 Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB 5 6 PulseAudio is free software; you can redistribute it and/or modify 7 it under the terms of the GNU Lesser General Public License as published 8 by the Free Software Foundation; either version 2.1 of the License, 9 or (at your option) any later version. 10 11 PulseAudio is distributed in the hope that it will be useful, but 12 WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 General Public License for more details. 15 16 You should have received a copy of the GNU Lesser General Public License 17 along with PulseAudio; if not, see <http://www.gnu.org/licenses/>. 18***/ 19 20#ifdef HAVE_CONFIG_H 21#include <config.h> 22#endif 23 24#include <windows.h> 25 26#include <pulse/xmalloc.h> 27#include <pulsecore/macro.h> 28 29#include "semaphore.h" 30 31struct pa_semaphore { 32 HANDLE sema; 33}; 34 35pa_semaphore* pa_semaphore_new(unsigned value) { 36 pa_semaphore *s; 37 38 s = pa_xnew(pa_semaphore, 1); 39 40 s->sema = CreateSemaphore(NULL, value, 32767, NULL); 41 pa_assert(s->sema != NULL); 42 43 return s; 44} 45 46void pa_semaphore_free(pa_semaphore *s) { 47 pa_assert(s); 48 CloseHandle(s->sema); 49 pa_xfree(s); 50} 51 52void pa_semaphore_post(pa_semaphore *s) { 53 pa_assert(s); 54 ReleaseSemaphore(s->sema, 1, NULL); 55} 56 57void pa_semaphore_wait(pa_semaphore *s) { 58 pa_assert(s); 59 WaitForSingleObject(s->sema, INFINITE); 60} 61