Mercurial > sdl-ios-xcode
comparison src/thread/pthread/SDL_syssem.c @ 1630:eba962f9d603
Fixed compile error
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Thu, 13 Apr 2006 14:27:58 +0000 |
parents | aee7ea396f59 |
children | 782fd950bd46 536b0704b7d8 |
comparison
equal
deleted
inserted
replaced
1629:ef4a796e7f24 | 1630:eba962f9d603 |
---|---|
33 /* Mac OS X doesn't support sem_getvalue() as of version 10.4 */ | 33 /* Mac OS X doesn't support sem_getvalue() as of version 10.4 */ |
34 #include "../generic/SDL_syssem.c" | 34 #include "../generic/SDL_syssem.c" |
35 #else | 35 #else |
36 | 36 |
37 struct SDL_semaphore { | 37 struct SDL_semaphore { |
38 sem_t *sem; | 38 sem_t sem; |
39 }; | 39 }; |
40 | 40 |
41 /* Create a semaphore, initialized with value */ | 41 /* Create a semaphore, initialized with value */ |
42 SDL_sem *SDL_CreateSemaphore(Uint32 initial_value) | 42 SDL_sem *SDL_CreateSemaphore(Uint32 initial_value) |
43 { | 43 { |
44 SDL_sem *sem = (SDL_sem *) SDL_malloc(sizeof(SDL_sem)); | 44 SDL_sem *sem = (SDL_sem *) SDL_malloc(sizeof(SDL_sem)); |
45 if ( sem ) { | 45 if ( sem ) { |
46 if ( sem_init(&sem->sem_data, 0, initial_value) < 0 ) { | 46 if ( sem_init(&sem->sem, 0, initial_value) < 0 ) { |
47 SDL_SetError("sem_init() failed"); | 47 SDL_SetError("sem_init() failed"); |
48 SDL_free(sem); | 48 SDL_free(sem); |
49 sem = NULL; | 49 sem = NULL; |
50 } else { | |
51 sem->sem = &sem->sem_data; | |
52 } | 50 } |
53 } else { | 51 } else { |
54 SDL_OutOfMemory(); | 52 SDL_OutOfMemory(); |
55 } | 53 } |
56 return sem; | 54 return sem; |
57 } | 55 } |
58 | 56 |
59 void SDL_DestroySemaphore(SDL_sem *sem) | 57 void SDL_DestroySemaphore(SDL_sem *sem) |
60 { | 58 { |
61 if ( sem ) { | 59 if ( sem ) { |
62 sem_destroy(sem->sem); | 60 sem_destroy(&sem->sem); |
63 SDL_free(sem); | 61 SDL_free(sem); |
64 } | 62 } |
65 } | 63 } |
66 | 64 |
67 int SDL_SemTryWait(SDL_sem *sem) | 65 int SDL_SemTryWait(SDL_sem *sem) |
71 if ( ! sem ) { | 69 if ( ! sem ) { |
72 SDL_SetError("Passed a NULL semaphore"); | 70 SDL_SetError("Passed a NULL semaphore"); |
73 return -1; | 71 return -1; |
74 } | 72 } |
75 retval = SDL_MUTEX_TIMEDOUT; | 73 retval = SDL_MUTEX_TIMEDOUT; |
76 if ( sem_trywait(sem->sem) == 0 ) { | 74 if ( sem_trywait(&sem->sem) == 0 ) { |
77 retval = 0; | 75 retval = 0; |
78 } | 76 } |
79 return retval; | 77 return retval; |
80 } | 78 } |
81 | 79 |
86 if ( ! sem ) { | 84 if ( ! sem ) { |
87 SDL_SetError("Passed a NULL semaphore"); | 85 SDL_SetError("Passed a NULL semaphore"); |
88 return -1; | 86 return -1; |
89 } | 87 } |
90 | 88 |
91 retval = sem_wait(sem->sem); | 89 retval = sem_wait(&sem->sem); |
92 if ( retval < 0 ) { | 90 if ( retval < 0 ) { |
93 SDL_SetError("sem_wait() failed"); | 91 SDL_SetError("sem_wait() failed"); |
94 } | 92 } |
95 return retval; | 93 return retval; |
96 } | 94 } |
128 | 126 |
129 Uint32 SDL_SemValue(SDL_sem *sem) | 127 Uint32 SDL_SemValue(SDL_sem *sem) |
130 { | 128 { |
131 int ret = 0; | 129 int ret = 0; |
132 if ( sem ) { | 130 if ( sem ) { |
133 sem_getvalue(sem->sem, &ret); | 131 sem_getvalue(&sem->sem, &ret); |
134 if ( ret < 0 ) { | 132 if ( ret < 0 ) { |
135 ret = 0; | 133 ret = 0; |
136 } | 134 } |
137 } | 135 } |
138 return (Uint32)ret; | 136 return (Uint32)ret; |
145 if ( ! sem ) { | 143 if ( ! sem ) { |
146 SDL_SetError("Passed a NULL semaphore"); | 144 SDL_SetError("Passed a NULL semaphore"); |
147 return -1; | 145 return -1; |
148 } | 146 } |
149 | 147 |
150 retval = sem_post(sem->sem); | 148 retval = sem_post(&sem->sem); |
151 if ( retval < 0 ) { | 149 if ( retval < 0 ) { |
152 SDL_SetError("sem_post() failed"); | 150 SDL_SetError("sem_post() failed"); |
153 } | 151 } |
154 return retval; | 152 return retval; |
155 } | 153 } |