Mercurial > sdl-ios-xcode
annotate src/video/wincommon/SDL_wingl_c.h @ 934:af585d6efec8
Date: Thu, 17 Jun 2004 11:38:51 -0700 (PDT)
From: Eric Wing <ewing2121@yahoo.com>
Subject: New OS X patch (was Re: [SDL] Bug with inverted mouse coordinates in
I have a new patch for OS X I would like to submit.
First, it appears no further action has been taken on
my fix from Apple on the OpenGL windowed mode mouse
inversion problem. The fix would reunify the code, and
no longer require case checking for which version of
the OS you are running. This is probably a good fix
because the behavior with the old code could change
again with future versions of the OS, so those fixes
are included in this new patch.
But in addition, when I was at Apple, I asked them
about the ability to distinguish between the modifier
keys on the left and right sides of the keyboard (e.g.
Left Shift, Right Shift, Left/Right Alt, L/R Cmd, L/R
Ctrl). They told me that starting with Panther, the OS
began supporting this feature. This has always been a
source of annoyance for me when bringing a program
that comes from Windows or Linux to OS X when the
keybindings happened to need distinguishable left-side
and right-side keys. So the rest of the patch I am
submitting contains new code to support this feature
on Panther (and presumably later versions of the OS).
So after removing the OS version checks for the mouse
inversion problem, I reused the OS version checks to
activate the Left/Right detection of modifier keys. If
you are running Panther (or above), the new code will
attempt to distinguish between sides. For the older
OS's, the code path reverts to the original code.
I've tested with Panther on a G4 Cube, G5 dual
processor, and Powerbook Rev C. The Cube and G5
keyboards demonstrated the ability to distinguish
between sides. The Powerbook seems to only have
left-side keys, but the patch was still able to handle
it by producing the same results as before the patch.
I also wanted to test a non-Apple keyboard.
Unfortunately, I don't have any PC USB keyboards.
However, I was able to borrow a Sun Microsystems USB
keyboard, so I tried that out on the G5, and I got the
correct behavior for left and right sides. I'm
expecting that if it worked with a Sun keyboard, most
other keyboards should work with no problems.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 20 Aug 2004 22:35:23 +0000 |
parents | b8d311d90021 |
children | c9b51268668f |
rev | line source |
---|---|
0 | 1 /* |
2 SDL - Simple DirectMedia Layer | |
769
b8d311d90021
Updated copyright information for 2004 (Happy New Year!)
Sam Lantinga <slouken@libsdl.org>
parents:
655
diff
changeset
|
3 Copyright (C) 1997-2004 Sam Lantinga |
0 | 4 |
5 This library is free software; you can redistribute it and/or | |
6 modify it under the terms of the GNU Library General Public | |
7 License as published by the Free Software Foundation; either | |
8 version 2 of the License, or (at your option) any later version. | |
9 | |
10 This library is distributed in the hope that it will be useful, | |
11 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 Library General Public License for more details. | |
14 | |
15 You should have received a copy of the GNU Library General Public | |
16 License along with this library; if not, write to the Free | |
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | |
19 Sam Lantinga | |
252
e8157fcb3114
Updated the source with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents:
0
diff
changeset
|
20 slouken@libsdl.org |
0 | 21 */ |
22 | |
23 #ifdef SAVE_RCSID | |
24 static char rcsid = | |
25 "@(#) $Id$"; | |
26 #endif | |
27 | |
28 /* WGL implementation of SDL OpenGL support */ | |
29 | |
30 #include "SDL_sysvideo.h" | |
31 | |
32 | |
33 struct SDL_PrivateGLData { | |
34 int gl_active; /* to stop switching drivers while we have a valid context */ | |
35 | |
36 #ifdef HAVE_OPENGL | |
37 PIXELFORMATDESCRIPTOR GL_pfd; | |
38 HDC GL_hdc; | |
39 HGLRC GL_hrc; | |
655
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
40 int pixel_format; |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
41 int wgl_arb_pixel_format; |
0 | 42 |
43 void * (WINAPI *wglGetProcAddress)(const char *proc); | |
44 | |
45 HGLRC (WINAPI *wglCreateContext)(HDC hdc); | |
46 | |
47 BOOL (WINAPI *wglDeleteContext)(HGLRC hglrc); | |
48 | |
49 BOOL (WINAPI *wglMakeCurrent)(HDC hdc, HGLRC hglrc); | |
655
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
50 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
51 BOOL (WINAPI *wglChoosePixelFormatARB)(HDC hdc, const int *piAttribIList, |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
52 const FLOAT *pfAttribFList, |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
53 UINT nMaxFormats, int *piFormats, |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
54 UINT *nNumFormats); |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
55 BOOL (WINAPI *wglGetPixelFormatAttribivARB)(HDC hdc, int iPixelFormat, |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
56 int iLayerPlane, |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
57 UINT nAttributes, |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
58 const int *piAttributes, |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
59 int *piValues); |
0 | 60 #endif /* HAVE_OPENGL */ |
61 }; | |
62 | |
63 /* Old variable names */ | |
64 #define gl_active (this->gl_data->gl_active) | |
65 #define GL_pfd (this->gl_data->GL_pfd) | |
66 #define GL_hdc (this->gl_data->GL_hdc) | |
67 #define GL_hrc (this->gl_data->GL_hrc) | |
655
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
68 #define pixel_format (this->gl_data->pixel_format) |
0 | 69 |
70 /* OpenGL functions */ | |
71 extern int WIN_GL_SetupWindow(_THIS); | |
72 extern void WIN_GL_ShutDown(_THIS); | |
73 #ifdef HAVE_OPENGL | |
74 extern int WIN_GL_MakeCurrent(_THIS); | |
75 extern int WIN_GL_GetAttribute(_THIS, SDL_GLattr attrib, int* value); | |
76 extern void WIN_GL_SwapBuffers(_THIS); | |
77 extern void WIN_GL_UnloadLibrary(_THIS); | |
78 extern int WIN_GL_LoadLibrary(_THIS, const char* path); | |
79 extern void *WIN_GL_GetProcAddress(_THIS, const char* proc); | |
80 #endif | |
81 | |
655
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
82 #ifdef HAVE_OPENGL |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
83 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
84 #ifndef WGL_ARB_pixel_format |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
85 #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
86 #define WGL_DRAW_TO_WINDOW_ARB 0x2001 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
87 #define WGL_DRAW_TO_BITMAP_ARB 0x2002 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
88 #define WGL_ACCELERATION_ARB 0x2003 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
89 #define WGL_NEED_PALETTE_ARB 0x2004 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
90 #define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
91 #define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
92 #define WGL_SWAP_METHOD_ARB 0x2007 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
93 #define WGL_NUMBER_OVERLAYS_ARB 0x2008 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
94 #define WGL_NUMBER_UNDERLAYS_ARB 0x2009 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
95 #define WGL_TRANSPARENT_ARB 0x200A |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
96 #define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
97 #define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
98 #define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
99 #define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
100 #define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
101 #define WGL_SHARE_DEPTH_ARB 0x200C |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
102 #define WGL_SHARE_STENCIL_ARB 0x200D |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
103 #define WGL_SHARE_ACCUM_ARB 0x200E |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
104 #define WGL_SUPPORT_GDI_ARB 0x200F |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
105 #define WGL_SUPPORT_OPENGL_ARB 0x2010 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
106 #define WGL_DOUBLE_BUFFER_ARB 0x2011 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
107 #define WGL_STEREO_ARB 0x2012 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
108 #define WGL_PIXEL_TYPE_ARB 0x2013 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
109 #define WGL_COLOR_BITS_ARB 0x2014 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
110 #define WGL_RED_BITS_ARB 0x2015 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
111 #define WGL_RED_SHIFT_ARB 0x2016 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
112 #define WGL_GREEN_BITS_ARB 0x2017 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
113 #define WGL_GREEN_SHIFT_ARB 0x2018 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
114 #define WGL_BLUE_BITS_ARB 0x2019 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
115 #define WGL_BLUE_SHIFT_ARB 0x201A |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
116 #define WGL_ALPHA_BITS_ARB 0x201B |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
117 #define WGL_ALPHA_SHIFT_ARB 0x201C |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
118 #define WGL_ACCUM_BITS_ARB 0x201D |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
119 #define WGL_ACCUM_RED_BITS_ARB 0x201E |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
120 #define WGL_ACCUM_GREEN_BITS_ARB 0x201F |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
121 #define WGL_ACCUM_BLUE_BITS_ARB 0x2020 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
122 #define WGL_ACCUM_ALPHA_BITS_ARB 0x2021 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
123 #define WGL_DEPTH_BITS_ARB 0x2022 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
124 #define WGL_STENCIL_BITS_ARB 0x2023 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
125 #define WGL_AUX_BUFFERS_ARB 0x2024 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
126 #define WGL_NO_ACCELERATION_ARB 0x2025 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
127 #define WGL_GENERIC_ACCELERATION_ARB 0x2026 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
128 #define WGL_FULL_ACCELERATION_ARB 0x2027 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
129 #define WGL_SWAP_EXCHANGE_ARB 0x2028 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
130 #define WGL_SWAP_COPY_ARB 0x2029 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
131 #define WGL_SWAP_UNDEFINED_ARB 0x202A |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
132 #define WGL_TYPE_RGBA_ARB 0x202B |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
133 #define WGL_TYPE_COLORINDEX_ARB 0x202C |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
134 #endif |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
135 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
136 #ifndef WGL_ARB_multisample |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
137 #define WGL_SAMPLE_BUFFERS_ARB 0x2041 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
138 #define WGL_SAMPLES_ARB 0x2042 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
139 #endif |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
140 |
9c42ee1b7d77
Date: Thu, 24 Apr 2003 15:13:47 -0400
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
141 #endif |