Mercurial > sdl-ios-xcode
annotate docs/html/sdlsemwait.html @ 4106:12bb6311fd5d SDL-1.2
Hans de Goede fixed bug #495
When running boswars: http://www.boswars.org/ on a machine with intel
integrathed graphics it crashes when it tries to play the initial theora
splashscreen video:
X Error of failed request: BadAlloc (insufficient resources for operation)
Major opcode of failed request: 140 (XVideo)
Minor opcode of failed request: 19 ()
Serial number of failed request: 25
Current serial number in output stream: 26
boswars: xcb_xlib.c:41: xcb_xlib_lock: Assertion `!c->xlib.lock' failed.
Aborted
I recognized this problem from a few years back, when I encountered it while
working on the Xv blitter for xmame. The problem is that for some reason
creation the Xvport and XvImage succeeds, and failure (lack of resources / hw
capability?) is only indicated during the first XvPut[Shm]Image. I've written a
patch for SDL using the work around for this I developed for xmame (and which
is still used successfully in xmame after many years of usage).
I'll admit it isn't very pretty, but after investigating several possibilities
this was the best option, any other fixes would need changes to the SDL api and
abi.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 29 Dec 2007 02:23:48 +0000 |
parents | 355632dca928 |
children |
rev | line source |
---|---|
0 | 1 <HTML |
2 ><HEAD | |
3 ><TITLE | |
4 >SDL_SemWait</TITLE | |
5 ><META | |
6 NAME="GENERATOR" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ |
0 | 8 "><LINK |
9 REL="HOME" | |
10 TITLE="SDL Library Documentation" | |
11 HREF="index.html"><LINK | |
12 REL="UP" | |
13 TITLE="Multi-threaded Programming" | |
14 HREF="thread.html"><LINK | |
15 REL="PREVIOUS" | |
16 TITLE="SDL_DestroySemaphore" | |
17 HREF="sdldestroysemaphore.html"><LINK | |
18 REL="NEXT" | |
19 TITLE="SDL_SemTryWait" | |
20 HREF="sdlsemtrywait.html"></HEAD | |
21 ><BODY | |
22 CLASS="REFENTRY" | |
23 BGCOLOR="#FFF8DC" | |
24 TEXT="#000000" | |
25 LINK="#0000ee" | |
26 VLINK="#551a8b" | |
27 ALINK="#ff0000" | |
28 ><DIV | |
29 CLASS="NAVHEADER" | |
30 ><TABLE | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
31 SUMMARY="Header navigation table" |
0 | 32 WIDTH="100%" |
33 BORDER="0" | |
34 CELLPADDING="0" | |
35 CELLSPACING="0" | |
36 ><TR | |
37 ><TH | |
38 COLSPAN="3" | |
39 ALIGN="center" | |
40 >SDL Library Documentation</TH | |
41 ></TR | |
42 ><TR | |
43 ><TD | |
44 WIDTH="10%" | |
45 ALIGN="left" | |
46 VALIGN="bottom" | |
47 ><A | |
48 HREF="sdldestroysemaphore.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
49 ACCESSKEY="P" |
0 | 50 >Prev</A |
51 ></TD | |
52 ><TD | |
53 WIDTH="80%" | |
54 ALIGN="center" | |
55 VALIGN="bottom" | |
56 ></TD | |
57 ><TD | |
58 WIDTH="10%" | |
59 ALIGN="right" | |
60 VALIGN="bottom" | |
61 ><A | |
62 HREF="sdlsemtrywait.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
63 ACCESSKEY="N" |
0 | 64 >Next</A |
65 ></TD | |
66 ></TR | |
67 ></TABLE | |
68 ><HR | |
69 ALIGN="LEFT" | |
70 WIDTH="100%"></DIV | |
71 ><H1 | |
72 ><A | |
73 NAME="SDLSEMWAIT" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
74 ></A |
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
75 >SDL_SemWait</H1 |
0 | 76 ><DIV |
77 CLASS="REFNAMEDIV" | |
78 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
79 NAME="AEN8023" |
0 | 80 ></A |
81 ><H2 | |
82 >Name</H2 | |
83 >SDL_SemWait -- Lock a semaphore and suspend the thread if the semaphore value is zero.</DIV | |
84 ><DIV | |
85 CLASS="REFSYNOPSISDIV" | |
86 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
87 NAME="AEN8026" |
0 | 88 ></A |
89 ><H2 | |
90 >Synopsis</H2 | |
91 ><DIV | |
92 CLASS="FUNCSYNOPSIS" | |
93 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
94 NAME="AEN8027" |
0 | 95 ></A |
96 ><P | |
97 ></P | |
98 ><PRE | |
99 CLASS="FUNCSYNOPSISINFO" | |
100 >#include "SDL.h" | |
101 #include "SDL_thread.h"</PRE | |
102 ><P | |
103 ><CODE | |
104 ><CODE | |
105 CLASS="FUNCDEF" | |
106 >int <B | |
107 CLASS="FSFUNC" | |
108 >SDL_SemWait</B | |
109 ></CODE | |
110 >(SDL_sem *sem);</CODE | |
111 ></P | |
112 ><P | |
113 ></P | |
114 ></DIV | |
115 ></DIV | |
116 ><DIV | |
117 CLASS="REFSECT1" | |
118 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
119 NAME="AEN8033" |
0 | 120 ></A |
121 ><H2 | |
122 >Description</H2 | |
123 ><P | |
124 ><TT | |
125 CLASS="FUNCTION" | |
126 >SDL_SemWait()</TT | |
127 > suspends the calling thread until either | |
128 the semaphore pointed to by <TT | |
129 CLASS="PARAMETER" | |
130 ><I | |
131 >sem</I | |
132 ></TT | |
133 > has a positive value, | |
134 the call is interrupted by a signal or error. If the call is successful it | |
135 will atomically decrement the semaphore value.</P | |
136 ><P | |
137 >After <TT | |
138 CLASS="FUNCTION" | |
139 >SDL_SemWait()</TT | |
140 > is successful, the semaphore | |
141 can be released and its count atomically incremented by a successful call to | |
142 <A | |
143 HREF="sdlsempost.html" | |
144 >SDL_SemPost</A | |
145 >.</P | |
146 ></DIV | |
147 ><DIV | |
148 CLASS="REFSECT1" | |
149 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
150 NAME="AEN8041" |
0 | 151 ></A |
152 ><H2 | |
153 >Return Value</H2 | |
154 ><P | |
155 >Returns <SPAN | |
156 CLASS="RETURNVALUE" | |
157 >0</SPAN | |
158 > if successful or | |
159 <SPAN | |
160 CLASS="RETURNVALUE" | |
161 >-1</SPAN | |
162 > if there was an error (leaving the semaphore unchanged).</P | |
163 ></DIV | |
164 ><DIV | |
165 CLASS="REFSECT1" | |
166 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
167 NAME="AEN8046" |
0 | 168 ></A |
169 ><H2 | |
170 >Examples</H2 | |
171 ><P | |
172 ><PRE | |
173 CLASS="PROGRAMLISTING" | |
174 >if (SDL_SemWait(my_sem) == -1) { | |
175 return WAIT_FAILED; | |
176 } | |
177 | |
178 ... | |
179 | |
180 SDL_SemPost(my_sem);</PRE | |
181 ></P | |
182 ></DIV | |
183 ><DIV | |
184 CLASS="REFSECT1" | |
185 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
186 NAME="AEN8050" |
0 | 187 ></A |
188 ><H2 | |
189 >See Also</H2 | |
190 ><P | |
191 ><A | |
192 HREF="sdlcreatesemaphore.html" | |
193 ><TT | |
194 CLASS="FUNCTION" | |
195 >SDL_CreateSemaphore</TT | |
196 ></A | |
197 >, | |
198 <A | |
199 HREF="sdldestroysemaphore.html" | |
200 ><TT | |
201 CLASS="FUNCTION" | |
202 >SDL_DestroySemaphore</TT | |
203 ></A | |
204 >, | |
205 <A | |
206 HREF="sdlsemtrywait.html" | |
207 ><TT | |
208 CLASS="FUNCTION" | |
209 >SDL_SemTryWait</TT | |
210 ></A | |
211 >, | |
212 <A | |
213 HREF="sdlsemwaittimeout.html" | |
214 ><TT | |
215 CLASS="FUNCTION" | |
216 >SDL_SemWaitTimeout</TT | |
217 ></A | |
218 >, | |
219 <A | |
220 HREF="sdlsempost.html" | |
221 ><TT | |
222 CLASS="FUNCTION" | |
223 >SDL_SemPost</TT | |
224 ></A | |
225 >, | |
226 <A | |
227 HREF="sdlsemvalue.html" | |
228 ><TT | |
229 CLASS="FUNCTION" | |
230 >SDL_SemValue</TT | |
231 ></A | |
232 ></P | |
233 ></DIV | |
234 ><DIV | |
235 CLASS="NAVFOOTER" | |
236 ><HR | |
237 ALIGN="LEFT" | |
238 WIDTH="100%"><TABLE | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
239 SUMMARY="Footer navigation table" |
0 | 240 WIDTH="100%" |
241 BORDER="0" | |
242 CELLPADDING="0" | |
243 CELLSPACING="0" | |
244 ><TR | |
245 ><TD | |
246 WIDTH="33%" | |
247 ALIGN="left" | |
248 VALIGN="top" | |
249 ><A | |
250 HREF="sdldestroysemaphore.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
251 ACCESSKEY="P" |
0 | 252 >Prev</A |
253 ></TD | |
254 ><TD | |
255 WIDTH="34%" | |
256 ALIGN="center" | |
257 VALIGN="top" | |
258 ><A | |
259 HREF="index.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
260 ACCESSKEY="H" |
0 | 261 >Home</A |
262 ></TD | |
263 ><TD | |
264 WIDTH="33%" | |
265 ALIGN="right" | |
266 VALIGN="top" | |
267 ><A | |
268 HREF="sdlsemtrywait.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
269 ACCESSKEY="N" |
0 | 270 >Next</A |
271 ></TD | |
272 ></TR | |
273 ><TR | |
274 ><TD | |
275 WIDTH="33%" | |
276 ALIGN="left" | |
277 VALIGN="top" | |
278 >SDL_DestroySemaphore</TD | |
279 ><TD | |
280 WIDTH="34%" | |
281 ALIGN="center" | |
282 VALIGN="top" | |
283 ><A | |
284 HREF="thread.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
285 ACCESSKEY="U" |
0 | 286 >Up</A |
287 ></TD | |
288 ><TD | |
289 WIDTH="33%" | |
290 ALIGN="right" | |
291 VALIGN="top" | |
292 >SDL_SemTryWait</TD | |
293 ></TR | |
294 ></TABLE | |
295 ></DIV | |
296 ></BODY | |
297 ></HTML | |
298 > |