Mercurial > sdl-ios-xcode
annotate BUGS @ 563:04dcaf3da918
Massive Quartz input enhancements from Darrell Walisser. His email:
Enclosed is a patch that addresses the following:
--Various minor cleanups.
Removed dead/obsolete code, made some style cleanups
--Mouse Events
Now keep track of what button(s) were pressed so we know when to send
the mouse up event. This fixes the case where the mouse is dragged
outside of the game window and released (in which case we want to send
the mouse up event even though the mouse is outside the game window).
--Input Grabbing
Here is my take on the grabbing situation, which is the basis for the
new implementation.
There are 3 grab states, ungrabbed (UG), visible (VG), and invisible
(IG). Both VG and IG keep the mouse constrained to the window and
produce relative motion events. In VG the cursor is visible (duh), in
IG it is not. In VG, absolute motion events also work.
There are 6 actions that can affect grabbing:
1. Set Fullscreen/Window (F/W). In fullscreen, a visible grab should do
nothing. However, a fullscreen visible grab can be treated just like a
windowed visible grab, which is what I have done to help simplify
things.
2. Cursor hide/show (H/S). If the cursor is hidden when grabbing, the
grab is an invisible grab. If the cursor is visible, the grab should
just constrain the mouse to the window.
3. Input grab/ungrab(G/U). If grabbed, the cursor should be confined to
the window as should the keyboard input. On Mac OS X, the keyboard
input is implicitly grabbed by confining the cursor, except for
command-tab which can switch away from the application. Should the
window come to the foreground if the application is deactivated and
grab input is called? This isn't necessary in this implementation
because the grab state will be asserted upon activation.
Using my notation, these are all the cases that need to be handled
(state + action = new state).
UG+U = UG
UG+G = VG or IG, if cursor is visible or not
UG+H = UG
UG+S = UG
VG+U = UG
VG+G = VG
VG+H = IG
VG+S = VG
IG+U = UG
IG+G = IG
IG+H = IG
IG+S = VG
The cases that result in the same state can be ignored in the code,
which cuts it down to just 5 cases.
Another issue is what happens when the app loses/gains input focus from
deactivate/activate or iconify/deiconify. I think that if input focus
is ever lost (outside of SDL's control), the grab state should be
suspended and the cursor should become visible and active again. When
regained, the cursor should reappear in its original location and/or
grab state. This way, when reactivating the cursor is still in the same
position as before so apps shouldn't get confused when the next motion
event comes in. This is what I've done in this patch.
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Fri, 27 Dec 2002 20:52:41 +0000 |
parents | 19e73568a75c |
children | 8e3ce997621c |
rev | line source |
---|---|
0 | 1 |
2 All: | |
3 Audio rate conversion is only implemented by multiplying or dividing | |
4 by a power of two. This is a side-effect of the requirement that the | |
5 raw audio buffer size be a power of two, and can hopefully be fixed. | |
6 This means 8 KHz audio converted to 22 KHz ends up being 16 KHz. :-/ | |
7 | |
8 When the implementation is writing directly to video memory the mouse | |
9 cursor doesn't work properly. Applications which do this should use | |
10 their own mouse cursor and call SDL_ShowCursor(0) to hide the system | |
11 cursor. | |
12 | |
13 Linux: | |
14 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
15 It requires handling of keyboard mapping events and using the XIM | |
16 input translation extension. I will implement it as requested. | |
17 Latin-1 keyboard input works fine. | |
18 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
19 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
20 |
0 | 21 The AAlib, GGI, and SVGAlib video drivers are not heavily tested. |
22 | |
23 Win32: | |
24 The MCI driver can't tell if the CD-ROM drive is paused or stopped. | |
25 | |
26 The SDL_INIT_EVENTTHREAD flag is not supported on Win32 | |
27 (Idea: create a separate DirectInput polling thread) | |
28 The main purpose of this flag is for smooth cursor motion in | |
29 fullscreen environments. | |
30 | |
31 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
32 This requires the ToUnicode() API which is only implemented on | |
33 Windows NT/2000, not on Windows 95/98. | |
34 Latin-1 keyboard input works fine. | |
35 | |
36 Joysticks are only supported under the Win32 MultiMedia API, | |
37 DirectInput support is not yet implemented. | |
38 | |
39 BeOS: | |
40 BePPC is not supported, apparently not even by Be Inc. | |
41 | |
42 SDL_WM_GrabInput() is not implemented. | |
43 Does anyone know how to do this? SDL_WM_GrabInput() is designed | |
44 to prevent the user from switching input and mouse focus away from | |
45 the SDL application. | |
46 | |
47 Continuous relative mouse motion is not implemented. | |
48 | |
49 Wide UNICODE character input (Kanji, etc.) has not been tested. | |
50 Latin-1 keyboard input works fine. | |
51 | |
52 MacOS: | |
53 Palette handling isn't implemented in windowed mode yet. | |
54 | |
55 Audio hasn't been extensively tested, in particular the locking | |
56 isn't implemented and mixer routines may not call malloc() or free() | |
57 because they are called at interrupt time. | |
58 | |
59 SDL_WM_GrabInput() is not implemented. | |
60 Does anyone know how to do this? SDL_WM_GrabInput() is designed | |
61 to prevent the user from switching input and mouse focus away from | |
62 the SDL application. | |
63 | |
64 Continuous relative mouse motion is not implemented. | |
65 | |
66 SDL_AddTimer() and SDL_RemoveTimer() haven't been implemented yet. | |
67 | |
68 Not all of the keys are properly recognized on the keyboard. | |
69 | |
70 MacOS X: | |
172
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
154
diff
changeset
|
71 CD-ROM functions are not implemented yet. |
0 | 72 |
172
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
154
diff
changeset
|
73 Joystick code is not extensively tested yet. |
58
bd6b0a910a65
* Removed fullscreen menu option from the "Window" menu
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
74 |
bd6b0a910a65
* Removed fullscreen menu option from the "Window" menu
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
75 Resizeable windows aren't implemented yet. |
bd6b0a910a65
* Removed fullscreen menu option from the "Window" menu
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
76 |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
77 Depth switching for windowed mode isn't implemented yet. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
78 |
0 | 79 Palette handling isn't implemented in windowed mode yet. |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
80 |
390
19e73568a75c
Date: Sat, 1 Jun 2002 17:56:45 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
279
diff
changeset
|
81 Command-line arguments dialog is not implemented yet. |
0 | 82 |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
83 Fullscreen drawing has some artifacts. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
84 |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
85 Fullscreen OpenGL for the software renderer is broken. |
0 | 86 |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
87 Some OpenGL parameters are not accounted for, for example color bits customization. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
88 |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
89 Continuous mouse motion perhaps is not as smooth as it should be. |
0 | 90 |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
91 SDL_WM_GrabInput() is implemented, but it "freezes" the hardware |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
92 cursor in the center of the window/screen. Also, mouse moved events |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
27
diff
changeset
|
93 are not generated, and the keyboard cannot be grabbed. |
0 | 94 |
95 MacOS X seems to have a broken pthread_cancel() implementation. | |
96 | |
97 FreeBSD: | |
98 pthread_cancel() isn't supported by FreeBSD 3.X, so threads don't | |
99 work on versions of FreeBSD earlier than 4.0. | |
100 | |
101 The CD-ROM handling doesn't work completely. | |
102 | |
103 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
104 It requires handling of keyboard mapping events and using the XIM | |
105 input translation extension. I will implement it as requested. | |
106 Latin-1 keyboard input works fine. | |
107 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
108 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
109 |
0 | 110 Solaris: |
111 The joystick functions are not implemented yet. | |
112 | |
113 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
114 It requires handling of keyboard mapping events and using the XIM | |
115 input translation extension. I will implement it as requested. | |
116 Latin-1 keyboard input works fine. | |
117 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
118 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
119 |
0 | 120 IRIX: |
121 The CD-ROM handling doesn't work completely. | |
122 | |
123 The joystick functions are not implemented yet. | |
124 | |
125 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
126 It requires handling of keyboard mapping events and using the XIM | |
127 input translation extension. I will implement it as requested. | |
128 Latin-1 keyboard input works fine. | |
129 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
130 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
131 |
250
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
132 EPOC: |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
133 Only Crystal version of Epoc/SymbianOS is currently supported. |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
134 |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
135 SDL is implemented in static library only. SDL uses static/global |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
136 variables and that is not allowed in EPOC dll libraries. |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
137 |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
138 Sound is not yet supported. |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
139 |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
140 Joystick, OpenGL and cdrom is not supported (think about cdrom in a cell phone:-). |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
141 |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
142 No console output screen. Printing to stdout do not have any effect. |
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
143 |
0 | 144 OpenBSD: -= NOT YET SUPPORTED =- |
145 This is reported to work, but I haven't verified this. | |
146 | |
147 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
148 It requires handling of keyboard mapping events and using the XIM | |
149 input translation extension. I will implement it as requested. | |
150 Latin-1 keyboard input works fine. | |
151 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
152 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
153 |
0 | 154 OSF/Tru64: -= NOT YET SUPPORTED =- |
155 The audio functions are not implemented yet. | |
156 | |
157 Joysticks and CD-ROM functions are not implemented yet. | |
158 | |
159 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
160 It requires handling of keyboard mapping events and using the XIM | |
161 input translation extension. I will implement it as requested. | |
162 Latin-1 keyboard input works fine. | |
163 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
164 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
165 |
0 | 166 AIX: -= NOT YET SUPPORTED =- |
167 This port has only been tested with AIX 4.3.3 | |
168 | |
169 The OpenGL support doesn't work yet. | |
170 | |
171 The joystick subsystem isn't implemented yet. | |
172 | |
173 Endian detection doesn't work yet - needs a unique CPP symbol. | |
174 | |
175 Wide UNICODE character input (Kanji, etc.) is not yet supported. | |
176 It requires handling of keyboard mapping events and using the XIM | |
177 input translation extension. I will implement it as requested. | |
178 Latin-1 keyboard input works fine. | |
179 | |
27
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
180 The keyboard modifiers are not set to the correct state on startup. |
a7e598a8d8be
The keyboard modifiers are not set to the correct state on X11 startup.
Sam Lantinga <slouken@lokigames.com>
parents:
21
diff
changeset
|
181 |
0 | 182 The AIX port was done by Carsten.Griwodz@KOM.tu-darmstadt.de |
183 More information on this port is available at: | |
184 http://www.kom.e-technik.tu-darmstadt.de/~griff/SDL/ | |
185 | |
186 QNX: -= NOT YET SUPPORTED =- | |
187 Only static libraries are being made, no shared ones. | |
188 | |
189 The only hardware surface is the primary view surface. | |
190 | |
191 Mouse events don't seem to be working right. | |
192 | |
193 Fullscreen doesn't display correctly. | |
194 | |
195 The software surfaces could use some speed up. | |
196 | |
197 The mouse cursor doesn't look right. | |
198 | |
199 AmigaOS: -= NOT YET SUPPORTED =- | |
200 The OpenGL support isn't implemented yet. | |
201 | |
202 SDL_WM_GrabInput() is not implemented. | |
203 Does anyone know how to do this? SDL_WM_GrabInput() is designed | |
204 to prevent the user from switching input and mouse focus away from | |
205 the SDL application. | |
206 | |
207 Continuous relative mouse motion is not implemented. | |
208 | |
209 The AmigaOS port was done by Gabriele.Greco@galactica.it | |
250
74a8f672f2f8
Added support for building SDL for EPOC/SymbianOS 6.0 (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
210 |