Mercurial > sdl-ios-xcode
comparison src/video/quartz/SDL_QuartzVideo.h @ 761:c5b2b6d2d1fe
Date: Wed, 31 Dec 2003 21:55:30 +0100
From: Max Horn
Subject: SDL: video/quartz cleanup
while doing some experimental changes in the quartz code, I was annoyed
by having to recompile that one big .o file over and over again. So I
decided to finally realize one TODO: properly splitting the code over
multiple files :-).
With two exceptions, I didn't make code changes, only rearranged files
and added new headers. Since there are several new files, making a
patch didn't work out so well, so I decided to just send you all the
new & modified files.
The one source change I made is related to showing/hiding the mouse. I
renamed cursor_visible to cursor_should_be_visible and cursor_hidden to
cursor_visible; I think that makes reading the code easier.
Then I added two new functions: QZ_ShowMouse and QZ_HideMouse. They
help manage cursor_visible (the former 'cursor_hidden'). Finally I
replaced the Carbon ShowCursor/HiderCuror calls by [NSCursor hide] and
[NSCursor unhide]. The API docs are not conclusive, but it might be
that with those the "cursor_visible" (former 'cursor_hidden') hack may
not be necessary anymore; however so far I didn't test this hypothesis,
so I left that in.
The other change was to remove in_foreground and use [NSApp isActive]
instead: Manually keeping track of whether we are in the foreground is
error prone. This should work better in some corner cases.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 04 Jan 2004 14:55:35 +0000 |
parents | 74b4b9f9e5e1 |
children | ac44ddb84f6f |
comparison
equal
deleted
inserted
replaced
760:cf9dd3aa6756 | 761:c5b2b6d2d1fe |
---|---|
1 /* | 1 /* |
2 SDL - Simple DirectMedia Layer | 2 SDL - Simple DirectMedia Layer |
3 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga | 3 Copyright (C) 1997-2003 Sam Lantinga |
4 | 4 |
5 This library is free software; you can redistribute it and/or | 5 This library is free software; you can redistribute it and/or |
6 modify it under the terms of the GNU Library General Public | 6 modify it under the terms of the GNU Library General Public |
7 License as published by the Free Software Foundation; either | 7 License as published by the Free Software Foundation; either |
8 version 2 of the License, or (at your option) any later version. | 8 version 2 of the License, or (at your option) any later version. |
52 #include <OpenGL/OpenGL.h> | 52 #include <OpenGL/OpenGL.h> |
53 #include <OpenGL/gl.h> | 53 #include <OpenGL/gl.h> |
54 #include <OpenGL/glext.h> | 54 #include <OpenGL/glext.h> |
55 #include <Carbon/Carbon.h> | 55 #include <Carbon/Carbon.h> |
56 #include <QuickTime/QuickTime.h> | 56 #include <QuickTime/QuickTime.h> |
57 #include <IOKit/IOKitLib.h> /* For powersave handling */ | 57 #include <IOKit/IOKitLib.h> /* For powersave handling */ |
58 #include <pthread.h> | 58 #include <pthread.h> |
59 | 59 |
60 #include "SDL_thread.h" | 60 #include "SDL_thread.h" |
61 #include "SDL_video.h" | 61 #include "SDL_video.h" |
62 #include "SDL_error.h" | 62 #include "SDL_error.h" |
63 #include "SDL_timer.h" | 63 #include "SDL_timer.h" |
64 #include "SDL_syswm.h" | 64 #include "SDL_syswm.h" |
65 #include "SDL_sysvideo.h" | 65 #include "SDL_sysvideo.h" |
66 #include "SDL_pixels_c.h" | 66 #include "SDL_pixels_c.h" |
67 #include "SDL_events_c.h" | 67 #include "SDL_events_c.h" |
68 | |
69 /* | |
70 Add methods to get at private members of NSScreen. | |
71 Since there is a bug in Apple's screen switching code | |
72 that does not update this variable when switching | |
73 to fullscreen, we'll set it manually (but only for the | |
74 main screen). | |
75 */ | |
76 @interface NSScreen (NSScreenAccess) | |
77 - (void) setFrame:(NSRect)frame; | |
78 @end | |
79 | |
80 @implementation NSScreen (NSScreenAccess) | |
81 - (void) setFrame:(NSRect)frame; | |
82 { | |
83 _frame = frame; | |
84 } | |
85 @end | |
86 | |
87 /* | |
88 This is a workaround to directly access NSOpenGLContext's CGL context | |
89 We need this to check for errors NSOpenGLContext doesn't support | |
90 */ | |
91 @interface NSOpenGLContext (CGLContextAccess) | |
92 - (CGLContextObj) cglContext; | |
93 @end | |
94 | |
95 @implementation NSOpenGLContext (CGLContextAccess) | |
96 - (CGLContextObj) cglContext; | |
97 { | |
98 return _contextAuxiliary; | |
99 } | |
100 @end | |
101 | |
102 /* | |
103 Structure for rez switch gamma fades | |
104 We can hide the monitor flicker by setting the gamma tables to 0 | |
105 */ | |
106 #define QZ_GAMMA_TABLE_SIZE 256 | |
107 | |
108 typedef struct { | |
109 | |
110 CGGammaValue red[QZ_GAMMA_TABLE_SIZE]; | |
111 CGGammaValue green[QZ_GAMMA_TABLE_SIZE]; | |
112 CGGammaValue blue[QZ_GAMMA_TABLE_SIZE]; | |
113 | |
114 } SDL_QuartzGammaTable; | |
115 | 68 |
116 /* Main driver structure to store required state information */ | 69 /* Main driver structure to store required state information */ |
117 typedef struct SDL_PrivateVideoData { | 70 typedef struct SDL_PrivateVideoData { |
118 | 71 |
119 CGDirectDisplayID display; /* 0 == main display (only support single display) */ | 72 CGDirectDisplayID display; /* 0 == main display (only support single display) */ |
129 Uint32 warp_ticks; /* timestamp when the warp occured */ | 82 Uint32 warp_ticks; /* timestamp when the warp occured */ |
130 NSWindow *window; /* Cocoa window to implement the SDL window */ | 83 NSWindow *window; /* Cocoa window to implement the SDL window */ |
131 NSQuickDrawView *view; /* the window's view; draw 2D and OpenGL into this view */ | 84 NSQuickDrawView *view; /* the window's view; draw 2D and OpenGL into this view */ |
132 SDL_Surface *resize_icon; /* icon for the resize badge, we have to draw it by hand */ | 85 SDL_Surface *resize_icon; /* icon for the resize badge, we have to draw it by hand */ |
133 SDL_GrabMode current_grab_mode; /* default value is SDL_GRAB_OFF */ | 86 SDL_GrabMode current_grab_mode; /* default value is SDL_GRAB_OFF */ |
134 BOOL in_foreground; /* boolean; indicate if app is in foreground or not */ | |
135 SDL_Rect **client_mode_list; /* resolution list to pass back to client */ | 87 SDL_Rect **client_mode_list; /* resolution list to pass back to client */ |
136 SDLKey keymap[256]; /* Mac OS X to SDL key mapping */ | 88 SDLKey keymap[256]; /* Mac OS X to SDL key mapping */ |
137 Uint32 current_mods; /* current keyboard modifiers, to track modifier state */ | 89 Uint32 current_mods; /* current keyboard modifiers, to track modifier state */ |
138 Uint32 last_virtual_button;/* last virtual mouse button pressed */ | 90 Uint32 last_virtual_button;/* last virtual mouse button pressed */ |
139 io_connect_t power_connection; /* used with IOKit to detect wake from sleep */ | 91 io_connect_t power_connection; /* used with IOKit to detect wake from sleep */ |
140 Uint8 expect_mouse_up; /* used to determine when to send mouse up events */ | 92 Uint8 expect_mouse_up; /* used to determine when to send mouse up events */ |
141 Uint8 grab_state; /* used to manage grab behavior */ | 93 Uint8 grab_state; /* used to manage grab behavior */ |
142 NSPoint cursor_loc; /* saved cursor coords, for activate/deactivate when grabbed */ | 94 NSPoint cursor_loc; /* saved cursor coords, for activate/deactivate when grabbed */ |
143 BOOL cursor_visible; /* tells if cursor was instructed to be hidden or not (SDL_ShowCursor) */ | 95 BOOL cursor_should_be_visible; /* tells if cursor is supposed to be visible (SDL_ShowCursor) */ |
144 BOOL cursor_hidden; /* tells if cursor is *actually* hidden or not */ | 96 BOOL cursor_visible; /* tells if cursor is *actually* visible or not */ |
145 Uint8* sw_buffers[2]; /* pointers to the two software buffers for double-buffer emulation */ | 97 Uint8* sw_buffers[2]; /* pointers to the two software buffers for double-buffer emulation */ |
146 SDL_Thread *thread; /* thread for async updates to the screen */ | 98 SDL_Thread *thread; /* thread for async updates to the screen */ |
147 SDL_sem *sem1, *sem2; /* synchronization for async screen updates */ | 99 SDL_sem *sem1, *sem2; /* synchronization for async screen updates */ |
148 Uint8 *current_buffer; /* the buffer being copied to the screen */ | 100 Uint8 *current_buffer; /* the buffer being copied to the screen */ |
149 BOOL quit_thread; /* used to quit the async blitting thread */ | 101 BOOL quit_thread; /* used to quit the async blitting thread */ |
154 ImageSequence yuv_seq; | 106 ImageSequence yuv_seq; |
155 PlanarPixmapInfoYUV420 *yuv_pixmap; | 107 PlanarPixmapInfoYUV420 *yuv_pixmap; |
156 Sint16 yuv_width, yuv_height; | 108 Sint16 yuv_width, yuv_height; |
157 CGrafPtr yuv_port; | 109 CGrafPtr yuv_port; |
158 | 110 |
159 } SDL_PrivateVideoData ; | 111 } SDL_PrivateVideoData; |
160 | 112 |
161 #define _THIS SDL_VideoDevice *this | 113 #define _THIS SDL_VideoDevice *this |
162 #define display_id (this->hidden->display) | 114 #define display_id (this->hidden->display) |
163 #define mode (this->hidden->mode) | 115 #define mode (this->hidden->mode) |
164 #define save_mode (this->hidden->save_mode) | 116 #define save_mode (this->hidden->save_mode) |
174 #define video_set (this->hidden->video_set) | 126 #define video_set (this->hidden->video_set) |
175 #define warp_ticks (this->hidden->warp_ticks) | 127 #define warp_ticks (this->hidden->warp_ticks) |
176 #define warp_flag (this->hidden->warp_flag) | 128 #define warp_flag (this->hidden->warp_flag) |
177 #define resize_icon (this->hidden->resize_icon) | 129 #define resize_icon (this->hidden->resize_icon) |
178 #define current_grab_mode (this->hidden->current_grab_mode) | 130 #define current_grab_mode (this->hidden->current_grab_mode) |
179 #define in_foreground (this->hidden->in_foreground) | |
180 #define client_mode_list (this->hidden->client_mode_list) | 131 #define client_mode_list (this->hidden->client_mode_list) |
181 #define keymap (this->hidden->keymap) | 132 #define keymap (this->hidden->keymap) |
182 #define current_mods (this->hidden->current_mods) | 133 #define current_mods (this->hidden->current_mods) |
183 #define last_virtual_button (this->hidden->last_virtual_button) | 134 #define last_virtual_button (this->hidden->last_virtual_button) |
184 #define power_connection (this->hidden->power_connection) | 135 #define power_connection (this->hidden->power_connection) |
185 #define expect_mouse_up (this->hidden->expect_mouse_up) | 136 #define expect_mouse_up (this->hidden->expect_mouse_up) |
186 #define grab_state (this->hidden->grab_state) | 137 #define grab_state (this->hidden->grab_state) |
187 #define cursor_loc (this->hidden->cursor_loc) | 138 #define cursor_loc (this->hidden->cursor_loc) |
139 #define cursor_should_be_visible (this->hidden->cursor_should_be_visible) | |
188 #define cursor_visible (this->hidden->cursor_visible) | 140 #define cursor_visible (this->hidden->cursor_visible) |
189 #define cursor_hidden (this->hidden->cursor_hidden) | |
190 #define sw_buffers (this->hidden->sw_buffers) | 141 #define sw_buffers (this->hidden->sw_buffers) |
191 #define thread (this->hidden->thread) | 142 #define thread (this->hidden->thread) |
192 #define sem1 (this->hidden->sem1) | 143 #define sem1 (this->hidden->sem1) |
193 #define sem2 (this->hidden->sem2) | 144 #define sem2 (this->hidden->sem2) |
194 #define current_buffer (this->hidden->current_buffer) | 145 #define current_buffer (this->hidden->current_buffer) |
195 #define quit_thread (this->hidden->quit_thread) | 146 #define quit_thread (this->hidden->quit_thread) |
196 | |
197 #define yuv_idh (this->hidden->yuv_idh) | |
198 #define yuv_matrix (this->hidden->yuv_matrix) | |
199 #define yuv_codec (this->hidden->yuv_codec) | |
200 #define yuv_seq (this->hidden->yuv_seq) | |
201 #define yuv_pixmap (this->hidden->yuv_pixmap) | |
202 #define yuv_data (this->hidden->yuv_data) | |
203 #define yuv_width (this->hidden->yuv_width) | |
204 #define yuv_height (this->hidden->yuv_height) | |
205 #define yuv_port (this->hidden->yuv_port) | |
206 | |
207 | 147 |
208 /* grab states - the input is in one of these states */ | 148 /* grab states - the input is in one of these states */ |
209 enum { | 149 enum { |
210 QZ_UNGRABBED = 0, | 150 QZ_UNGRABBED = 0, |
211 QZ_VISIBLE_GRAB, | 151 QZ_VISIBLE_GRAB, |
218 QZ_DISABLE_GRAB, | 158 QZ_DISABLE_GRAB, |
219 QZ_HIDECURSOR, | 159 QZ_HIDECURSOR, |
220 QZ_SHOWCURSOR | 160 QZ_SHOWCURSOR |
221 }; | 161 }; |
222 | 162 |
223 /* | |
224 Obscuring code: maximum number of windows above ours (inclusive) | |
225 | |
226 Note: this doesn't work too well in practice and should be | |
227 phased out when we add OpenGL 2D acceleration. It was never | |
228 enabled in the first place, so this shouldn't be a problem ;-) | |
229 */ | |
230 #define kMaxWindows 256 | |
231 | |
232 /* Some of the Core Graphics Server API for obscuring code */ | |
233 #define kCGSWindowLevelTop 2147483632 | |
234 #define kCGSWindowLevelDockIconDrag 500 | |
235 #define kCGSWindowLevelDockMenu 101 | |
236 #define kCGSWindowLevelMenuIgnore 21 | |
237 #define kCGSWindowLevelMenu 20 | |
238 #define kCGSWindowLevelDockLabel 12 | |
239 #define kCGSWindowLevelDockIcon 11 | |
240 #define kCGSWindowLevelDock 10 | |
241 #define kCGSWindowLevelUtility 3 | |
242 #define kCGSWindowLevelNormal 0 | |
243 | |
244 /* | |
245 For completeness; We never use these window levels, they are always below us | |
246 #define kCGSWindowLevelMBarShadow -20 | |
247 #define kCGSWindowLevelDesktopPicture -2147483647 | |
248 #define kCGSWindowLevelDesktop -2147483648 | |
249 */ | |
250 | |
251 typedef CGError CGSError; | |
252 typedef long CGSWindowCount; | |
253 typedef void * CGSConnectionID; | |
254 typedef int CGSWindowID; | |
255 typedef CGSWindowID* CGSWindowIDList; | |
256 typedef CGWindowLevel CGSWindowLevel; | |
257 typedef NSRect CGSRect; | |
258 | |
259 extern CGSConnectionID _CGSDefaultConnection (); | |
260 | |
261 extern CGSError CGSGetOnScreenWindowList (CGSConnectionID cid, | |
262 CGSConnectionID owner, | |
263 CGSWindowCount listCapacity, | |
264 CGSWindowIDList list, | |
265 CGSWindowCount *listCount); | |
266 | |
267 extern CGSError CGSGetScreenRectForWindow (CGSConnectionID cid, | |
268 CGSWindowID wid, | |
269 CGSRect *rect); | |
270 | |
271 extern CGWindowLevel CGSGetWindowLevel (CGSConnectionID cid, | |
272 CGSWindowID wid, | |
273 CGSWindowLevel *level); | |
274 | |
275 extern CGSError CGSDisplayHWFill (CGDirectDisplayID id, unsigned int x, unsigned int y, | |
276 unsigned int w, unsigned int h, unsigned int color); | |
277 | |
278 extern CGSError CGSDisplayCanHWFill (CGDirectDisplayID id); | |
279 | |
280 extern CGSError CGSGetMouseEnabledFlags (CGSConnectionID cid, CGSWindowID wid, int *flags); | |
281 | |
282 int CGSDisplayHWSync (CGDirectDisplayID id); | |
283 | |
284 /* Bootstrap functions */ | |
285 static int QZ_Available (); | |
286 static SDL_VideoDevice* QZ_CreateDevice (int device_index); | |
287 static void QZ_DeleteDevice (SDL_VideoDevice *device); | |
288 | |
289 /* Initialization, Query, Setup, and Redrawing functions */ | |
290 static int QZ_VideoInit (_THIS, SDL_PixelFormat *video_format); | |
291 | |
292 static SDL_Rect** QZ_ListModes (_THIS, SDL_PixelFormat *format, | |
293 Uint32 flags); | |
294 static void QZ_UnsetVideoMode (_THIS); | |
295 | |
296 static SDL_Surface* QZ_SetVideoMode (_THIS, SDL_Surface *current, | |
297 int width, int height, int bpp, | |
298 Uint32 flags); | |
299 static int QZ_ToggleFullScreen (_THIS, int on); | |
300 static int QZ_SetColors (_THIS, int first_color, | |
301 int num_colors, SDL_Color *colors); | |
302 | |
303 static int QZ_LockDoubleBuffer (_THIS, SDL_Surface *surface); | |
304 static void QZ_UnlockDoubleBuffer (_THIS, SDL_Surface *surface); | |
305 static int QZ_ThreadFlip (_THIS); | |
306 static int QZ_FlipDoubleBuffer (_THIS, SDL_Surface *surface); | |
307 static void QZ_DoubleBufferUpdate (_THIS, int num_rects, SDL_Rect *rects); | |
308 | |
309 static void QZ_DirectUpdate (_THIS, int num_rects, SDL_Rect *rects); | |
310 static int QZ_LockWindow (_THIS, SDL_Surface *surface); | |
311 static void QZ_UnlockWindow (_THIS, SDL_Surface *surface); | |
312 static void QZ_UpdateRects (_THIS, int num_rects, SDL_Rect *rects); | |
313 static void QZ_VideoQuit (_THIS); | |
314 | |
315 /* Hardware surface functions (for fullscreen mode only) */ | |
316 #if 0 /* Not used (apparently, it's really slow) */ | |
317 static int QZ_FillHWRect (_THIS, SDL_Surface *dst, SDL_Rect *rect, Uint32 color); | |
318 #endif | |
319 static int QZ_LockHWSurface(_THIS, SDL_Surface *surface); | |
320 static void QZ_UnlockHWSurface(_THIS, SDL_Surface *surface); | |
321 static void QZ_FreeHWSurface (_THIS, SDL_Surface *surface); | |
322 /* static int QZ_FlipHWSurface (_THIS, SDL_Surface *surface); */ | |
323 | |
324 /* Gamma Functions */ | 163 /* Gamma Functions */ |
325 static int QZ_SetGamma (_THIS, float red, float green, float blue); | 164 int QZ_SetGamma (_THIS, float red, float green, float blue); |
326 static int QZ_GetGamma (_THIS, float *red, float *green, float *blue); | 165 int QZ_GetGamma (_THIS, float *red, float *green, float *blue); |
327 static int QZ_SetGammaRamp (_THIS, Uint16 *ramp); | 166 int QZ_SetGammaRamp (_THIS, Uint16 *ramp); |
328 static int QZ_GetGammaRamp (_THIS, Uint16 *ramp); | 167 int QZ_GetGammaRamp (_THIS, Uint16 *ramp); |
329 | 168 |
330 /* OpenGL functions */ | 169 /* OpenGL functions */ |
331 static int QZ_SetupOpenGL (_THIS, int bpp, Uint32 flags); | 170 int QZ_SetupOpenGL (_THIS, int bpp, Uint32 flags); |
332 static void QZ_TearDownOpenGL (_THIS); | 171 void QZ_TearDownOpenGL (_THIS); |
333 static void* QZ_GL_GetProcAddress (_THIS, const char *proc); | 172 void* QZ_GL_GetProcAddress (_THIS, const char *proc); |
334 static int QZ_GL_GetAttribute (_THIS, SDL_GLattr attrib, int* value); | 173 int QZ_GL_GetAttribute (_THIS, SDL_GLattr attrib, int* value); |
335 static int QZ_GL_MakeCurrent (_THIS); | 174 int QZ_GL_MakeCurrent (_THIS); |
336 static void QZ_GL_SwapBuffers (_THIS); | 175 void QZ_GL_SwapBuffers (_THIS); |
337 static int QZ_GL_LoadLibrary (_THIS, const char *location); | 176 int QZ_GL_LoadLibrary (_THIS, const char *location); |
338 | |
339 /* Private function to warp the cursor (used internally) */ | |
340 static void QZ_PrivateWarpCursor (_THIS, int x, int y); | |
341 | 177 |
342 /* Cursor and Mouse functions */ | 178 /* Cursor and Mouse functions */ |
343 static void QZ_FreeWMCursor (_THIS, WMcursor *cursor); | 179 void QZ_FreeWMCursor (_THIS, WMcursor *cursor); |
344 static WMcursor* QZ_CreateWMCursor (_THIS, Uint8 *data, Uint8 *mask, | 180 WMcursor* QZ_CreateWMCursor (_THIS, Uint8 *data, Uint8 *mask, |
345 int w, int h, int hot_x, int hot_y); | 181 int w, int h, int hot_x, int hot_y); |
346 static int QZ_ShowWMCursor (_THIS, WMcursor *cursor); | 182 int QZ_ShowWMCursor (_THIS, WMcursor *cursor); |
347 static void QZ_WarpWMCursor (_THIS, Uint16 x, Uint16 y); | 183 void QZ_WarpWMCursor (_THIS, Uint16 x, Uint16 y); |
348 static void QZ_MoveWMCursor (_THIS, int x, int y); | 184 void QZ_MoveWMCursor (_THIS, int x, int y); |
349 static void QZ_CheckMouseMode (_THIS); | 185 void QZ_CheckMouseMode (_THIS); |
350 | 186 |
351 /* Event functions */ | 187 /* Event functions */ |
352 static void QZ_InitOSKeymap (_THIS); | 188 void QZ_InitOSKeymap (_THIS); |
353 static void QZ_PumpEvents (_THIS); | 189 void QZ_PumpEvents (_THIS); |
354 | 190 |
355 /* Window Manager functions */ | 191 /* Window Manager functions */ |
356 static void QZ_SetCaption (_THIS, const char *title, const char *icon); | 192 void QZ_SetCaption (_THIS, const char *title, const char *icon); |
357 static void QZ_SetIcon (_THIS, SDL_Surface *icon, Uint8 *mask); | 193 void QZ_SetIcon (_THIS, SDL_Surface *icon, Uint8 *mask); |
358 static int QZ_IconifyWindow (_THIS); | 194 int QZ_IconifyWindow (_THIS); |
359 static SDL_GrabMode QZ_GrabInput (_THIS, SDL_GrabMode grab_mode); | 195 SDL_GrabMode QZ_GrabInput (_THIS, SDL_GrabMode grab_mode); |
360 /*static int QZ_GetWMInfo (_THIS, SDL_SysWMinfo *info);*/ | 196 /*int QZ_GetWMInfo (_THIS, SDL_SysWMinfo *info);*/ |
361 | 197 |
362 /* YUV functions */ | 198 /* YUV functions */ |
363 static SDL_Overlay* QZ_CreateYUVOverlay (_THIS, int width, int height, | 199 SDL_Overlay* QZ_CreateYUVOverlay (_THIS, int width, int height, |
364 Uint32 format, SDL_Surface *display); | 200 Uint32 format, SDL_Surface *display); |
201 | |
202 | |
203 /* Private functions (used internally) */ | |
204 void QZ_PrivateWarpCursor (_THIS, int x, int y); | |
205 void QZ_ChangeGrabState (_THIS, int action); | |
206 void QZ_RegisterForSleepNotifications (_THIS); | |
207 void QZ_ShowMouse (_THIS); | |
208 void QZ_HideMouse (_THIS); | |
209 void QZ_PrivateGlobalToLocal (_THIS, NSPoint *p); | |
210 void QZ_PrivateCocoaToSDL (_THIS, NSPoint *p); | |
211 |