Mercurial > sdl-ios-xcode
annotate docs/html/sdlpollevent.html @ 773:da0a2ad35bf4
Date: Sun, 4 Jan 2004 23:48:19 +0100
From: Max Horn
Subject: Re: Again Audio CD patch
Am 04.01.2004 um 22:38 schrieb Sam Lantinga:
>
> Okay, I fixed the buffering problems by simply using a 4 second buffer
> instead of a 1 second buffer. However, using your code I can't play an
> entire CD - the playback stops after the first song.
>
Found the problem: FSReadFork returns eofErr when the file is finished.
However, we check its return value for errors, and if anything but
noErr occurs, the reader thread aborts its current iteration. That is
bad, because it aborts before it can ever set the flag which tells that
the file is over (also, any remaining data which FSRead did return is
lost - so you'd not hear about to 4 seconds from the end of the file.
Furthermore, the computed data size was 8 bytes to high (I forgot to
account for the fact that the size of an (A)IFF chunk always contains
the chunk header & size fields, too). This is enough to make it work.
However, the end condition is rather fragile, so I tuned some other
things to be pessimistic (check for <= 0 instead of == 0, when eofErr
is encountered enforce mReadFilePosition == mFileLength). You never
know...
The attached patch fixes the issue for me.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 05 Jan 2004 00:57:51 +0000 |
parents | e5bc29de3f0a |
children | 355632dca928 |
rev | line source |
---|---|
0 | 1 <HTML |
2 ><HEAD | |
3 ><TITLE | |
4 >SDL_PollEvent</TITLE | |
5 ><META | |
6 NAME="GENERATOR" | |
55
55f1f1b3e27d
Added new docs for SDL 1.2.1
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.64 |
0 | 8 "><LINK |
9 REL="HOME" | |
10 TITLE="SDL Library Documentation" | |
11 HREF="index.html"><LINK | |
12 REL="UP" | |
13 TITLE="Event Functions." | |
14 HREF="eventfunctions.html"><LINK | |
15 REL="PREVIOUS" | |
16 TITLE="SDL_PeepEvents" | |
17 HREF="sdlpeepevents.html"><LINK | |
18 REL="NEXT" | |
19 TITLE="SDL_WaitEvent" | |
20 HREF="sdlwaitevent.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 | |
31 WIDTH="100%" | |
32 BORDER="0" | |
33 CELLPADDING="0" | |
34 CELLSPACING="0" | |
35 ><TR | |
36 ><TH | |
37 COLSPAN="3" | |
38 ALIGN="center" | |
39 >SDL Library Documentation</TH | |
40 ></TR | |
41 ><TR | |
42 ><TD | |
43 WIDTH="10%" | |
44 ALIGN="left" | |
45 VALIGN="bottom" | |
46 ><A | |
47 HREF="sdlpeepevents.html" | |
48 >Prev</A | |
49 ></TD | |
50 ><TD | |
51 WIDTH="80%" | |
52 ALIGN="center" | |
53 VALIGN="bottom" | |
54 ></TD | |
55 ><TD | |
56 WIDTH="10%" | |
57 ALIGN="right" | |
58 VALIGN="bottom" | |
59 ><A | |
60 HREF="sdlwaitevent.html" | |
61 >Next</A | |
62 ></TD | |
63 ></TR | |
64 ></TABLE | |
65 ><HR | |
66 ALIGN="LEFT" | |
67 WIDTH="100%"></DIV | |
68 ><H1 | |
69 ><A | |
70 NAME="SDLPOLLEVENT" | |
71 >SDL_PollEvent</A | |
72 ></H1 | |
73 ><DIV | |
74 CLASS="REFNAMEDIV" | |
75 ><A | |
181
e5bc29de3f0a
Updated from the SDL Documentation Project
Sam Lantinga <slouken@libsdl.org>
parents:
55
diff
changeset
|
76 NAME="AEN5084" |
0 | 77 ></A |
78 ><H2 | |
79 >Name</H2 | |
80 >SDL_PollEvent -- Polls for currently pending events.</DIV | |
81 ><DIV | |
82 CLASS="REFSYNOPSISDIV" | |
83 ><A | |
181
e5bc29de3f0a
Updated from the SDL Documentation Project
Sam Lantinga <slouken@libsdl.org>
parents:
55
diff
changeset
|
84 NAME="AEN5087" |
0 | 85 ></A |
86 ><H2 | |
87 >Synopsis</H2 | |
88 ><DIV | |
89 CLASS="FUNCSYNOPSIS" | |
90 ><A | |
181
e5bc29de3f0a
Updated from the SDL Documentation Project
Sam Lantinga <slouken@libsdl.org>
parents:
55
diff
changeset
|
91 NAME="AEN5088" |
0 | 92 ></A |
93 ><P | |
94 ></P | |
95 ><PRE | |
96 CLASS="FUNCSYNOPSISINFO" | |
97 >#include "SDL.h"</PRE | |
98 ><P | |
99 ><CODE | |
100 ><CODE | |
101 CLASS="FUNCDEF" | |
102 >int <B | |
103 CLASS="FSFUNC" | |
104 >SDL_PollEvent</B | |
105 ></CODE | |
106 >(SDL_Event *event);</CODE | |
107 ></P | |
108 ><P | |
109 ></P | |
110 ></DIV | |
111 ></DIV | |
112 ><DIV | |
113 CLASS="REFSECT1" | |
114 ><A | |
181
e5bc29de3f0a
Updated from the SDL Documentation Project
Sam Lantinga <slouken@libsdl.org>
parents:
55
diff
changeset
|
115 NAME="AEN5094" |
0 | 116 ></A |
117 ><H2 | |
118 >Description</H2 | |
119 ><P | |
120 >Polls for currently pending events, and returns <SPAN | |
121 CLASS="RETURNVALUE" | |
122 >1</SPAN | |
123 > | |
124 if there are any pending events, or <SPAN | |
125 CLASS="RETURNVALUE" | |
126 >0</SPAN | |
127 > if there | |
128 are none available. </P | |
129 ><P | |
130 >If <TT | |
131 CLASS="PARAMETER" | |
132 ><I | |
133 >event</I | |
134 ></TT | |
135 > is not <TT | |
136 CLASS="LITERAL" | |
137 >NULL</TT | |
138 >, the next | |
139 event is removed from the queue and stored in that area.</P | |
140 ></DIV | |
141 ><DIV | |
142 CLASS="REFSECT1" | |
143 ><A | |
181
e5bc29de3f0a
Updated from the SDL Documentation Project
Sam Lantinga <slouken@libsdl.org>
parents:
55
diff
changeset
|
144 NAME="AEN5102" |
0 | 145 ></A |
146 ><H2 | |
147 >Examples</H2 | |
148 ><P | |
149 ><PRE | |
150 CLASS="PROGRAMLISTING" | |
151 >SDL_Event event; /* Event structure */ | |
152 | |
153 . | |
154 . | |
155 . | |
156 /* Check for events */ | |
157 while(SDL_PollEvent(&event)){ /* Loop until there are no events left on the queue */ | |
158 switch(event.type){ /* Process the appropiate event type */ | |
159 case SDL_KEYDOWN: /* Handle a KEYDOWN event */ | |
160 printf("Oh! Key press\n"); | |
161 break; | |
162 case SDL_MOUSEMOTION: | |
163 . | |
164 . | |
165 . | |
166 default: /* Report an unhandled event */ | |
167 printf("I don't know what this event is!\n"); | |
168 } | |
169 }</PRE | |
170 ></P | |
171 ></DIV | |
172 ><DIV | |
173 CLASS="REFSECT1" | |
174 ><A | |
181
e5bc29de3f0a
Updated from the SDL Documentation Project
Sam Lantinga <slouken@libsdl.org>
parents:
55
diff
changeset
|
175 NAME="AEN5106" |
0 | 176 ></A |
177 ><H2 | |
178 >See Also</H2 | |
179 ><P | |
180 ><A | |
181 HREF="sdlevent.html" | |
182 ><SPAN | |
183 CLASS="STRUCTNAME" | |
184 >SDL_Event</SPAN | |
185 ></A | |
186 >, | |
187 <A | |
188 HREF="sdlwaitevent.html" | |
189 ><TT | |
190 CLASS="FUNCTION" | |
191 >SDL_WaitEvent</TT | |
192 ></A | |
193 >, | |
194 <A | |
195 HREF="sdlpeepevents.html" | |
196 ><TT | |
197 CLASS="FUNCTION" | |
198 >SDL_PeepEvents</TT | |
199 ></A | |
200 ></P | |
201 ></DIV | |
202 ><DIV | |
203 CLASS="NAVFOOTER" | |
204 ><HR | |
205 ALIGN="LEFT" | |
206 WIDTH="100%"><TABLE | |
207 WIDTH="100%" | |
208 BORDER="0" | |
209 CELLPADDING="0" | |
210 CELLSPACING="0" | |
211 ><TR | |
212 ><TD | |
213 WIDTH="33%" | |
214 ALIGN="left" | |
215 VALIGN="top" | |
216 ><A | |
217 HREF="sdlpeepevents.html" | |
218 >Prev</A | |
219 ></TD | |
220 ><TD | |
221 WIDTH="34%" | |
222 ALIGN="center" | |
223 VALIGN="top" | |
224 ><A | |
225 HREF="index.html" | |
226 >Home</A | |
227 ></TD | |
228 ><TD | |
229 WIDTH="33%" | |
230 ALIGN="right" | |
231 VALIGN="top" | |
232 ><A | |
233 HREF="sdlwaitevent.html" | |
234 >Next</A | |
235 ></TD | |
236 ></TR | |
237 ><TR | |
238 ><TD | |
239 WIDTH="33%" | |
240 ALIGN="left" | |
241 VALIGN="top" | |
242 >SDL_PeepEvents</TD | |
243 ><TD | |
244 WIDTH="34%" | |
245 ALIGN="center" | |
246 VALIGN="top" | |
247 ><A | |
248 HREF="eventfunctions.html" | |
249 >Up</A | |
250 ></TD | |
251 ><TD | |
252 WIDTH="33%" | |
253 ALIGN="right" | |
254 VALIGN="top" | |
255 >SDL_WaitEvent</TD | |
256 ></TR | |
257 ></TABLE | |
258 ></DIV | |
259 ></BODY | |
260 ></HTML | |
261 > |