Mercurial > sdl-ios-xcode
annotate docs/html/sdlseteventfilter.html @ 1295:c3e36ac8a94c
Date: Sun, 6 Mar 2005 17:06:20 +0100
From: Per Inge Mathisen
Subject: [SDL] Fullscreen refresh on win32
Windows has a terrible default for fullscreen 3D apps of 60mhz refresh
rate. This can be fixed by the user by going into his driver's
control panel and forcing the refresh rate higher. However, this not a
very user friendly way about it, and in any case SDL contains no code
that could figure out this that condition has afflicted the user.
So the question is, could SDL fix this for the user? It is possible
under Windows to request a higher refresh rate. The danger is of
course that if the user has an old monitor, and you request a too high
refresh rate, the monitor could be damaged. However, I believe there
might be a way around that: Check before switching what refresh rate
the user's desktop runs in, and if our fullscreen dimensions are equal
or less than those of the desktop, use the higher refresh rate of 60
and the desktop rate.
Since most users run their desktops in the same or higher resolution
something sane, this should fix this problem for most users.
Thoughts?
An alternative is to add an SDL_GL_GetAttribute(SDL_GL_REFRESH_RATE)
option so that programs can bitch at their users at their own
convenience.
- Per
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 30 Jan 2006 06:56:10 +0000 |
parents | 355632dca928 |
children |
rev | line source |
---|---|
0 | 1 <HTML |
2 ><HEAD | |
3 ><TITLE | |
4 >SDL_SetEventFilter</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="Event Functions." | |
14 HREF="eventfunctions.html"><LINK | |
15 REL="PREVIOUS" | |
16 TITLE="SDL_PushEvent" | |
17 HREF="sdlpushevent.html"><LINK | |
18 REL="NEXT" | |
19 TITLE="SDL_GetEventFilter" | |
20 HREF="sdlgeteventfilter.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="sdlpushevent.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="sdlgeteventfilter.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="SDLSETEVENTFILTER" | |
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_SetEventFilter</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="AEN5575" |
0 | 80 ></A |
81 ><H2 | |
82 >Name</H2 | |
83 >SDL_SetEventFilter -- Sets up a filter to process all events before they are posted | |
84 to the event queue.</DIV | |
85 ><DIV | |
86 CLASS="REFSYNOPSISDIV" | |
87 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
88 NAME="AEN5578" |
0 | 89 ></A |
90 ><H2 | |
91 >Synopsis</H2 | |
92 ><DIV | |
93 CLASS="FUNCSYNOPSIS" | |
94 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
95 NAME="AEN5579" |
0 | 96 ></A |
97 ><P | |
98 ></P | |
99 ><PRE | |
100 CLASS="FUNCSYNOPSISINFO" | |
101 >#include "SDL.h"</PRE | |
102 ><P | |
103 ><CODE | |
104 ><CODE | |
105 CLASS="FUNCDEF" | |
106 >void <B | |
107 CLASS="FSFUNC" | |
108 >SDL_SetEventFilter</B | |
109 ></CODE | |
110 >(SDL_EventFilter filter);</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="AEN5585" |
0 | 120 ></A |
121 ><H2 | |
122 >Description</H2 | |
123 ><P | |
124 >This function sets up a filter to process all events before they are posted | |
125 to the event queue. This is a very powerful and flexible feature. The filter | |
126 is prototyped as: | |
127 <PRE | |
128 CLASS="PROGRAMLISTING" | |
129 >typedef int (*SDL_EventFilter)(const SDL_Event *event);</PRE | |
130 > | |
131 If the filter returns <SPAN | |
132 CLASS="RETURNVALUE" | |
133 >1</SPAN | |
134 >, then the event will be | |
135 added to the internal queue. If it returns <SPAN | |
136 CLASS="RETURNVALUE" | |
137 >0</SPAN | |
138 >, | |
139 then the event will be dropped from the queue. This allows selective | |
140 filtering of dynamically.</P | |
141 ><P | |
142 >There is one caveat when dealing with the <TT | |
143 CLASS="LITERAL" | |
144 >SDL_QUITEVENT</TT | |
145 > event type. The | |
146 event filter is only called when the window manager desires to close the | |
147 application window. If the event filter returns 1, then the window will | |
148 be closed, otherwise the window will remain open if possible. | |
149 If the quit event is generated by an interrupt signal, it will bypass the | |
150 internal queue and be delivered to the application at the next event poll.</P | |
151 ><DIV | |
152 CLASS="NOTE" | |
153 ><BLOCKQUOTE | |
154 CLASS="NOTE" | |
155 ><P | |
156 ><B | |
157 >Note: </B | |
158 >Events pushed onto the queue with <A | |
159 HREF="sdlpushevent.html" | |
160 ><TT | |
161 CLASS="FUNCTION" | |
162 >SDL_PushEvent</TT | |
163 ></A | |
164 > or <A | |
165 HREF="sdlpeepevents.html" | |
166 ><TT | |
167 CLASS="FUNCTION" | |
168 >SDL_PeepEvents</TT | |
169 ></A | |
170 > do not get passed through the event filter.</P | |
171 ></BLOCKQUOTE | |
172 ></DIV | |
173 ><DIV | |
174 CLASS="NOTE" | |
175 ><BLOCKQUOTE | |
176 CLASS="NOTE" | |
177 ><P | |
178 ><B | |
179 >Note: </B | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
180 ><SPAN |
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
181 CLASS="emphasis" |
0 | 182 ><I |
183 CLASS="EMPHASIS" | |
184 >Be Careful!</I | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
185 ></SPAN |
0 | 186 > The event filter function may run in a different thread so be careful what you do within it.</P |
187 ></BLOCKQUOTE | |
188 ></DIV | |
189 ></DIV | |
190 ><DIV | |
191 CLASS="REFSECT1" | |
192 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
193 NAME="AEN5602" |
0 | 194 ></A |
195 ><H2 | |
196 >See Also</H2 | |
197 ><P | |
198 ><A | |
199 HREF="sdlevent.html" | |
200 ><SPAN | |
201 CLASS="STRUCTNAME" | |
202 >SDL_Event</SPAN | |
203 ></A | |
204 >, | |
205 <A | |
206 HREF="sdlgeteventfilter.html" | |
207 ><TT | |
208 CLASS="FUNCTION" | |
209 >SDL_GetEventFilter</TT | |
210 ></A | |
211 >, | |
212 <A | |
213 HREF="sdlpushevent.html" | |
214 ><TT | |
215 CLASS="FUNCTION" | |
216 >SDL_PushEvent</TT | |
217 ></A | |
218 ></P | |
219 ></DIV | |
220 ><DIV | |
221 CLASS="NAVFOOTER" | |
222 ><HR | |
223 ALIGN="LEFT" | |
224 WIDTH="100%"><TABLE | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
225 SUMMARY="Footer navigation table" |
0 | 226 WIDTH="100%" |
227 BORDER="0" | |
228 CELLPADDING="0" | |
229 CELLSPACING="0" | |
230 ><TR | |
231 ><TD | |
232 WIDTH="33%" | |
233 ALIGN="left" | |
234 VALIGN="top" | |
235 ><A | |
236 HREF="sdlpushevent.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
237 ACCESSKEY="P" |
0 | 238 >Prev</A |
239 ></TD | |
240 ><TD | |
241 WIDTH="34%" | |
242 ALIGN="center" | |
243 VALIGN="top" | |
244 ><A | |
245 HREF="index.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
246 ACCESSKEY="H" |
0 | 247 >Home</A |
248 ></TD | |
249 ><TD | |
250 WIDTH="33%" | |
251 ALIGN="right" | |
252 VALIGN="top" | |
253 ><A | |
254 HREF="sdlgeteventfilter.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
255 ACCESSKEY="N" |
0 | 256 >Next</A |
257 ></TD | |
258 ></TR | |
259 ><TR | |
260 ><TD | |
261 WIDTH="33%" | |
262 ALIGN="left" | |
263 VALIGN="top" | |
264 >SDL_PushEvent</TD | |
265 ><TD | |
266 WIDTH="34%" | |
267 ALIGN="center" | |
268 VALIGN="top" | |
269 ><A | |
270 HREF="eventfunctions.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
271 ACCESSKEY="U" |
0 | 272 >Up</A |
273 ></TD | |
274 ><TD | |
275 WIDTH="33%" | |
276 ALIGN="right" | |
277 VALIGN="top" | |
278 >SDL_GetEventFilter</TD | |
279 ></TR | |
280 ></TABLE | |
281 ></DIV | |
282 ></BODY | |
283 ></HTML | |
284 > |