Mercurial > sdl-ios-xcode
annotate docs/html/sdlcreatesemaphore.html @ 892:dc29e5907694
Date: Sun, 18 Apr 2004 16:09:53 -0400 (EDT)
From: David MacCormack
Subject: [SDL] Linux joystick patch
I recently got myself a PS2 -> USB converter (a super joybox 5). It
accepts 4 PSX/PS2 controllers. It's implemented as a HID, which is nice
because it doesn't require its own driver, but the problem is that it's
implemented as a *single* HID -- that is, it shows up as a single
joystick with 19 axes, 4 hats, and 48 buttons. This poses a problem for a
number of apps which use SDL (stella, fce ultra, zsnes, to name a few) and
see only a single (physical) joystick even though there are really 4
(logical) joysticks. There are a number of these types of devices on the
market, and I've seen others post messages (in the zsnes forum, for
example) with the same problem, so I came up with what I think is a pretty
generic solution.
I patched src/joystick/linux/SDL_sysjoystic.c to include support for
logical joysticks; basically, it's a static array and supporting functions
that map a single physical joystick to multiple logical joysticks. The
attached patch has the new code. It's wrapped inside #ifndef
statements so that you can get the old behavior if you want.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 16 May 2004 18:46:24 +0000 |
parents | 355632dca928 |
children |
rev | line source |
---|---|
0 | 1 <HTML |
2 ><HEAD | |
3 ><TITLE | |
4 >SDL_CreateSemaphore</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_mutexV" | |
17 HREF="sdlmutexv.html"><LINK | |
18 REL="NEXT" | |
19 TITLE="SDL_DestroySemaphore" | |
20 HREF="sdldestroysemaphore.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="sdlmutexv.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="sdldestroysemaphore.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="SDLCREATESEMAPHORE" | |
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_CreateSemaphore</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="AEN7936" |
0 | 80 ></A |
81 ><H2 | |
82 >Name</H2 | |
83 >SDL_CreateSemaphore -- Creates a new semaphore and assigns an initial value to it.</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="AEN7939" |
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="AEN7940" |
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 >SDL_sem *<B | |
107 CLASS="FSFUNC" | |
108 >SDL_CreateSemaphore</B | |
109 ></CODE | |
110 >(Uint32 initial_value);</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="AEN7946" |
0 | 120 ></A |
121 ><H2 | |
122 >Description</H2 | |
123 ><P | |
124 ><TT | |
125 CLASS="FUNCTION" | |
126 >SDL_CreateSemaphore()</TT | |
127 > creates a new semaphore and | |
128 initializes it with the value <TT | |
129 CLASS="PARAMETER" | |
130 ><I | |
131 >initial_value</I | |
132 ></TT | |
133 >. | |
134 Each locking operation on the semaphore by | |
135 <A | |
136 HREF="sdlsemwait.html" | |
137 >SDL_SemWait</A | |
138 >, | |
139 <A | |
140 HREF="sdlsemtrywait.html" | |
141 >SDL_SemTryWait</A | |
142 > or | |
143 <A | |
144 HREF="sdlsemwaittimeout.html" | |
145 >SDL_SemWaitTimeout</A | |
146 > | |
147 will atomically decrement the semaphore value. The locking operation will be blocked | |
148 if the semaphore value is not positive (greater than zero). Each unlock operation by | |
149 <A | |
150 HREF="sdlsempost.html" | |
151 >SDL_SemPost</A | |
152 > | |
153 will atomically increment the semaphore value.</P | |
154 ></DIV | |
155 ><DIV | |
156 CLASS="REFSECT1" | |
157 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
158 NAME="AEN7955" |
0 | 159 ></A |
160 ><H2 | |
161 >Return Value</H2 | |
162 ><P | |
163 >Returns a pointer to an initialized semaphore or | |
164 <SPAN | |
165 CLASS="RETURNVALUE" | |
166 >NULL</SPAN | |
167 > if there was an error.</P | |
168 ></DIV | |
169 ><DIV | |
170 CLASS="REFSECT1" | |
171 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
172 NAME="AEN7959" |
0 | 173 ></A |
174 ><H2 | |
175 >Examples</H2 | |
176 ><P | |
177 ><PRE | |
178 CLASS="PROGRAMLISTING" | |
179 >SDL_sem *my_sem; | |
180 | |
181 my_sem = SDL_CreateSemaphore(INITIAL_SEM_VALUE); | |
182 | |
183 if (my_sem == NULL) { | |
184 return CREATE_SEM_FAILED; | |
185 }</PRE | |
186 ></P | |
187 ></DIV | |
188 ><DIV | |
189 CLASS="REFSECT1" | |
190 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
191 NAME="AEN7963" |
0 | 192 ></A |
193 ><H2 | |
194 >See Also</H2 | |
195 ><P | |
196 ><A | |
197 HREF="sdldestroysemaphore.html" | |
198 ><TT | |
199 CLASS="FUNCTION" | |
200 >SDL_DestroySemaphore</TT | |
201 ></A | |
202 >, | |
203 <A | |
204 HREF="sdlsemwait.html" | |
205 ><TT | |
206 CLASS="FUNCTION" | |
207 >SDL_SemWait</TT | |
208 ></A | |
209 >, | |
210 <A | |
211 HREF="sdlsemtrywait.html" | |
212 ><TT | |
213 CLASS="FUNCTION" | |
214 >SDL_SemTryWait</TT | |
215 ></A | |
216 >, | |
217 <A | |
218 HREF="sdlsemwaittimeout.html" | |
219 ><TT | |
220 CLASS="FUNCTION" | |
221 >SDL_SemWaitTimeout</TT | |
222 ></A | |
223 >, | |
224 <A | |
225 HREF="sdlsempost.html" | |
226 ><TT | |
227 CLASS="FUNCTION" | |
228 >SDL_SemPost</TT | |
229 ></A | |
230 >, | |
231 <A | |
232 HREF="sdlsemvalue.html" | |
233 ><TT | |
234 CLASS="FUNCTION" | |
235 >SDL_SemValue</TT | |
236 ></A | |
237 ></P | |
238 ></DIV | |
239 ><DIV | |
240 CLASS="NAVFOOTER" | |
241 ><HR | |
242 ALIGN="LEFT" | |
243 WIDTH="100%"><TABLE | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
244 SUMMARY="Footer navigation table" |
0 | 245 WIDTH="100%" |
246 BORDER="0" | |
247 CELLPADDING="0" | |
248 CELLSPACING="0" | |
249 ><TR | |
250 ><TD | |
251 WIDTH="33%" | |
252 ALIGN="left" | |
253 VALIGN="top" | |
254 ><A | |
255 HREF="sdlmutexv.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
256 ACCESSKEY="P" |
0 | 257 >Prev</A |
258 ></TD | |
259 ><TD | |
260 WIDTH="34%" | |
261 ALIGN="center" | |
262 VALIGN="top" | |
263 ><A | |
264 HREF="index.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
265 ACCESSKEY="H" |
0 | 266 >Home</A |
267 ></TD | |
268 ><TD | |
269 WIDTH="33%" | |
270 ALIGN="right" | |
271 VALIGN="top" | |
272 ><A | |
273 HREF="sdldestroysemaphore.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
274 ACCESSKEY="N" |
0 | 275 >Next</A |
276 ></TD | |
277 ></TR | |
278 ><TR | |
279 ><TD | |
280 WIDTH="33%" | |
281 ALIGN="left" | |
282 VALIGN="top" | |
283 >SDL_mutexV</TD | |
284 ><TD | |
285 WIDTH="34%" | |
286 ALIGN="center" | |
287 VALIGN="top" | |
288 ><A | |
289 HREF="thread.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
290 ACCESSKEY="U" |
0 | 291 >Up</A |
292 ></TD | |
293 ><TD | |
294 WIDTH="33%" | |
295 ALIGN="right" | |
296 VALIGN="top" | |
297 >SDL_DestroySemaphore</TD | |
298 ></TR | |
299 ></TABLE | |
300 ></DIV | |
301 ></BODY | |
302 ></HTML | |
303 > |