Mercurial > sdl-ios-xcode
annotate src/video/SDL_video.c @ 2938:2929ed239d2a
Adjusted default choice of audio driver.
If a driver can definitely see available devices, it is chosen. Otherwise,
we'll take the first driver that initializes but saw no devices...this might
be because it can't enumerate them, or there really aren't any available.
This prevents the dsp driver from hogging control when there are no /dev/dsp*
nodes (for example, on a Linux box with ALSA and no OSS emulation).
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Thu, 01 Jan 2009 07:54:58 +0000 |
parents | 1fcc36adc73d |
children | e4a469d6ddab |
rev | line source |
---|---|
0 | 1 /* |
2 SDL - Simple DirectMedia Layer | |
2859 | 3 Copyright (C) 1997-2009 Sam Lantinga |
0 | 4 |
5 This library is free software; you can redistribute it and/or | |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1296
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
0 | 7 License as published by the Free Software Foundation; either |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1296
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
0 | 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 | |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1296
diff
changeset
|
13 Lesser General Public License for more details. |
0 | 14 |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1296
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1296
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1296
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
0 | 18 |
19 Sam Lantinga | |
252
e8157fcb3114
Updated the source with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents:
229
diff
changeset
|
20 slouken@libsdl.org |
0 | 21 */ |
1402
d910939febfa
Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents:
1385
diff
changeset
|
22 #include "SDL_config.h" |
0 | 23 |
24 /* The high-level video driver subsystem */ | |
25 | |
26 #include "SDL.h" | |
27 #include "SDL_sysvideo.h" | |
28 #include "SDL_blit.h" | |
29 #include "SDL_pixels_c.h" | |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
1913
diff
changeset
|
30 #include "SDL_renderer_gl.h" |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
31 #include "SDL_renderer_gles.h" |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
32 #include "SDL_renderer_sw.h" |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
33 #include "../events/SDL_sysevents.h" |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
34 #include "../events/SDL_events_c.h" |
0 | 35 |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
36 #if SDL_VIDEO_OPENGL_ES |
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
37 #include "SDL_opengles.h" |
2753 | 38 #endif /* SDL_VIDEO_OPENGL_ES */ |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
39 |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
40 #if SDL_VIDEO_OPENGL |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
41 #include "SDL_opengl.h" |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
42 |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
43 /* On Windows, windows.h defines CreateWindow */ |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
44 #ifdef CreateWindow |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
45 #undef CreateWindow |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
46 #endif |
2753 | 47 #endif /* SDL_VIDEO_OPENGL */ |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
48 |
0 | 49 /* Available video drivers */ |
50 static VideoBootStrap *bootstrap[] = { | |
1931
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
1930
diff
changeset
|
51 #if SDL_VIDEO_DRIVER_COCOA |
2753 | 52 &COCOA_bootstrap, |
1133
609c060fd2a2
The MacOSX Carbon/Cocoa/X11 all in one library patch. Relevant emails:
Ryan C. Gordon <icculus@icculus.org>
parents:
1076
diff
changeset
|
53 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
54 #if SDL_VIDEO_DRIVER_X11 |
2753 | 55 &X11_bootstrap, |
0 | 56 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
57 #if SDL_VIDEO_DRIVER_NANOX |
2753 | 58 &NX_bootstrap, |
30
57bf11a5efd7
Added initial support for Nano-X (thanks Hsieh-Fu!)
Sam Lantinga <slouken@lokigames.com>
parents:
19
diff
changeset
|
59 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
60 #if SDL_VIDEO_DRIVER_IPOD |
2753 | 61 &iPod_bootstrap, |
1140
af8b0f9ac2f4
iPod Linux framebuffer support.
Ryan C. Gordon <icculus@icculus.org>
parents:
1133
diff
changeset
|
62 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
63 #if SDL_VIDEO_DRIVER_WSCONS |
2753 | 64 &WSCONS_bootstrap, |
1187 | 65 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
66 #if SDL_VIDEO_DRIVER_FBCON |
2753 | 67 &FBCON_bootstrap, |
0 | 68 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
69 #if SDL_VIDEO_DRIVER_DIRECTFB |
2753 | 70 &DirectFB_bootstrap, |
167
cb384ef627f6
Added support for DirectFB video on Linux (thanks Denis!)
Sam Lantinga <slouken@libsdl.org>
parents:
125
diff
changeset
|
71 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
72 #if SDL_VIDEO_DRIVER_PS2GS |
2753 | 73 &PS2GS_bootstrap, |
0 | 74 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
75 #if SDL_VIDEO_DRIVER_VGL |
2753 | 76 &VGL_bootstrap, |
75
b0ae59d0f3ee
Added patches from FreeBSD ports
Sam Lantinga <slouken@lokigames.com>
parents:
58
diff
changeset
|
77 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
78 #if SDL_VIDEO_DRIVER_SVGALIB |
2753 | 79 &SVGALIB_bootstrap, |
0 | 80 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
81 #if SDL_VIDEO_DRIVER_GAPI |
2753 | 82 &GAPI_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
83 #endif |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
84 #if SDL_VIDEO_DRIVER_WIN32 |
2753 | 85 &WIN32_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
86 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
87 #if SDL_VIDEO_DRIVER_BWINDOW |
2753 | 88 &BWINDOW_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
89 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
90 #if SDL_VIDEO_DRIVER_PHOTON |
2753 | 91 &ph_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
92 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
93 #if SDL_VIDEO_DRIVER_EPOC |
2753 | 94 &EPOC_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
95 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
96 #if SDL_VIDEO_DRIVER_XBIOS |
2753 | 97 &XBIOS_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
98 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
99 #if SDL_VIDEO_DRIVER_GEM |
2753 | 100 &GEM_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
101 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
102 #if SDL_VIDEO_DRIVER_DC |
2753 | 103 &DC_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
104 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
105 #if SDL_VIDEO_DRIVER_RISCOS |
2753 | 106 &RISCOS_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
107 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
108 #if SDL_VIDEO_DRIVER_OS2FS |
2753 | 109 &OS2FSLib_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
110 #endif |
2743
453ec0c21f6f
Rolling back changes to revision 4071 ... made some mistakes, will try merging work again.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2740
diff
changeset
|
111 #if SDL_VIDEO_DRIVER_NDS |
2753 | 112 &NDS_bootstrap, |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2702
diff
changeset
|
113 #endif |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
114 #if SDL_VIDEO_DRIVER_UIKIT |
2753 | 115 &UIKIT_bootstrap, |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
116 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
117 #if SDL_VIDEO_DRIVER_DUMMY |
2753 | 118 &DUMMY_bootstrap, |
610
95433459fbd2
Date: Mon, 14 Apr 2003 22:08:27 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
580
diff
changeset
|
119 #endif |
2753 | 120 NULL |
0 | 121 }; |
173
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
167
diff
changeset
|
122 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
123 static SDL_VideoDevice *_this = NULL; |
0 | 124 |
125 /* Various local functions */ | |
2876 | 126 static void SDL_UpdateWindowGrab(SDL_Window * window); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
127 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
128 static int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
129 cmpmodes(const void *A, const void *B) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
130 { |
2753 | 131 SDL_DisplayMode a = *(const SDL_DisplayMode *) A; |
132 SDL_DisplayMode b = *(const SDL_DisplayMode *) B; | |
0 | 133 |
2753 | 134 if (a.w != b.w) { |
135 return b.w - a.w; | |
136 } | |
137 if (a.h != b.h) { | |
138 return b.h - a.h; | |
139 } | |
140 if (SDL_BITSPERPIXEL(a.format) != SDL_BITSPERPIXEL(b.format)) { | |
141 return SDL_BITSPERPIXEL(b.format) - SDL_BITSPERPIXEL(a.format); | |
142 } | |
143 if (a.refresh_rate != b.refresh_rate) { | |
144 return b.refresh_rate - a.refresh_rate; | |
145 } | |
146 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
147 } |
0 | 148 |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
149 static void |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
150 SDL_UninitializedVideo() |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
151 { |
2753 | 152 SDL_SetError("Video subsystem has not been initialized"); |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
153 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
154 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
155 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
156 SDL_GetNumVideoDrivers(void) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
157 { |
2753 | 158 return SDL_arraysize(bootstrap) - 1; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
159 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
160 |
2753 | 161 const char * |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
162 SDL_GetVideoDriver(int index) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
163 { |
2753 | 164 if (index >= 0 && index < SDL_GetNumVideoDrivers()) { |
165 return bootstrap[index]->name; | |
166 } | |
167 return NULL; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
168 } |
0 | 169 |
170 /* | |
171 * Initialize the video and event subsystems -- determine native pixel format | |
172 */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
173 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
174 SDL_VideoInit(const char *driver_name, Uint32 flags) |
0 | 175 { |
2753 | 176 SDL_VideoDevice *video; |
177 int index; | |
178 int i; | |
0 | 179 |
2753 | 180 /* Toggle the event thread flags, based on OS requirements */ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
181 #if defined(MUST_THREAD_EVENTS) |
2753 | 182 flags |= SDL_INIT_EVENTTHREAD; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
183 #elif defined(CANT_THREAD_EVENTS) |
2753 | 184 if ((flags & SDL_INIT_EVENTTHREAD) == SDL_INIT_EVENTTHREAD) { |
185 SDL_SetError("OS doesn't support threaded events"); | |
186 return -1; | |
187 } | |
1190 | 188 #endif |
229
4d24d5a660a8
Fix a crash if an OpenGL video mode can't be set.
Sam Lantinga <slouken@libsdl.org>
parents:
216
diff
changeset
|
189 |
2753 | 190 /* Start the event loop */ |
191 if (SDL_StartEventLoop(flags) < 0) { | |
192 return -1; | |
193 } | |
194 /* Check to make sure we don't overwrite '_this' */ | |
195 if (_this != NULL) { | |
196 SDL_VideoQuit(); | |
197 } | |
198 /* Select the proper video driver */ | |
199 index = 0; | |
200 video = NULL; | |
201 if (driver_name == NULL) { | |
202 driver_name = SDL_getenv("SDL_VIDEODRIVER"); | |
203 } | |
204 if (driver_name != NULL) { | |
205 for (i = 0; bootstrap[i]; ++i) { | |
206 if (SDL_strcasecmp(bootstrap[i]->name, driver_name) == 0) { | |
207 if (bootstrap[i]->available()) { | |
208 video = bootstrap[i]->create(index); | |
209 } | |
210 break; | |
211 } | |
212 } | |
213 } else { | |
214 for (i = 0; bootstrap[i]; ++i) { | |
215 if (bootstrap[i]->available()) { | |
216 video = bootstrap[i]->create(index); | |
217 if (video != NULL) { | |
218 break; | |
219 } | |
220 } | |
221 } | |
222 } | |
223 if (video == NULL) { | |
224 if (driver_name) { | |
225 SDL_SetError("%s not available", driver_name); | |
226 } else { | |
227 SDL_SetError("No available video device"); | |
228 } | |
229 return -1; | |
230 } | |
231 _this = video; | |
232 _this->name = bootstrap[i]->name; | |
233 _this->next_object_id = 1; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
234 |
0 | 235 |
2753 | 236 /* Set some very sane GL defaults */ |
237 _this->gl_config.driver_loaded = 0; | |
238 _this->gl_config.dll_handle = NULL; | |
239 _this->gl_config.red_size = 3; | |
240 _this->gl_config.green_size = 3; | |
241 _this->gl_config.blue_size = 2; | |
242 _this->gl_config.alpha_size = 0; | |
243 _this->gl_config.buffer_size = 0; | |
244 _this->gl_config.depth_size = 16; | |
245 _this->gl_config.stencil_size = 0; | |
246 _this->gl_config.double_buffer = 1; | |
247 _this->gl_config.accum_red_size = 0; | |
248 _this->gl_config.accum_green_size = 0; | |
249 _this->gl_config.accum_blue_size = 0; | |
250 _this->gl_config.accum_alpha_size = 0; | |
251 _this->gl_config.stereo = 0; | |
252 _this->gl_config.multisamplebuffers = 0; | |
253 _this->gl_config.multisamplesamples = 0; | |
254 _this->gl_config.retained_backing = 1; | |
255 _this->gl_config.accelerated = -1; /* not known, don't set */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
256 |
2753 | 257 /* Initialize the video subsystem */ |
258 if (_this->VideoInit(_this) < 0) { | |
259 SDL_VideoQuit(); | |
260 return -1; | |
261 } | |
262 /* Make sure some displays were added */ | |
263 if (_this->num_displays == 0) { | |
264 SDL_SetError("The video driver did not add any displays"); | |
265 SDL_VideoQuit(); | |
266 return (-1); | |
267 } | |
268 /* The software renderer is always available */ | |
269 for (i = 0; i < _this->num_displays; ++i) { | |
2744
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
270 #if SDL_VIDEO_RENDER_OGL |
2753 | 271 SDL_AddRenderDriver(i, &GL_RenderDriver); |
2744
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
272 #endif |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
273 |
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
274 #if SDL_VIDEO_RENDER_OGL_ES |
2753 | 275 SDL_AddRenderDriver(i, &GL_ES_RenderDriver); |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
276 #endif |
2753 | 277 if (_this->displays[i].num_render_drivers > 0) { |
278 SDL_AddRenderDriver(i, &SW_RenderDriver); | |
279 } | |
280 } | |
0 | 281 |
2753 | 282 /* We're ready to go! */ |
283 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
284 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
285 |
2753 | 286 const char * |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
287 SDL_GetCurrentVideoDriver() |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
288 { |
2753 | 289 if (!_this) { |
290 SDL_UninitializedVideo(); | |
291 return NULL; | |
292 } | |
293 return _this->name; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
294 } |
0 | 295 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
296 SDL_VideoDevice * |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
297 SDL_GetVideoDevice() |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
298 { |
2753 | 299 return _this; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
300 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
301 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
302 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
303 SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
304 { |
2753 | 305 SDL_VideoDisplay display; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
306 |
2753 | 307 SDL_zero(display); |
308 if (desktop_mode) { | |
309 display.desktop_mode = *desktop_mode; | |
310 } | |
311 display.current_mode = display.desktop_mode; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
312 |
2753 | 313 return SDL_AddVideoDisplay(&display); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
314 } |
0 | 315 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
316 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
317 SDL_AddVideoDisplay(const SDL_VideoDisplay * display) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
318 { |
2753 | 319 SDL_VideoDisplay *displays; |
320 int index = -1; | |
0 | 321 |
2753 | 322 displays = |
323 SDL_realloc(_this->displays, | |
324 (_this->num_displays + 1) * sizeof(*displays)); | |
325 if (displays) { | |
326 index = _this->num_displays++; | |
327 displays[index] = *display; | |
328 displays[index].device = _this; | |
329 _this->displays = displays; | |
330 } else { | |
331 SDL_OutOfMemory(); | |
332 } | |
333 return index; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
334 } |
0 | 335 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
336 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
337 SDL_GetNumVideoDisplays(void) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
338 { |
2753 | 339 if (!_this) { |
340 SDL_UninitializedVideo(); | |
341 return 0; | |
342 } | |
343 return _this->num_displays; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
344 } |
0 | 345 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
346 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
347 SDL_SelectVideoDisplay(int index) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
348 { |
2753 | 349 if (!_this) { |
350 SDL_UninitializedVideo(); | |
351 return (-1); | |
352 } | |
353 if (index < 0 || index >= _this->num_displays) { | |
354 SDL_SetError("index must be in the range 0 - %d", | |
355 _this->num_displays - 1); | |
356 return -1; | |
357 } | |
358 _this->current_display = index; | |
359 return 0; | |
1963
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
360 } |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
361 |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
362 int |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
363 SDL_GetCurrentVideoDisplay(void) |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
364 { |
2753 | 365 if (!_this) { |
366 SDL_UninitializedVideo(); | |
367 return (-1); | |
368 } | |
369 return _this->current_display; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
370 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
371 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
372 SDL_bool |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
373 SDL_AddDisplayMode(int displayIndex, const SDL_DisplayMode * mode) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
374 { |
2753 | 375 SDL_VideoDisplay *display = &_this->displays[displayIndex]; |
376 SDL_DisplayMode *modes; | |
377 int i, nmodes; | |
910
4ab6d1fd028f
Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
883
diff
changeset
|
378 |
2753 | 379 /* Make sure we don't already have the mode in the list */ |
380 modes = display->display_modes; | |
381 nmodes = display->num_display_modes; | |
382 for (i = nmodes; i--;) { | |
383 if (SDL_memcmp(mode, &modes[i], sizeof(*mode)) == 0) { | |
384 return SDL_FALSE; | |
385 } | |
386 } | |
910
4ab6d1fd028f
Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
883
diff
changeset
|
387 |
2753 | 388 /* Go ahead and add the new mode */ |
389 if (nmodes == display->max_display_modes) { | |
390 modes = | |
391 SDL_realloc(modes, | |
392 (display->max_display_modes + 32) * sizeof(*modes)); | |
393 if (!modes) { | |
394 return SDL_FALSE; | |
395 } | |
396 display->display_modes = modes; | |
397 display->max_display_modes += 32; | |
398 } | |
399 modes[nmodes] = *mode; | |
400 display->num_display_modes++; | |
650
fe445b59d307
We need to lookup the address of glGetString before calling GL_MakeCurrent(),
Ryan C. Gordon <icculus@icculus.org>
parents:
630
diff
changeset
|
401 |
2753 | 402 return SDL_TRUE; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
403 } |
0 | 404 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
405 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
406 SDL_GetNumDisplayModes() |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
407 { |
2753 | 408 if (_this) { |
409 SDL_VideoDisplay *display = &SDL_CurrentDisplay; | |
410 if (!display->num_display_modes && _this->GetDisplayModes) { | |
411 _this->GetDisplayModes(_this); | |
412 SDL_qsort(display->display_modes, display->num_display_modes, | |
413 sizeof(SDL_DisplayMode), cmpmodes); | |
414 } | |
415 return display->num_display_modes; | |
416 } | |
417 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
418 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
419 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
420 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
421 SDL_GetDisplayMode(int index, SDL_DisplayMode * mode) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
422 { |
2753 | 423 if (index < 0 || index >= SDL_GetNumDisplayModes()) { |
424 SDL_SetError("index must be in the range of 0 - %d", | |
425 SDL_GetNumDisplayModes() - 1); | |
426 return -1; | |
427 } | |
428 if (mode) { | |
429 *mode = SDL_CurrentDisplay.display_modes[index]; | |
430 } | |
431 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
432 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
433 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
434 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
435 SDL_GetDesktopDisplayMode(SDL_DisplayMode * mode) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
436 { |
2753 | 437 if (!_this) { |
438 SDL_UninitializedVideo(); | |
439 return -1; | |
440 } | |
441 if (mode) { | |
442 *mode = SDL_CurrentDisplay.desktop_mode; | |
443 } | |
444 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
445 } |
0 | 446 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
447 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
448 SDL_GetCurrentDisplayMode(SDL_DisplayMode * mode) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
449 { |
2753 | 450 if (!_this) { |
451 SDL_UninitializedVideo(); | |
452 return -1; | |
453 } | |
454 if (mode) { | |
455 *mode = SDL_CurrentDisplay.current_mode; | |
456 } | |
457 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
458 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
459 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
460 SDL_DisplayMode * |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
461 SDL_GetClosestDisplayMode(const SDL_DisplayMode * mode, |
2753 | 462 SDL_DisplayMode * closest) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
463 { |
2753 | 464 Uint32 target_format; |
465 int target_refresh_rate; | |
466 int i; | |
467 SDL_DisplayMode *current, *match; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
468 |
2753 | 469 if (!_this || !mode || !closest) { |
470 return NULL; | |
471 } | |
472 /* Default to the desktop format */ | |
473 if (mode->format) { | |
474 target_format = mode->format; | |
475 } else { | |
476 target_format = SDL_CurrentDisplay.desktop_mode.format; | |
477 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
478 |
2753 | 479 /* Default to the desktop refresh rate */ |
480 if (mode->refresh_rate) { | |
481 target_refresh_rate = mode->refresh_rate; | |
482 } else { | |
483 target_refresh_rate = SDL_CurrentDisplay.desktop_mode.refresh_rate; | |
484 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
485 |
2753 | 486 match = NULL; |
487 for (i = 0; i < SDL_GetNumDisplayModes(); ++i) { | |
488 current = &SDL_CurrentDisplay.display_modes[i]; | |
0 | 489 |
2789
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
490 if (current->w && (current->w < mode->w)) { |
2753 | 491 /* Out of sorted modes large enough here */ |
492 break; | |
493 } | |
2789
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
494 if (current->h && (current->h < mode->h)) { |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
495 if (current->w && (current->w == mode->w)) { |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
496 /* Out of sorted modes large enough here */ |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
497 break; |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
498 } |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
499 /* Wider, but not tall enough, due to a different |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
500 aspect ratio. This mode must be skipped, but closer |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
501 modes may still follow. */ |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
502 continue; |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
503 } |
2753 | 504 if (!match || current->w < match->w || current->h < match->h) { |
505 match = current; | |
506 continue; | |
507 } | |
508 if (current->format != match->format) { | |
509 /* Sorted highest depth to lowest */ | |
510 if (current->format == target_format || | |
511 (SDL_BITSPERPIXEL(current->format) >= | |
512 SDL_BITSPERPIXEL(target_format) | |
513 && SDL_PIXELTYPE(current->format) == | |
514 SDL_PIXELTYPE(target_format))) { | |
515 match = current; | |
516 } | |
517 continue; | |
518 } | |
519 if (current->refresh_rate != match->refresh_rate) { | |
520 /* Sorted highest refresh to lowest */ | |
521 if (current->refresh_rate >= target_refresh_rate) { | |
522 match = current; | |
523 } | |
524 } | |
525 } | |
526 if (match) { | |
527 if (match->format) { | |
528 closest->format = match->format; | |
529 } else { | |
530 closest->format = mode->format; | |
531 } | |
532 if (match->w && match->h) { | |
533 closest->w = match->w; | |
534 closest->h = match->h; | |
535 } else { | |
536 closest->w = mode->w; | |
537 closest->h = mode->h; | |
538 } | |
539 if (match->refresh_rate) { | |
540 closest->refresh_rate = match->refresh_rate; | |
541 } else { | |
542 closest->refresh_rate = mode->refresh_rate; | |
543 } | |
544 closest->driverdata = match->driverdata; | |
0 | 545 |
2753 | 546 /* |
547 * Pick some reasonable defaults if the app and driver don't | |
548 * care | |
549 */ | |
550 if (!closest->format) { | |
551 closest->format = SDL_PIXELFORMAT_RGB888; | |
552 } | |
553 if (!closest->w) { | |
554 closest->w = 640; | |
555 } | |
556 if (!closest->h) { | |
557 closest->h = 480; | |
558 } | |
559 return closest; | |
560 } | |
561 return NULL; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
562 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
563 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
564 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
565 SDL_SetDisplayMode(const SDL_DisplayMode * mode) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
566 { |
2753 | 567 SDL_VideoDisplay *display; |
568 SDL_DisplayMode display_mode; | |
569 SDL_DisplayMode current_mode; | |
570 int i, ncolors; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
571 |
2753 | 572 if (!_this) { |
573 SDL_UninitializedVideo(); | |
574 return -1; | |
575 } | |
576 display = &SDL_CurrentDisplay; | |
577 if (!mode) { | |
578 mode = &display->desktop_mode; | |
579 } | |
580 display_mode = *mode; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
581 |
2753 | 582 /* Default to the current mode */ |
583 if (!display_mode.format) { | |
584 display_mode.format = display->current_mode.format; | |
585 } | |
586 if (!display_mode.w) { | |
587 display_mode.w = display->current_mode.w; | |
588 } | |
589 if (!display_mode.h) { | |
590 display_mode.h = display->current_mode.h; | |
591 } | |
592 if (!display_mode.refresh_rate) { | |
593 display_mode.refresh_rate = display->current_mode.refresh_rate; | |
594 } | |
595 /* Get a good video mode, the closest one possible */ | |
596 if (!SDL_GetClosestDisplayMode(&display_mode, &display_mode)) { | |
597 SDL_SetError("No video mode large enough for %dx%d", | |
598 display_mode.w, display_mode.h); | |
599 return -1; | |
600 } | |
601 /* See if there's anything left to do */ | |
602 SDL_GetCurrentDisplayMode(¤t_mode); | |
603 if (SDL_memcmp(&display_mode, ¤t_mode, sizeof(display_mode)) == 0) { | |
604 return 0; | |
605 } | |
606 /* Actually change the display mode */ | |
607 if (_this->SetDisplayMode(_this, &display_mode) < 0) { | |
608 return -1; | |
609 } | |
610 display->current_mode = display_mode; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
611 |
2753 | 612 /* Set up a palette, if necessary */ |
613 if (SDL_ISPIXELFORMAT_INDEXED(display_mode.format)) { | |
614 ncolors = (1 << SDL_BITSPERPIXEL(display_mode.format)); | |
615 } else { | |
616 ncolors = 0; | |
617 } | |
618 if ((!ncolors && display->palette) || (ncolors && !display->palette) | |
619 || (ncolors && ncolors != display->palette->ncolors)) { | |
620 if (display->palette) { | |
621 SDL_FreePalette(display->palette); | |
622 display->palette = NULL; | |
623 } | |
624 if (ncolors) { | |
625 display->palette = SDL_AllocPalette(ncolors); | |
626 if (!display->palette) { | |
627 return -1; | |
628 } | |
629 SDL_DitherColors(display->palette->colors, | |
630 SDL_BITSPERPIXEL(display_mode.format)); | |
631 } | |
632 } | |
633 /* Move any fullscreen windows into position */ | |
634 for (i = 0; i < display->num_windows; ++i) { | |
635 SDL_Window *window = &display->windows[i]; | |
636 if (FULLSCREEN_VISIBLE(window)) { | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
637 SDL_SetWindowPosition(window->id, window->x, window->y); |
2753 | 638 } |
639 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
640 |
2753 | 641 return 0; |
0 | 642 } |
643 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
644 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
645 SDL_SetFullscreenDisplayMode(const SDL_DisplayMode * mode) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
646 { |
2753 | 647 SDL_VideoDisplay *display; |
648 SDL_DisplayMode fullscreen_mode; | |
649 int i; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
650 |
2753 | 651 if (!_this) { |
652 SDL_UninitializedVideo(); | |
653 return -1; | |
654 } | |
655 display = &SDL_CurrentDisplay; | |
656 if (!mode) { | |
657 mode = &display->desktop_mode; | |
658 } | |
2869
2fe507a2ef7d
Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents:
2860
diff
changeset
|
659 if (!SDL_GetClosestDisplayMode(mode, &fullscreen_mode)) { |
2fe507a2ef7d
Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents:
2860
diff
changeset
|
660 SDL_SetError("Couldn't find display mode match"); |
2fe507a2ef7d
Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents:
2860
diff
changeset
|
661 return -1; |
2fe507a2ef7d
Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents:
2860
diff
changeset
|
662 } |
2753 | 663 if (SDL_memcmp |
664 (&fullscreen_mode, &display->fullscreen_mode, | |
665 sizeof(fullscreen_mode)) == 0) { | |
666 /* Nothing to do... */ | |
667 return 0; | |
668 } | |
669 display->fullscreen_mode = fullscreen_mode; | |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
670 |
2753 | 671 /* Actually set the mode if we have a fullscreen window visible */ |
672 for (i = 0; i < display->num_windows; ++i) { | |
673 SDL_Window *window = &display->windows[i]; | |
674 if (FULLSCREEN_VISIBLE(window)) { | |
675 if (SDL_SetDisplayMode(&display->fullscreen_mode) < 0) { | |
676 return -1; | |
677 } | |
678 } | |
679 if (window->flags & SDL_WINDOW_FULLSCREEN) { | |
680 SDL_OnWindowResized(window); | |
681 } | |
682 } | |
683 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
684 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
685 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
686 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
687 SDL_GetFullscreenDisplayMode(SDL_DisplayMode * mode) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
688 { |
2753 | 689 if (!_this) { |
690 SDL_UninitializedVideo(); | |
691 return -1; | |
692 } | |
693 if (mode) { | |
694 *mode = SDL_CurrentDisplay.fullscreen_mode; | |
695 } | |
696 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
697 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
698 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
699 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
700 SDL_SetDisplayPalette(const SDL_Color * colors, int firstcolor, int ncolors) |
0 | 701 { |
2753 | 702 SDL_Palette *palette; |
703 int status = 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
704 |
2753 | 705 if (!_this) { |
706 SDL_UninitializedVideo(); | |
707 return -1; | |
708 } | |
709 palette = SDL_CurrentDisplay.palette; | |
710 if (!palette) { | |
711 SDL_SetError("Display mode does not have a palette"); | |
712 return -1; | |
713 } | |
714 status = SDL_SetPaletteColors(palette, colors, firstcolor, ncolors); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
715 |
2753 | 716 if (_this->SetDisplayPalette) { |
717 if (_this->SetDisplayPalette(_this, palette) < 0) { | |
718 status = -1; | |
719 } | |
720 } | |
721 return status; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
722 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
723 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
724 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
725 SDL_GetDisplayPalette(SDL_Color * colors, int firstcolor, int ncolors) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
726 { |
2753 | 727 SDL_Palette *palette; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
728 |
2753 | 729 if (!_this) { |
730 SDL_UninitializedVideo(); | |
731 return -1; | |
732 } | |
733 palette = SDL_CurrentDisplay.palette; | |
734 if (!palette->ncolors) { | |
735 SDL_SetError("Display mode does not have a palette"); | |
736 return -1; | |
737 } | |
738 if (firstcolor < 0 || (firstcolor + ncolors) > palette->ncolors) { | |
739 SDL_SetError("Palette indices are out of range"); | |
740 return -1; | |
741 } | |
742 SDL_memcpy(colors, &palette->colors[firstcolor], | |
743 ncolors * sizeof(*colors)); | |
744 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
745 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
746 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
747 SDL_WindowID |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
748 SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
749 { |
2753 | 750 const Uint32 allowed_flags = (SDL_WINDOW_FULLSCREEN | |
751 SDL_WINDOW_OPENGL | | |
752 SDL_WINDOW_BORDERLESS | | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
753 SDL_WINDOW_RESIZABLE | |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
754 SDL_WINDOW_INPUT_GRABBED); |
2753 | 755 SDL_VideoDisplay *display; |
756 SDL_Window window; | |
757 int num_windows; | |
758 SDL_Window *windows; | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
759 |
2753 | 760 if (!_this) { |
761 SDL_UninitializedVideo(); | |
762 return 0; | |
763 } | |
764 if ((flags & SDL_WINDOW_OPENGL) && !_this->GL_CreateContext) { | |
765 SDL_SetError("No OpenGL support in video driver"); | |
766 return 0; | |
767 } | |
768 SDL_zero(window); | |
769 window.id = _this->next_object_id++; | |
770 window.x = x; | |
771 window.y = y; | |
772 window.w = w; | |
773 window.h = h; | |
774 window.flags = (flags & allowed_flags); | |
775 window.display = _this->current_display; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
776 |
2753 | 777 if (_this->CreateWindow && _this->CreateWindow(_this, &window) < 0) { |
778 return 0; | |
779 } | |
780 display = &SDL_CurrentDisplay; | |
781 num_windows = display->num_windows; | |
782 windows = | |
783 SDL_realloc(display->windows, (num_windows + 1) * sizeof(*windows)); | |
784 if (!windows) { | |
785 if (_this->DestroyWindow) { | |
786 _this->DestroyWindow(_this, &window); | |
787 } | |
788 return 0; | |
789 } | |
790 windows[num_windows] = window; | |
791 display->windows = windows; | |
792 display->num_windows++; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
793 |
2753 | 794 if (title) { |
795 SDL_SetWindowTitle(window.id, title); | |
796 } | |
797 if (flags & SDL_WINDOW_MAXIMIZED) { | |
798 SDL_MaximizeWindow(window.id); | |
799 } | |
800 if (flags & SDL_WINDOW_MINIMIZED) { | |
801 SDL_MinimizeWindow(window.id); | |
802 } | |
803 if (flags & SDL_WINDOW_SHOWN) { | |
804 SDL_ShowWindow(window.id); | |
805 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
806 SDL_UpdateWindowGrab(&window); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
807 |
2753 | 808 return window.id; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
809 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
810 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
811 SDL_WindowID |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
812 SDL_CreateWindowFrom(const void *data) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
813 { |
2753 | 814 SDL_VideoDisplay *display; |
815 SDL_Window window; | |
816 int num_windows; | |
817 SDL_Window *windows; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
818 |
2753 | 819 if (!_this) { |
820 SDL_UninitializedVideo(); | |
821 return (0); | |
822 } | |
823 SDL_zero(window); | |
824 window.id = _this->next_object_id++; | |
825 window.display = _this->current_display; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
826 |
2753 | 827 if (!_this->CreateWindowFrom || |
828 _this->CreateWindowFrom(_this, &window, data) < 0) { | |
829 return 0; | |
830 } | |
831 display = &SDL_CurrentDisplay; | |
832 num_windows = display->num_windows; | |
833 windows = | |
834 SDL_realloc(display->windows, (num_windows + 1) * sizeof(*windows)); | |
835 if (!windows) { | |
836 if (_this->DestroyWindow) { | |
837 _this->DestroyWindow(_this, &window); | |
838 } | |
839 if (window.title) { | |
840 SDL_free(window.title); | |
841 } | |
842 return 0; | |
843 } | |
844 windows[num_windows] = window; | |
845 display->windows = windows; | |
846 display->num_windows++; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
847 |
2753 | 848 return window.id; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
849 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
850 |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
851 int |
1928
861bc36f0ab3
Fixed crash with multiple windows
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
852 SDL_RecreateWindow(SDL_Window * window, Uint32 flags) |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
853 { |
2753 | 854 char *title = window->title; |
1956
ba0d62354872
Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
855 |
2753 | 856 if ((flags & SDL_WINDOW_OPENGL) && !_this->GL_CreateContext) { |
857 SDL_SetError("No OpenGL support in video driver"); | |
858 return -1; | |
859 } | |
860 if (_this->DestroyWindow) { | |
861 _this->DestroyWindow(_this, window); | |
862 } | |
863 window->title = NULL; | |
864 window->flags = | |
865 (flags & | |
866 ~(SDL_WINDOW_MAXIMIZED | SDL_WINDOW_MINIMIZED | SDL_WINDOW_SHOWN | | |
867 SDL_WINDOW_INPUT_GRABBED)); | |
1956
ba0d62354872
Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
868 |
2753 | 869 if (_this->CreateWindow && _this->CreateWindow(_this, window) < 0) { |
870 return -1; | |
871 } | |
872 if (title) { | |
873 SDL_SetWindowTitle(window->id, title); | |
874 SDL_free(title); | |
875 } | |
876 if (flags & SDL_WINDOW_MAXIMIZED) { | |
877 SDL_MaximizeWindow(window->id); | |
878 } | |
879 if (flags & SDL_WINDOW_MINIMIZED) { | |
880 SDL_MinimizeWindow(window->id); | |
881 } | |
882 if (flags & SDL_WINDOW_SHOWN) { | |
883 SDL_ShowWindow(window->id); | |
884 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
885 SDL_UpdateWindowGrab(window); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
886 |
2753 | 887 return 0; |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
888 } |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
889 |
2753 | 890 SDL_Window * |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
891 SDL_GetWindowFromID(SDL_WindowID windowID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
892 { |
2753 | 893 int i, j; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
894 |
2753 | 895 if (!_this) { |
896 SDL_UninitializedVideo(); | |
897 return NULL; | |
898 } | |
899 for (i = 0; i < _this->num_displays; ++i) { | |
900 SDL_VideoDisplay *display = &_this->displays[i]; | |
901 for (j = 0; j < display->num_windows; ++j) { | |
902 SDL_Window *window = &display->windows[j]; | |
903 if (window->id == windowID) { | |
904 return window; | |
905 } | |
906 } | |
907 } | |
908 return NULL; | |
0 | 909 } |
910 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
911 SDL_VideoDisplay * |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
912 SDL_GetDisplayFromWindow(SDL_Window * window) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
913 { |
2753 | 914 if (!_this) { |
915 SDL_UninitializedVideo(); | |
916 return NULL; | |
917 } | |
918 if (!window) { | |
919 return NULL; | |
920 } | |
921 return &_this->displays[window->display]; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
922 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
923 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
924 Uint32 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
925 SDL_GetWindowFlags(SDL_WindowID windowID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
926 { |
2753 | 927 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
928 |
2753 | 929 if (!window) { |
930 return 0; | |
931 } | |
932 return window->flags; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
933 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
934 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
935 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
936 SDL_SetWindowTitle(SDL_WindowID windowID, const char *title) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
937 { |
2753 | 938 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1956
ba0d62354872
Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
939 |
2753 | 940 if (!window || title == window->title) { |
941 return; | |
942 } | |
943 if (window->title) { | |
944 SDL_free(window->title); | |
945 } | |
946 if (title) { | |
947 window->title = SDL_strdup(title); | |
948 } else { | |
949 window->title = NULL; | |
950 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
951 |
2753 | 952 if (_this->SetWindowTitle) { |
953 _this->SetWindowTitle(_this, window); | |
954 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
955 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
956 |
2753 | 957 const char * |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
958 SDL_GetWindowTitle(SDL_WindowID windowID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
959 { |
2753 | 960 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
961 |
2753 | 962 if (!window) { |
963 return NULL; | |
964 } | |
965 return window->title; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
966 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
967 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
968 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
969 SDL_SetWindowData(SDL_WindowID windowID, void *userdata) |
0 | 970 { |
2753 | 971 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
972 |
2753 | 973 if (!window) { |
974 return; | |
975 } | |
976 window->userdata = userdata; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
977 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
978 |
2753 | 979 void * |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
980 SDL_GetWindowData(SDL_WindowID windowID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
981 { |
2753 | 982 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
983 |
2753 | 984 if (!window) { |
985 return NULL; | |
986 } | |
987 return window->userdata; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
988 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
989 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
990 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
991 SDL_SetWindowPosition(SDL_WindowID windowID, int x, int y) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
992 { |
2753 | 993 SDL_Window *window = SDL_GetWindowFromID(windowID); |
994 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); | |
0 | 995 |
2753 | 996 if (!window) { |
997 return; | |
998 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
999 if (x != SDL_WINDOWPOS_UNDEFINED) { |
2753 | 1000 window->x = x; |
1001 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1002 if (y != SDL_WINDOWPOS_UNDEFINED) { |
2753 | 1003 window->y = y; |
1004 } | |
1005 if (_this->SetWindowPosition) { | |
1006 _this->SetWindowPosition(_this, window); | |
1007 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1008 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_MOVED, x, y); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1009 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1010 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1011 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1012 SDL_GetWindowPosition(SDL_WindowID windowID, int *x, int *y) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1013 { |
2753 | 1014 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1015 |
2753 | 1016 if (!window) { |
1017 return; | |
1018 } | |
1019 if (x) { | |
1020 *x = window->x; | |
1021 } | |
1022 if (y) { | |
1023 *y = window->y; | |
1024 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1025 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1026 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1027 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1028 SDL_SetWindowSize(SDL_WindowID windowID, int w, int h) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1029 { |
2753 | 1030 SDL_Window *window = SDL_GetWindowFromID(windowID); |
0 | 1031 |
2753 | 1032 if (!window) { |
1033 return; | |
1034 } | |
1035 window->w = w; | |
1036 window->h = h; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1037 |
2753 | 1038 if (_this->SetWindowSize) { |
1039 _this->SetWindowSize(_this, window); | |
1040 } | |
2849
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1041 SDL_OnWindowResized(window); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1042 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1043 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1044 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1045 SDL_GetWindowSize(SDL_WindowID windowID, int *w, int *h) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1046 { |
2753 | 1047 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1048 |
2860
6ce28e5287e9
Date: Sun, 07 Dec 2008 13:35:23 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
1049 if (window) { |
2849
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1050 if (w) { |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1051 *w = window->w; |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1052 } |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1053 if (h) { |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1054 *h = window->h; |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1055 } |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1056 } else { |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1057 if (w) { |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1058 *w = 0; |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1059 } |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1060 if (h) { |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1061 *h = 0; |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1062 } |
2753 | 1063 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1064 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1065 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1066 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1067 SDL_ShowWindow(SDL_WindowID windowID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1068 { |
2753 | 1069 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1070 |
2753 | 1071 if (!window || (window->flags & SDL_WINDOW_SHOWN)) { |
1072 return; | |
1073 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1074 |
2753 | 1075 if (_this->ShowWindow) { |
1076 _this->ShowWindow(_this, window); | |
1077 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1078 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_SHOWN, 0, 0); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1079 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1080 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1081 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1082 SDL_HideWindow(SDL_WindowID windowID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1083 { |
2753 | 1084 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1085 |
2753 | 1086 if (!window || !(window->flags & SDL_WINDOW_SHOWN)) { |
1087 return; | |
1088 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1089 |
2753 | 1090 if (_this->HideWindow) { |
1091 _this->HideWindow(_this, window); | |
1092 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1093 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_HIDDEN, 0, 0); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1094 } |
0 | 1095 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1096 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1097 SDL_RaiseWindow(SDL_WindowID windowID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1098 { |
2753 | 1099 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1100 |
2753 | 1101 if (!window || !(window->flags & SDL_WINDOW_SHOWN)) { |
1102 return; | |
1103 } | |
1104 if (_this->RaiseWindow) { | |
1105 _this->RaiseWindow(_this, window); | |
1106 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1107 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1108 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1109 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1110 SDL_MaximizeWindow(SDL_WindowID windowID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1111 { |
2753 | 1112 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1113 |
2753 | 1114 if (!window || (window->flags & SDL_WINDOW_MAXIMIZED)) { |
1115 return; | |
1116 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1117 |
2753 | 1118 if (_this->MaximizeWindow) { |
1119 _this->MaximizeWindow(_this, window); | |
1120 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1121 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_MAXIMIZED, 0, 0); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1122 } |
0 | 1123 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1124 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1125 SDL_MinimizeWindow(SDL_WindowID windowID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1126 { |
2753 | 1127 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1128 |
2753 | 1129 if (!window || (window->flags & SDL_WINDOW_MINIMIZED)) { |
1130 return; | |
1131 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1132 |
2753 | 1133 if (_this->MinimizeWindow) { |
1134 _this->MinimizeWindow(_this, window); | |
1135 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1136 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_MINIMIZED, 0, 0); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1137 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1138 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1139 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1140 SDL_RestoreWindow(SDL_WindowID windowID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1141 { |
2753 | 1142 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1143 |
2753 | 1144 if (!window |
2934
1fcc36adc73d
Fixed logic problem with SDL_RestoreWindow()
Sam Lantinga <slouken@libsdl.org>
parents:
2928
diff
changeset
|
1145 || !(window->flags & (SDL_WINDOW_MAXIMIZED | SDL_WINDOW_MINIMIZED))) { |
2753 | 1146 return; |
1147 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1148 |
2753 | 1149 if (_this->RestoreWindow) { |
1150 _this->RestoreWindow(_this, window); | |
1151 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1152 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_RESTORED, 0, 0); |
0 | 1153 } |
1154 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1155 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1156 SDL_SetWindowFullscreen(SDL_WindowID windowID, int fullscreen) |
0 | 1157 { |
2753 | 1158 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1159 |
2753 | 1160 if (!window) { |
1161 return -1; | |
1162 } | |
1163 if (fullscreen) { | |
1164 fullscreen = SDL_WINDOW_FULLSCREEN; | |
1165 } | |
1166 if ((window->flags & SDL_WINDOW_FULLSCREEN) == fullscreen) { | |
1167 return 0; | |
1168 } | |
1169 if (fullscreen) { | |
1170 window->flags |= SDL_WINDOW_FULLSCREEN; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1171 |
2753 | 1172 if (FULLSCREEN_VISIBLE(window)) { |
1173 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1174 |
2753 | 1175 /* Hide any other fullscreen windows */ |
1176 int i; | |
1177 for (i = 0; i < display->num_windows; ++i) { | |
1178 SDL_Window *other = &display->windows[i]; | |
1179 if (other->id != windowID && FULLSCREEN_VISIBLE(other)) { | |
1180 SDL_MinimizeWindow(other->id); | |
1181 } | |
1182 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1183 |
2753 | 1184 SDL_SetDisplayMode(&display->fullscreen_mode); |
1185 } | |
1186 } else { | |
1187 window->flags &= ~SDL_WINDOW_FULLSCREEN; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1188 |
2753 | 1189 if (FULLSCREEN_VISIBLE(window)) { |
1190 SDL_SetDisplayMode(NULL); | |
1191 } | |
1192 } | |
1193 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1194 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1195 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1196 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1197 SDL_SetWindowGrab(SDL_WindowID windowID, int mode) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1198 { |
2753 | 1199 SDL_Window *window = SDL_GetWindowFromID(windowID); |
0 | 1200 |
2753 | 1201 if (!window || (!!mode == !!(window->flags & SDL_WINDOW_INPUT_GRABBED))) { |
1202 return; | |
1203 } | |
1204 if (mode) { | |
1205 window->flags |= SDL_WINDOW_INPUT_GRABBED; | |
1206 } else { | |
1207 window->flags &= ~SDL_WINDOW_INPUT_GRABBED; | |
1208 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1209 SDL_UpdateWindowGrab(window); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1210 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1211 |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1212 static void |
2876 | 1213 SDL_UpdateWindowGrab(SDL_Window * window) |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1214 { |
2753 | 1215 if ((window->flags & SDL_WINDOW_INPUT_FOCUS) && _this->SetWindowGrab) { |
1216 _this->SetWindowGrab(_this, window); | |
1217 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1218 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1219 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1220 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1221 SDL_GetWindowGrab(SDL_WindowID windowID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1222 { |
2753 | 1223 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1224 |
2753 | 1225 if (!window) { |
1226 return 0; | |
1227 } | |
1228 return ((window->flags & SDL_WINDOW_INPUT_GRABBED) != 0); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1229 } |
0 | 1230 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1231 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1232 SDL_OnWindowShown(SDL_Window * window) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1233 { |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1234 if (window->flags & SDL_WINDOW_FULLSCREEN) { |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1235 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1236 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1237 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1238 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1239 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1240 SDL_OnWindowHidden(SDL_Window * window) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1241 { |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1242 if (window->flags & SDL_WINDOW_FULLSCREEN) { |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1243 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_FOCUS_LOST, 0, 0); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1244 } |
0 | 1245 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1246 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1247 void |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1248 SDL_OnWindowResized(SDL_Window * window) |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1249 { |
2753 | 1250 SDL_Renderer *renderer = window->renderer; |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1251 |
2753 | 1252 if (renderer && renderer->DisplayModeChanged) { |
1253 renderer->DisplayModeChanged(renderer); | |
1254 } | |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1255 } |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1256 |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1257 void |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1258 SDL_OnWindowFocusGained(SDL_Window * window) |
0 | 1259 { |
2753 | 1260 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1261 |
2753 | 1262 if (window->flags & SDL_WINDOW_FULLSCREEN) { |
1263 SDL_SetDisplayMode(&display->fullscreen_mode); | |
1264 } | |
1265 if (display->gamma && _this->SetDisplayGammaRamp) { | |
1266 _this->SetDisplayGammaRamp(_this, display->gamma); | |
1267 } | |
2876 | 1268 if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN)) |
1269 && _this->SetWindowGrab) { | |
2753 | 1270 _this->SetWindowGrab(_this, window); |
1271 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1272 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1273 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1274 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1275 SDL_OnWindowFocusLost(SDL_Window * window) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1276 { |
2753 | 1277 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); |
0 | 1278 |
2753 | 1279 if (window->flags & SDL_WINDOW_FULLSCREEN) { |
1280 SDL_MinimizeWindow(window->id); | |
1281 SDL_SetDisplayMode(NULL); | |
1282 } | |
1283 if (display->gamma && _this->SetDisplayGammaRamp) { | |
1284 _this->SetDisplayGammaRamp(_this, display->saved_gamma); | |
1285 } | |
2876 | 1286 if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN)) |
1287 && _this->SetWindowGrab) { | |
2753 | 1288 _this->SetWindowGrab(_this, window); |
1289 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1290 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1291 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1292 SDL_WindowID |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1293 SDL_GetFocusWindow(void) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1294 { |
2753 | 1295 SDL_VideoDisplay *display; |
1296 int i; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1297 |
2753 | 1298 if (!_this) { |
1299 return 0; | |
1300 } | |
1301 display = &SDL_CurrentDisplay; | |
1302 for (i = 0; i < display->num_windows; ++i) { | |
1303 SDL_Window *window = &display->windows[i]; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1304 |
2753 | 1305 if (window->flags & SDL_WINDOW_INPUT_FOCUS) { |
1306 return window->id; | |
1307 } | |
1308 } | |
1309 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1310 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1311 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1312 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1313 SDL_DestroyWindow(SDL_WindowID windowID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1314 { |
2753 | 1315 int i, j; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1316 |
2753 | 1317 if (!_this) { |
1318 return; | |
1319 } | |
1320 /* Restore video mode, etc. */ | |
1321 SDL_SendWindowEvent(windowID, SDL_WINDOWEVENT_FOCUS_LOST, 0, 0); | |
0 | 1322 |
2753 | 1323 for (i = 0; i < _this->num_displays; ++i) { |
1324 SDL_VideoDisplay *display = &_this->displays[i]; | |
1325 for (j = 0; j < display->num_windows; ++j) { | |
1326 SDL_Window *window = &display->windows[j]; | |
1327 if (window->id != windowID) { | |
1328 continue; | |
1329 } | |
1330 if (window->title) { | |
1331 SDL_free(window->title); | |
1332 window->title = NULL; | |
1333 } | |
1334 if (window->renderer) { | |
1335 SDL_DestroyRenderer(window->id); | |
1336 window->renderer = NULL; | |
1337 } | |
1338 if (_this->DestroyWindow) { | |
1339 _this->DestroyWindow(_this, window); | |
1340 } | |
1341 if (j != display->num_windows - 1) { | |
1342 SDL_memcpy(&display->windows[i], | |
1343 &display->windows[i + 1], | |
1344 (display->num_windows - i - 1) * sizeof(*window)); | |
1345 } | |
1346 --display->num_windows; | |
1347 return; | |
1348 } | |
1349 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1350 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1351 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1352 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1353 SDL_AddRenderDriver(int displayIndex, const SDL_RenderDriver * driver) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1354 { |
2753 | 1355 SDL_VideoDisplay *display; |
1356 SDL_RenderDriver *render_drivers; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1357 |
2753 | 1358 if (displayIndex >= _this->num_displays) { |
1359 return; | |
1360 } | |
1361 display = &_this->displays[displayIndex]; | |
2119
9341a884a4d9
Fixed running on Windows under VMware
Sam Lantinga <slouken@libsdl.org>
parents:
2075
diff
changeset
|
1362 |
2753 | 1363 render_drivers = |
1364 SDL_realloc(display->render_drivers, | |
1365 (display->num_render_drivers + | |
1366 1) * sizeof(*render_drivers)); | |
1367 if (render_drivers) { | |
1368 render_drivers[display->num_render_drivers] = *driver; | |
1369 display->render_drivers = render_drivers; | |
1370 display->num_render_drivers++; | |
1371 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1372 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1373 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1374 int |
1969
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1375 SDL_GetNumRenderDrivers(void) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1376 { |
2753 | 1377 if (_this) { |
1378 return SDL_CurrentDisplay.num_render_drivers; | |
1379 } | |
1380 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1381 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1382 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1383 int |
1969
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1384 SDL_GetRenderDriverInfo(int index, SDL_RendererInfo * info) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1385 { |
2753 | 1386 if (!_this) { |
1387 SDL_UninitializedVideo(); | |
1388 return -1; | |
1389 } | |
1390 if (index < 0 || index >= SDL_GetNumRenderDrivers()) { | |
1391 SDL_SetError("index must be in the range of 0 - %d", | |
1392 SDL_GetNumRenderDrivers() - 1); | |
1393 return -1; | |
1394 } | |
1395 *info = SDL_CurrentDisplay.render_drivers[index].info; | |
1396 return 0; | |
0 | 1397 } |
1398 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1399 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1400 SDL_CreateRenderer(SDL_WindowID windowID, int index, Uint32 flags) |
0 | 1401 { |
2753 | 1402 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1403 |
2753 | 1404 if (!window) { |
1405 return 0; | |
1406 } | |
1407 if (index < 0) { | |
1408 const char *override = SDL_getenv("SDL_VIDEO_RENDERER"); | |
1409 int n = SDL_GetNumRenderDrivers(); | |
1410 for (index = 0; index < n; ++index) { | |
1411 SDL_RenderDriver *driver = | |
1412 &SDL_CurrentDisplay.render_drivers[index]; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1413 |
2753 | 1414 if (override) { |
1415 if (SDL_strcasecmp(override, driver->info.name) == 0) { | |
1416 break; | |
1417 } | |
1418 } else { | |
1419 if ((driver->info.flags & flags) == flags) { | |
1420 break; | |
1421 } | |
1422 } | |
1423 } | |
1424 if (index == n) { | |
1425 SDL_SetError("Couldn't find matching render driver"); | |
1426 return -1; | |
1427 } | |
1428 } | |
1429 if (index >= SDL_GetNumRenderDrivers()) { | |
1430 SDL_SetError("index must be -1 or in the range of 0 - %d", | |
1431 SDL_GetNumRenderDrivers() - 1); | |
1432 return -1; | |
1433 } | |
1434 /* Free any existing renderer */ | |
1435 SDL_DestroyRenderer(windowID); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1436 |
2753 | 1437 /* Create a new renderer instance */ |
1438 window->renderer = SDL_CurrentDisplay.render_drivers[index] | |
1439 .CreateRenderer(window, flags); | |
1440 SDL_SelectRenderer(window->id); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1441 |
2753 | 1442 return 0; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1443 } |
0 | 1444 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1445 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1446 SDL_SelectRenderer(SDL_WindowID windowID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1447 { |
2753 | 1448 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1449 SDL_Renderer *renderer; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1450 |
2753 | 1451 if (!window || !window->renderer) { |
1452 return -1; | |
1453 } | |
1454 renderer = window->renderer; | |
1455 if (renderer && renderer->ActivateRenderer) { | |
1456 if (renderer->ActivateRenderer(renderer) < 0) { | |
1457 return -1; | |
1458 } | |
1459 } | |
1460 SDL_CurrentDisplay.current_renderer = renderer; | |
1461 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1462 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1463 |
1969
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1464 int |
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1465 SDL_GetRendererInfo(SDL_RendererInfo * info) |
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1466 { |
2753 | 1467 if (!_this) { |
1468 SDL_UninitializedVideo(); | |
1469 return -1; | |
1470 } | |
1471 if (!SDL_CurrentDisplay.current_renderer) { | |
1472 SDL_SetError("There is no current renderer"); | |
1473 return -1; | |
1474 } | |
1475 *info = SDL_CurrentDisplay.current_renderer->info; | |
1476 return 0; | |
1969
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1477 } |
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1478 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1479 SDL_TextureID |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1480 SDL_CreateTexture(Uint32 format, int access, int w, int h) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1481 { |
2753 | 1482 int hash; |
1483 SDL_Renderer *renderer; | |
1484 SDL_Texture *texture; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1485 |
2753 | 1486 if (!_this) { |
1487 SDL_UninitializedVideo(); | |
1488 return 0; | |
1489 } | |
1490 renderer = SDL_CurrentDisplay.current_renderer; | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1491 if (!renderer) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1492 return 0; |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1493 } |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1494 if (!renderer->CreateTexture) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1495 SDL_Unsupported(); |
2753 | 1496 return 0; |
1497 } | |
1498 texture = (SDL_Texture *) SDL_calloc(1, sizeof(*texture)); | |
1499 if (!texture) { | |
1500 SDL_OutOfMemory(); | |
1501 return 0; | |
1502 } | |
1503 texture->id = _this->next_object_id++; | |
1504 texture->format = format; | |
1505 texture->access = access; | |
1506 texture->w = w; | |
1507 texture->h = h; | |
1508 texture->r = 255; | |
1509 texture->g = 255; | |
1510 texture->b = 255; | |
1511 texture->a = 255; | |
1512 texture->renderer = renderer; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1513 |
2753 | 1514 if (renderer->CreateTexture(renderer, texture) < 0) { |
1515 if (renderer->DestroyTexture) { | |
1516 renderer->DestroyTexture(renderer, texture); | |
1517 } | |
1518 SDL_free(texture); | |
1519 return 0; | |
1520 } | |
1521 hash = (texture->id % SDL_arraysize(SDL_CurrentDisplay.textures)); | |
1522 texture->next = SDL_CurrentDisplay.textures[hash]; | |
1523 SDL_CurrentDisplay.textures[hash] = texture; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1524 |
2753 | 1525 return texture->id; |
0 | 1526 } |
1527 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1528 SDL_TextureID |
2222
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
2130
diff
changeset
|
1529 SDL_CreateTextureFromSurface(Uint32 format, SDL_Surface * surface) |
0 | 1530 { |
2753 | 1531 SDL_TextureID textureID; |
1532 SDL_PixelFormat *fmt; | |
1533 int bpp; | |
1534 Uint32 Rmask, Gmask, Bmask, Amask; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1535 |
2753 | 1536 if (!surface) { |
1537 SDL_SetError("SDL_CreateTextureFromSurface() passed NULL surface"); | |
1538 return 0; | |
1539 } | |
1540 fmt = surface->format; | |
0 | 1541 |
2753 | 1542 if (format) { |
1543 if (!SDL_PixelFormatEnumToMasks | |
1544 (format, &bpp, &Rmask, &Gmask, &Bmask, &Amask)) { | |
1545 SDL_SetError("Unknown pixel format"); | |
1546 return 0; | |
1547 } | |
1548 } else { | |
1549 if (surface->format->Amask | |
1550 || !(surface->map->info.flags & | |
1551 (SDL_COPY_COLORKEY | SDL_COPY_MASK | SDL_COPY_BLEND))) { | |
1552 bpp = fmt->BitsPerPixel; | |
1553 Rmask = fmt->Rmask; | |
1554 Gmask = fmt->Gmask; | |
1555 Bmask = fmt->Bmask; | |
1556 Amask = fmt->Amask; | |
1557 } else { | |
1558 /* Need a format with alpha */ | |
1559 bpp = 32; | |
1560 Rmask = 0x00FF0000; | |
1561 Gmask = 0x0000FF00; | |
1562 Bmask = 0x000000FF; | |
1563 Amask = 0xFF000000; | |
1564 } | |
1565 format = SDL_MasksToPixelFormatEnum(bpp, Rmask, Gmask, Bmask, Amask); | |
1566 if (!format) { | |
1567 SDL_SetError("Unknown pixel format"); | |
1568 return 0; | |
1569 } | |
1570 } | |
0 | 1571 |
2753 | 1572 textureID = |
1573 SDL_CreateTexture(format, SDL_TEXTUREACCESS_STATIC, surface->w, | |
1574 surface->h); | |
1575 if (!textureID) { | |
1576 return 0; | |
1577 } | |
1578 if (bpp == fmt->BitsPerPixel && Rmask == fmt->Rmask && Gmask == fmt->Gmask | |
1579 && Bmask == fmt->Bmask && Amask == fmt->Amask) { | |
1580 if (SDL_MUSTLOCK(surface)) { | |
1581 if (SDL_LockSurface(surface) < 0) { | |
1582 SDL_DestroyTexture(textureID); | |
1583 return 0; | |
1584 } | |
1585 SDL_UpdateTexture(textureID, NULL, surface->pixels, | |
1586 surface->pitch); | |
1587 SDL_UnlockSurface(surface); | |
1588 } else { | |
1589 SDL_UpdateTexture(textureID, NULL, surface->pixels, | |
1590 surface->pitch); | |
1591 } | |
1592 } else { | |
1593 SDL_PixelFormat *dst_fmt; | |
1594 SDL_Surface *dst = NULL; | |
2222
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
2130
diff
changeset
|
1595 |
2753 | 1596 /* Set up a destination surface for the texture update */ |
1597 dst_fmt = SDL_AllocFormat(bpp, Rmask, Gmask, Bmask, Amask); | |
1598 if (dst_fmt) { | |
1599 if (SDL_ISPIXELFORMAT_INDEXED(format)) { | |
1600 dst_fmt->palette = | |
1601 SDL_AllocPalette((1 << SDL_BITSPERPIXEL(format))); | |
1602 if (dst_fmt->palette) { | |
1603 /* | |
1604 * FIXME: Should we try to copy | |
1605 * fmt->palette? | |
1606 */ | |
1607 SDL_DitherColors(dst_fmt->palette->colors, | |
1608 SDL_BITSPERPIXEL(format)); | |
1609 } | |
1610 } | |
1611 dst = SDL_ConvertSurface(surface, dst_fmt, 0); | |
1612 if (dst) { | |
1613 SDL_UpdateTexture(textureID, NULL, dst->pixels, dst->pitch); | |
1614 SDL_FreeSurface(dst); | |
1615 } | |
1616 if (dst_fmt->palette) { | |
1617 SDL_FreePalette(dst_fmt->palette); | |
1618 } | |
1619 SDL_FreeFormat(dst_fmt); | |
1620 } | |
1621 if (!dst) { | |
1622 SDL_DestroyTexture(textureID); | |
1623 return 0; | |
1624 } | |
1625 } | |
2743
453ec0c21f6f
Rolling back changes to revision 4071 ... made some mistakes, will try merging work again.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2740
diff
changeset
|
1626 |
2753 | 1627 if (SDL_ISPIXELFORMAT_INDEXED(format) && fmt->palette) { |
1628 SDL_SetTexturePalette(textureID, fmt->palette->colors, 0, | |
1629 fmt->palette->ncolors); | |
1630 } | |
1631 return textureID; | |
0 | 1632 } |
1633 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1634 static __inline__ SDL_Texture * |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1635 SDL_GetTextureFromID(SDL_TextureID textureID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1636 { |
2753 | 1637 int hash; |
1638 SDL_Texture *texture; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1639 |
2753 | 1640 if (!_this) { |
1641 return NULL; | |
1642 } | |
1643 hash = (textureID % SDL_arraysize(SDL_CurrentDisplay.textures)); | |
1644 for (texture = SDL_CurrentDisplay.textures[hash]; texture; | |
1645 texture = texture->next) { | |
1646 if (texture->id == textureID) { | |
1647 return texture; | |
1648 } | |
1649 } | |
1650 return NULL; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1651 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1652 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1653 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1654 SDL_QueryTexture(SDL_TextureID textureID, Uint32 * format, int *access, |
2753 | 1655 int *w, int *h) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1656 { |
2753 | 1657 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1658 |
2753 | 1659 if (!texture) { |
1660 return -1; | |
1661 } | |
1662 if (format) { | |
1663 *format = texture->format; | |
1664 } | |
1665 if (access) { | |
1666 *access = texture->access; | |
1667 } | |
1668 if (w) { | |
1669 *w = texture->w; | |
1670 } | |
1671 if (h) { | |
1672 *h = texture->h; | |
1673 } | |
1674 return 0; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1675 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1676 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1677 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1678 SDL_QueryTexturePixels(SDL_TextureID textureID, void **pixels, int *pitch) |
0 | 1679 { |
2753 | 1680 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1681 SDL_Renderer *renderer; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1682 |
2753 | 1683 if (!texture) { |
1684 return -1; | |
1685 } | |
1686 renderer = texture->renderer; | |
1687 if (!renderer->QueryTexturePixels) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1688 SDL_Unsupported(); |
2753 | 1689 return -1; |
1690 } | |
1691 return renderer->QueryTexturePixels(renderer, texture, pixels, pitch); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1692 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1693 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1694 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1695 SDL_SetTexturePalette(SDL_TextureID textureID, const SDL_Color * colors, |
2753 | 1696 int firstcolor, int ncolors) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1697 { |
2753 | 1698 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1699 SDL_Renderer *renderer; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1700 |
2753 | 1701 if (!texture) { |
1702 return -1; | |
1703 } | |
1704 renderer = texture->renderer; | |
1705 if (!renderer->SetTexturePalette) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1706 SDL_Unsupported(); |
2753 | 1707 return -1; |
1708 } | |
1709 return renderer->SetTexturePalette(renderer, texture, colors, firstcolor, | |
1710 ncolors); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1711 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1712 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1713 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1714 SDL_GetTexturePalette(SDL_TextureID textureID, SDL_Color * colors, |
2753 | 1715 int firstcolor, int ncolors) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1716 { |
2753 | 1717 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1718 SDL_Renderer *renderer; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1719 |
2753 | 1720 if (!texture) { |
1721 return -1; | |
1722 } | |
1723 renderer = texture->renderer; | |
1724 if (!renderer->GetTexturePalette) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1725 SDL_Unsupported(); |
2753 | 1726 return -1; |
1727 } | |
1728 return renderer->GetTexturePalette(renderer, texture, colors, firstcolor, | |
1729 ncolors); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1730 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1731 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1732 int |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1733 SDL_SetTextureColorMod(SDL_TextureID textureID, Uint8 r, Uint8 g, Uint8 b) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1734 { |
2753 | 1735 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1736 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1737 |
2753 | 1738 if (!texture) { |
1739 return -1; | |
1740 } | |
1741 renderer = texture->renderer; | |
1742 if (!renderer->SetTextureColorMod) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1743 SDL_Unsupported(); |
2753 | 1744 return -1; |
1745 } | |
1746 if (r < 255 || g < 255 || b < 255) { | |
1747 texture->modMode |= SDL_TEXTUREMODULATE_COLOR; | |
1748 } else { | |
1749 texture->modMode &= ~SDL_TEXTUREMODULATE_COLOR; | |
1750 } | |
1751 texture->r = r; | |
1752 texture->g = g; | |
1753 texture->b = b; | |
1754 return renderer->SetTextureColorMod(renderer, texture); | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1755 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1756 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1757 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1758 SDL_GetTextureColorMod(SDL_TextureID textureID, Uint8 * r, Uint8 * g, |
2753 | 1759 Uint8 * b) |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1760 { |
2753 | 1761 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1762 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1763 |
2753 | 1764 if (!texture) { |
1765 return -1; | |
1766 } | |
1767 renderer = texture->renderer; | |
1768 if (r) { | |
1769 *r = texture->r; | |
1770 } | |
1771 if (g) { | |
1772 *g = texture->g; | |
1773 } | |
1774 if (b) { | |
1775 *b = texture->b; | |
1776 } | |
1777 return 0; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1778 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1779 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1780 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1781 SDL_SetTextureAlphaMod(SDL_TextureID textureID, Uint8 alpha) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1782 { |
2753 | 1783 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1784 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1785 |
2753 | 1786 if (!texture) { |
1787 return -1; | |
1788 } | |
1789 renderer = texture->renderer; | |
1790 if (!renderer->SetTextureAlphaMod) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1791 SDL_Unsupported(); |
2753 | 1792 return -1; |
1793 } | |
1794 if (alpha < 255) { | |
1795 texture->modMode |= SDL_TEXTUREMODULATE_ALPHA; | |
1796 } else { | |
1797 texture->modMode &= ~SDL_TEXTUREMODULATE_ALPHA; | |
1798 } | |
1799 texture->a = alpha; | |
1800 return renderer->SetTextureAlphaMod(renderer, texture); | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1801 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1802 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1803 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1804 SDL_GetTextureAlphaMod(SDL_TextureID textureID, Uint8 * alpha) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1805 { |
2753 | 1806 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1807 |
2753 | 1808 if (!texture) { |
1809 return -1; | |
1810 } | |
1811 if (alpha) { | |
1812 *alpha = texture->a; | |
1813 } | |
1814 return 0; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1815 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1816 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1817 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1818 SDL_SetTextureBlendMode(SDL_TextureID textureID, int blendMode) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1819 { |
2753 | 1820 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1821 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1822 |
2753 | 1823 if (!texture) { |
1824 return -1; | |
1825 } | |
1826 renderer = texture->renderer; | |
1827 if (!renderer->SetTextureBlendMode) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1828 SDL_Unsupported(); |
2753 | 1829 return -1; |
1830 } | |
1831 texture->blendMode = blendMode; | |
1832 return renderer->SetTextureBlendMode(renderer, texture); | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1833 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1834 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1835 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1836 SDL_GetTextureBlendMode(SDL_TextureID textureID, int *blendMode) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1837 { |
2753 | 1838 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1839 |
2753 | 1840 if (!texture) { |
1841 return -1; | |
1842 } | |
1843 if (blendMode) { | |
1844 *blendMode = texture->blendMode; | |
1845 } | |
1846 return 0; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1847 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1848 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1849 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1850 SDL_SetTextureScaleMode(SDL_TextureID textureID, int scaleMode) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1851 { |
2753 | 1852 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1853 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1854 |
2753 | 1855 if (!texture) { |
1856 return -1; | |
1857 } | |
1858 renderer = texture->renderer; | |
1859 if (!renderer->SetTextureScaleMode) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1860 SDL_Unsupported(); |
2753 | 1861 return -1; |
1862 } | |
1863 texture->scaleMode = scaleMode; | |
1864 return renderer->SetTextureScaleMode(renderer, texture); | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1865 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1866 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1867 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1868 SDL_GetTextureScaleMode(SDL_TextureID textureID, int *scaleMode) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1869 { |
2753 | 1870 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1871 |
2753 | 1872 if (!texture) { |
1873 return -1; | |
1874 } | |
1875 if (scaleMode) { | |
1876 *scaleMode = texture->scaleMode; | |
1877 } | |
1878 return 0; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1879 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1880 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1881 int |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1882 SDL_UpdateTexture(SDL_TextureID textureID, const SDL_Rect * rect, |
2753 | 1883 const void *pixels, int pitch) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1884 { |
2753 | 1885 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1886 SDL_Renderer *renderer; | |
1887 SDL_Rect full_rect; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1888 |
2753 | 1889 if (!texture) { |
1890 return -1; | |
1891 } | |
1892 renderer = texture->renderer; | |
1893 if (!renderer->UpdateTexture) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1894 SDL_Unsupported(); |
2753 | 1895 return -1; |
1896 } | |
1897 if (!rect) { | |
1898 full_rect.x = 0; | |
1899 full_rect.y = 0; | |
1900 full_rect.w = texture->w; | |
1901 full_rect.h = texture->h; | |
1902 rect = &full_rect; | |
1903 } | |
1904 return renderer->UpdateTexture(renderer, texture, rect, pixels, pitch); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1905 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1906 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1907 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1908 SDL_LockTexture(SDL_TextureID textureID, const SDL_Rect * rect, int markDirty, |
2753 | 1909 void **pixels, int *pitch) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1910 { |
2753 | 1911 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1912 SDL_Renderer *renderer; | |
1913 SDL_Rect full_rect; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1914 |
2753 | 1915 if (!texture) { |
1916 return -1; | |
1917 } | |
1918 if (texture->access != SDL_TEXTUREACCESS_STREAMING) { | |
1919 SDL_SetError("SDL_LockTexture(): texture must be streaming"); | |
1920 return -1; | |
1921 } | |
1922 renderer = texture->renderer; | |
1923 if (!renderer->LockTexture) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1924 SDL_Unsupported(); |
2753 | 1925 return -1; |
1926 } | |
1927 if (!rect) { | |
1928 full_rect.x = 0; | |
1929 full_rect.y = 0; | |
1930 full_rect.w = texture->w; | |
1931 full_rect.h = texture->h; | |
1932 rect = &full_rect; | |
1933 } | |
1934 return renderer->LockTexture(renderer, texture, rect, markDirty, pixels, | |
1935 pitch); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1936 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1937 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1938 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1939 SDL_UnlockTexture(SDL_TextureID textureID) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1940 { |
2753 | 1941 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1942 SDL_Renderer *renderer; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1943 |
2753 | 1944 if (!texture) { |
1945 return; | |
1946 } | |
1947 if (texture->access != SDL_TEXTUREACCESS_STREAMING) { | |
1948 return; | |
1949 } | |
1950 renderer = texture->renderer; | |
1951 if (!renderer->UnlockTexture) { | |
1952 return; | |
1953 } | |
1954 renderer->UnlockTexture(renderer, texture); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1955 } |
0 | 1956 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1957 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1958 SDL_DirtyTexture(SDL_TextureID textureID, int numrects, |
2753 | 1959 const SDL_Rect * rects) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1960 { |
2753 | 1961 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1962 SDL_Renderer *renderer; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1963 |
2753 | 1964 if (!texture) { |
1965 return; | |
1966 } | |
1967 if (texture->access != SDL_TEXTUREACCESS_STREAMING) { | |
1968 return; | |
1969 } | |
1970 renderer = texture->renderer; | |
1971 if (!renderer->DirtyTexture) { | |
1972 return; | |
1973 } | |
1974 renderer->DirtyTexture(renderer, texture, numrects, rects); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1975 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1976 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1977 int |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1978 SDL_SetRenderDrawColor(Uint8 r, Uint8 g, Uint8 b, Uint8 a) |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1979 { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1980 SDL_Renderer *renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1981 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1982 if (!_this) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1983 SDL_UninitializedVideo(); |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1984 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1985 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1986 renderer = SDL_CurrentDisplay.current_renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1987 if (!renderer) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1988 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1989 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1990 renderer->r = r; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1991 renderer->g = g; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1992 renderer->b = b; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1993 renderer->a = a; |
2927
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
1994 if (renderer->SetDrawColor) { |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
1995 return renderer->SetDrawColor(renderer); |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
1996 } else { |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
1997 return 0; |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
1998 } |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
1999 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2000 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2001 int |
2885 | 2002 SDL_GetRenderDrawColor(Uint8 * r, Uint8 * g, Uint8 * b, Uint8 * a) |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2003 { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2004 SDL_Renderer *renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2005 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2006 if (!_this) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2007 SDL_UninitializedVideo(); |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2008 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2009 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2010 renderer = SDL_CurrentDisplay.current_renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2011 if (!renderer) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2012 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2013 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2014 if (r) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2015 *r = renderer->r; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2016 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2017 if (g) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2018 *g = renderer->g; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2019 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2020 if (b) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2021 *b = renderer->b; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2022 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2023 if (a) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2024 *a = renderer->a; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2025 } |
2928
e171ce9bdbad
Fixed missing return value
Sam Lantinga <slouken@libsdl.org>
parents:
2927
diff
changeset
|
2026 return 0; |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2027 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2028 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2029 int |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2030 SDL_SetRenderDrawBlendMode(int blendMode) |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2031 { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2032 SDL_Renderer *renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2033 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2034 if (!_this) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2035 SDL_UninitializedVideo(); |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2036 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2037 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2038 renderer = SDL_CurrentDisplay.current_renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2039 if (!renderer) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2040 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2041 } |
2927
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2042 renderer->blendMode = blendMode; |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2043 if (renderer->SetDrawBlendMode) { |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2044 return renderer->SetDrawBlendMode(renderer); |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2045 } else { |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2046 return 0; |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2047 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2048 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2049 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2050 int |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2051 SDL_GetRenderDrawBlendMode(int *blendMode) |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2052 { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2053 SDL_Renderer *renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2054 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2055 if (!_this) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2056 SDL_UninitializedVideo(); |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2057 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2058 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2059 renderer = SDL_CurrentDisplay.current_renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2060 if (!renderer) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2061 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2062 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2063 *blendMode = renderer->blendMode; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2064 return 0; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2065 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2066 |
2901 | 2067 int |
2068 SDL_RenderPoint(int x, int y) | |
2069 { | |
2070 SDL_Renderer *renderer; | |
2071 SDL_Window *window; | |
2072 | |
2073 if (!_this) { | |
2074 SDL_UninitializedVideo(); | |
2075 return -1; | |
2076 } | |
2077 renderer = SDL_CurrentDisplay.current_renderer; | |
2078 if (!renderer) { | |
2079 return -1; | |
2080 } | |
2081 if (!renderer->RenderPoint) { | |
2082 SDL_Unsupported(); | |
2083 return -1; | |
2084 } | |
2085 window = SDL_GetWindowFromID(renderer->window); | |
2086 if (x < 0 || y < 0 || x >= window->w || y >= window->h) { | |
2087 return 0; | |
2088 } | |
2089 return renderer->RenderPoint(renderer, x, y); | |
2090 } | |
2091 | |
2092 int | |
2093 SDL_RenderLine(int x1, int y1, int x2, int y2) | |
2094 { | |
2095 SDL_Renderer *renderer; | |
2096 SDL_Window *window; | |
2097 SDL_Rect real_rect; | |
2098 | |
2099 if (x1 == x2 && y1 == y2) { | |
2100 return SDL_RenderPoint(x1, y1); | |
2101 } | |
2102 | |
2103 if (!_this) { | |
2104 SDL_UninitializedVideo(); | |
2105 return -1; | |
2106 } | |
2107 renderer = SDL_CurrentDisplay.current_renderer; | |
2108 if (!renderer) { | |
2109 return -1; | |
2110 } | |
2111 if (!renderer->RenderLine) { | |
2112 SDL_Unsupported(); | |
2113 return -1; | |
2114 } | |
2115 window = SDL_GetWindowFromID(renderer->window); | |
2909 | 2116 |
2901 | 2117 real_rect.x = 0; |
2118 real_rect.y = 0; | |
2119 real_rect.w = window->w; | |
2120 real_rect.h = window->h; | |
2910
27d8b12e0e8e
Fixed argument order to the line clipping routine
Sam Lantinga <slouken@libsdl.org>
parents:
2909
diff
changeset
|
2121 if (!SDL_IntersectRectAndLine(&real_rect, &x1, &y1, &x2, &y2)) { |
2909 | 2122 return (0); |
2901 | 2123 } |
2124 return renderer->RenderLine(renderer, x1, y1, x2, y2); | |
2125 } | |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2126 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2127 int |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2128 SDL_RenderFill(const SDL_Rect * rect) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2129 { |
2753 | 2130 SDL_Renderer *renderer; |
2131 SDL_Window *window; | |
2132 SDL_Rect real_rect; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2133 |
2753 | 2134 if (!_this) { |
2135 SDL_UninitializedVideo(); | |
2136 return -1; | |
2137 } | |
2138 renderer = SDL_CurrentDisplay.current_renderer; | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2139 if (!renderer) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2140 return -1; |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2141 } |
2814 | 2142 if (!renderer->RenderFill) { |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2143 SDL_Unsupported(); |
2753 | 2144 return -1; |
2145 } | |
2146 window = SDL_GetWindowFromID(renderer->window); | |
2908
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2147 |
2753 | 2148 real_rect.x = 0; |
2149 real_rect.y = 0; | |
2150 real_rect.w = window->w; | |
2151 real_rect.h = window->h; | |
2152 if (rect) { | |
2153 if (!SDL_IntersectRect(rect, &real_rect, &real_rect)) { | |
2154 return 0; | |
2155 } | |
2156 } | |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2157 return renderer->RenderFill(renderer, &real_rect); |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2158 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2159 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2160 int |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2161 SDL_RenderCopy(SDL_TextureID textureID, const SDL_Rect * srcrect, |
2753 | 2162 const SDL_Rect * dstrect) |
0 | 2163 { |
2753 | 2164 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
2165 SDL_Renderer *renderer; | |
2166 SDL_Window *window; | |
2167 SDL_Rect real_srcrect; | |
2168 SDL_Rect real_dstrect; | |
0 | 2169 |
2753 | 2170 if (!texture || texture->renderer != SDL_CurrentDisplay.current_renderer) { |
2171 return -1; | |
2172 } | |
2173 renderer = SDL_CurrentDisplay.current_renderer; | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2174 if (!renderer) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2175 return -1; |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2176 } |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2177 if (!renderer->RenderCopy) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2178 SDL_Unsupported(); |
2753 | 2179 return -1; |
2180 } | |
2181 window = SDL_GetWindowFromID(renderer->window); | |
2908
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2182 |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2183 real_srcrect.x = 0; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2184 real_srcrect.y = 0; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2185 real_srcrect.w = texture->w; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2186 real_srcrect.h = texture->h; |
2753 | 2187 if (srcrect) { |
2908
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2188 if (!SDL_IntersectRect(srcrect, &real_srcrect, &real_srcrect)) { |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2189 return 0; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2190 } |
2753 | 2191 } |
2908
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2192 |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2193 real_dstrect.x = 0; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2194 real_dstrect.y = 0; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2195 real_dstrect.w = window->w; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2196 real_dstrect.h = window->h; |
2753 | 2197 if (dstrect) { |
2908
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2198 if (!SDL_IntersectRect(dstrect, &real_dstrect, &real_dstrect)) { |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2199 return 0; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2200 } |
2912
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2201 /* Clip srcrect by the same amount as dstrect was clipped */ |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2202 if (dstrect->w != real_dstrect.w) { |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2203 int deltax = (real_dstrect.x - dstrect->x); |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2204 int deltaw = (real_dstrect.w - dstrect->w); |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2205 real_srcrect.x += (deltax * dstrect->w) / real_srcrect.w; |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2206 real_srcrect.w += (deltaw * dstrect->w) / real_srcrect.w; |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2207 } |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2208 if (dstrect->h != real_dstrect.h) { |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2209 int deltay = (real_dstrect.y - dstrect->y); |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2210 int deltah = (real_dstrect.h - dstrect->h); |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2211 real_srcrect.y += (deltay * dstrect->h) / real_srcrect.h; |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2212 real_srcrect.h += (deltah * dstrect->h) / real_srcrect.h; |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2213 } |
2753 | 2214 } |
0 | 2215 |
2753 | 2216 return renderer->RenderCopy(renderer, texture, &real_srcrect, |
2217 &real_dstrect); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2218 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2219 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2220 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2221 SDL_RenderPresent(void) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2222 { |
2753 | 2223 SDL_Renderer *renderer; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2224 |
2753 | 2225 if (!_this) { |
2226 SDL_UninitializedVideo(); | |
2227 return; | |
2228 } | |
2229 renderer = SDL_CurrentDisplay.current_renderer; | |
2230 if (!renderer || !renderer->RenderPresent) { | |
2231 return; | |
2232 } | |
2233 renderer->RenderPresent(renderer); | |
0 | 2234 } |
2235 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2236 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2237 SDL_DestroyTexture(SDL_TextureID textureID) |
0 | 2238 { |
2753 | 2239 int hash; |
2240 SDL_Texture *prev, *texture; | |
2241 SDL_Renderer *renderer; | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2242 |
2753 | 2243 if (!_this) { |
2244 SDL_UninitializedVideo(); | |
2245 return; | |
2246 } | |
2247 /* Look up the texture in the hash table */ | |
2248 hash = (textureID % SDL_arraysize(SDL_CurrentDisplay.textures)); | |
2249 prev = NULL; | |
2250 for (texture = SDL_CurrentDisplay.textures[hash]; texture; | |
2251 prev = texture, texture = texture->next) { | |
2252 if (texture->id == textureID) { | |
2253 break; | |
2254 } | |
2255 } | |
2256 if (!texture) { | |
2257 return; | |
2258 } | |
2259 /* Unlink the texture from the list */ | |
2260 if (prev) { | |
2261 prev->next = texture->next; | |
2262 } else { | |
2263 SDL_CurrentDisplay.textures[hash] = texture->next; | |
2264 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2265 |
2753 | 2266 /* Free the texture */ |
2267 renderer = texture->renderer; | |
2268 renderer->DestroyTexture(renderer, texture); | |
2269 SDL_free(texture); | |
0 | 2270 } |
2271 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2272 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2273 SDL_DestroyRenderer(SDL_WindowID windowID) |
0 | 2274 { |
2753 | 2275 SDL_Window *window = SDL_GetWindowFromID(windowID); |
2276 SDL_Renderer *renderer; | |
2277 int i; | |
0 | 2278 |
2753 | 2279 if (!window) { |
2280 return; | |
2281 } | |
2282 renderer = window->renderer; | |
2283 if (!renderer) { | |
2284 return; | |
2285 } | |
2286 /* Free existing textures for this renderer */ | |
2287 for (i = 0; i < SDL_arraysize(SDL_CurrentDisplay.textures); ++i) { | |
2288 SDL_Texture *texture; | |
2289 SDL_Texture *prev = NULL; | |
2290 SDL_Texture *next; | |
2291 for (texture = SDL_CurrentDisplay.textures[i]; texture; | |
2292 texture = next) { | |
2293 next = texture->next; | |
2294 if (texture->renderer == renderer) { | |
2295 if (prev) { | |
2296 prev->next = next; | |
2297 } else { | |
2298 SDL_CurrentDisplay.textures[i] = next; | |
2299 } | |
2300 renderer->DestroyTexture(renderer, texture); | |
2301 SDL_free(texture); | |
2302 } else { | |
2303 prev = texture; | |
2304 } | |
2305 } | |
2306 } | |
0 | 2307 |
2753 | 2308 /* Free the renderer instance */ |
2309 renderer->DestroyRenderer(renderer); | |
0 | 2310 |
2753 | 2311 /* Clear references */ |
2312 window->renderer = NULL; | |
2313 if (SDL_CurrentDisplay.current_renderer == renderer) { | |
2314 SDL_CurrentDisplay.current_renderer = NULL; | |
2315 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2316 } |
0 | 2317 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2318 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2319 SDL_VideoQuit(void) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2320 { |
2753 | 2321 int i, j; |
0 | 2322 |
2753 | 2323 if (!_this) { |
2324 return; | |
2325 } | |
2326 /* Halt event processing before doing anything else */ | |
2327 SDL_StopEventLoop(); | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2328 |
2753 | 2329 /* Clean up the system video */ |
2330 for (i = _this->num_displays; i--;) { | |
2331 SDL_VideoDisplay *display = &_this->displays[i]; | |
2332 for (j = display->num_windows; j--;) { | |
2333 SDL_DestroyWindow(display->windows[i].id); | |
2334 } | |
2335 if (display->windows) { | |
2336 SDL_free(display->windows); | |
2337 display->windows = NULL; | |
2338 } | |
2339 display->num_windows = 0; | |
2340 if (display->render_drivers) { | |
2341 SDL_free(display->render_drivers); | |
2342 display->render_drivers = NULL; | |
2343 } | |
2344 display->num_render_drivers = 0; | |
2345 } | |
2346 _this->VideoQuit(_this); | |
0 | 2347 |
2753 | 2348 for (i = _this->num_displays; i--;) { |
2349 SDL_VideoDisplay *display = &_this->displays[i]; | |
2350 for (j = display->num_display_modes; j--;) { | |
2351 if (display->display_modes[j].driverdata) { | |
2352 SDL_free(display->display_modes[j].driverdata); | |
2353 display->display_modes[j].driverdata = NULL; | |
2354 } | |
2355 } | |
2356 if (display->display_modes) { | |
2357 SDL_free(display->display_modes); | |
2358 display->display_modes = NULL; | |
2359 } | |
2360 if (display->desktop_mode.driverdata) { | |
2361 SDL_free(display->desktop_mode.driverdata); | |
2362 display->desktop_mode.driverdata = NULL; | |
2363 } | |
2364 if (display->palette) { | |
2365 SDL_FreePalette(display->palette); | |
2366 display->palette = NULL; | |
2367 } | |
2368 if (display->gamma) { | |
2369 SDL_free(display->gamma); | |
2370 display->gamma = NULL; | |
2371 } | |
2372 if (display->driverdata) { | |
2373 SDL_free(display->driverdata); | |
2374 display->driverdata = NULL; | |
2375 } | |
2376 } | |
2377 if (_this->displays) { | |
2378 SDL_free(_this->displays); | |
2379 _this->displays = NULL; | |
2380 } | |
2381 _this->free(_this); | |
2382 _this = NULL; | |
0 | 2383 } |
2384 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2385 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2386 SDL_GL_LoadLibrary(const char *path) |
0 | 2387 { |
2753 | 2388 int retval; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2389 |
2753 | 2390 if (!_this) { |
2391 SDL_UninitializedVideo(); | |
2392 return -1; | |
2393 } | |
2394 if (_this->GL_LoadLibrary) { | |
2395 retval = _this->GL_LoadLibrary(_this, path); | |
2396 } else { | |
2397 SDL_SetError("No dynamic GL support in video driver"); | |
2398 retval = -1; | |
2399 } | |
2400 return (retval); | |
0 | 2401 } |
2402 | |
2753 | 2403 void * |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2404 SDL_GL_GetProcAddress(const char *proc) |
0 | 2405 { |
2753 | 2406 void *func; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2407 |
2753 | 2408 if (!_this) { |
2409 SDL_UninitializedVideo(); | |
2410 return NULL; | |
2411 } | |
2412 func = NULL; | |
2413 if (_this->GL_GetProcAddress) { | |
2414 if (_this->gl_config.driver_loaded) { | |
2415 func = _this->GL_GetProcAddress(_this, proc); | |
2416 } else { | |
2417 SDL_SetError("No GL driver has been loaded"); | |
2418 } | |
2419 } else { | |
2420 SDL_SetError("No dynamic GL support in video driver"); | |
2421 } | |
2422 return func; | |
0 | 2423 } |
2424 | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2425 SDL_bool |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2426 SDL_GL_ExtensionSupported(const char *extension) |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2427 { |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2428 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES |
2753 | 2429 const GLubyte *(APIENTRY * glGetStringFunc) (GLenum); |
2430 const char *extensions; | |
2431 const char *start; | |
2432 const char *where, *terminator; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2433 |
2753 | 2434 /* Extension names should not have spaces. */ |
2435 where = SDL_strchr(extension, ' '); | |
2436 if (where || *extension == '\0') { | |
2437 return SDL_FALSE; | |
2438 } | |
2439 /* See if there's an environment variable override */ | |
2440 start = SDL_getenv(extension); | |
2441 if (start && *start == '0') { | |
2442 return SDL_FALSE; | |
2443 } | |
2444 /* Lookup the available extensions */ | |
2445 glGetStringFunc = SDL_GL_GetProcAddress("glGetString"); | |
2446 if (glGetStringFunc) { | |
2447 extensions = (const char *) glGetStringFunc(GL_EXTENSIONS); | |
2448 } else { | |
2449 extensions = NULL; | |
2450 } | |
2451 if (!extensions) { | |
2452 return SDL_FALSE; | |
2453 } | |
2454 /* | |
2455 * It takes a bit of care to be fool-proof about parsing the OpenGL | |
2456 * extensions string. Don't be fooled by sub-strings, etc. | |
2457 */ | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2458 |
2753 | 2459 start = extensions; |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2460 |
2753 | 2461 for (;;) { |
2462 where = SDL_strstr(start, extension); | |
2463 if (!where) | |
2464 break; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2465 |
2753 | 2466 terminator = where + SDL_strlen(extension); |
2467 if (where == start || *(where - 1) == ' ') | |
2468 if (*terminator == ' ' || *terminator == '\0') | |
2469 return SDL_TRUE; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2470 |
2753 | 2471 start = terminator; |
2472 } | |
2473 return SDL_FALSE; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2474 #else |
2753 | 2475 return SDL_FALSE; |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2476 #endif |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2477 } |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2478 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2479 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2480 SDL_GL_SetAttribute(SDL_GLattr attr, int value) |
0 | 2481 { |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2482 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES |
2753 | 2483 int retval; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2484 |
2753 | 2485 if (!_this) { |
2486 SDL_UninitializedVideo(); | |
2487 return -1; | |
2488 } | |
2489 retval = 0; | |
2490 switch (attr) { | |
2491 case SDL_GL_RED_SIZE: | |
2492 _this->gl_config.red_size = value; | |
2493 break; | |
2494 case SDL_GL_GREEN_SIZE: | |
2495 _this->gl_config.green_size = value; | |
2496 break; | |
2497 case SDL_GL_BLUE_SIZE: | |
2498 _this->gl_config.blue_size = value; | |
2499 break; | |
2500 case SDL_GL_ALPHA_SIZE: | |
2501 _this->gl_config.alpha_size = value; | |
2502 break; | |
2503 case SDL_GL_DOUBLEBUFFER: | |
2504 _this->gl_config.double_buffer = value; | |
2505 break; | |
2506 case SDL_GL_BUFFER_SIZE: | |
2507 _this->gl_config.buffer_size = value; | |
2508 break; | |
2509 case SDL_GL_DEPTH_SIZE: | |
2510 _this->gl_config.depth_size = value; | |
2511 break; | |
2512 case SDL_GL_STENCIL_SIZE: | |
2513 _this->gl_config.stencil_size = value; | |
2514 break; | |
2515 case SDL_GL_ACCUM_RED_SIZE: | |
2516 _this->gl_config.accum_red_size = value; | |
2517 break; | |
2518 case SDL_GL_ACCUM_GREEN_SIZE: | |
2519 _this->gl_config.accum_green_size = value; | |
2520 break; | |
2521 case SDL_GL_ACCUM_BLUE_SIZE: | |
2522 _this->gl_config.accum_blue_size = value; | |
2523 break; | |
2524 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2525 _this->gl_config.accum_alpha_size = value; | |
2526 break; | |
2527 case SDL_GL_STEREO: | |
2528 _this->gl_config.stereo = value; | |
2529 break; | |
2530 case SDL_GL_MULTISAMPLEBUFFERS: | |
2531 _this->gl_config.multisamplebuffers = value; | |
2532 break; | |
2533 case SDL_GL_MULTISAMPLESAMPLES: | |
2534 _this->gl_config.multisamplesamples = value; | |
2535 break; | |
2536 case SDL_GL_ACCELERATED_VISUAL: | |
2537 _this->gl_config.accelerated = value; | |
2538 break; | |
2539 case SDL_GL_RETAINED_BACKING: | |
2540 _this->gl_config.retained_backing = value; | |
2541 break; | |
2542 default: | |
2543 SDL_SetError("Unknown OpenGL attribute"); | |
2544 retval = -1; | |
2545 break; | |
2546 } | |
2547 return retval; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2548 #else |
2753 | 2549 SDL_Unsupported(); |
2550 return -1; | |
2551 #endif /* SDL_VIDEO_OPENGL */ | |
0 | 2552 } |
2553 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2554 int |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2555 SDL_GL_GetAttribute(SDL_GLattr attr, int *value) |
0 | 2556 { |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2557 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES |
2753 | 2558 void (APIENTRY * glGetIntegervFunc) (GLenum pname, GLint * params); |
2559 GLenum attrib = 0; | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2560 |
2753 | 2561 glGetIntegervFunc = SDL_GL_GetProcAddress("glGetIntegerv"); |
2562 if (!glGetIntegervFunc) { | |
2563 return -1; | |
2564 } | |
2565 switch (attr) { | |
2566 case SDL_GL_RETAINED_BACKING: | |
2567 *value = _this->gl_config.retained_backing; | |
2568 return 0; | |
2569 case SDL_GL_RED_SIZE: | |
2570 attrib = GL_RED_BITS; | |
2571 break; | |
2572 case SDL_GL_BLUE_SIZE: | |
2573 attrib = GL_BLUE_BITS; | |
2574 break; | |
2575 case SDL_GL_GREEN_SIZE: | |
2576 attrib = GL_GREEN_BITS; | |
2577 break; | |
2578 case SDL_GL_ALPHA_SIZE: | |
2579 attrib = GL_ALPHA_BITS; | |
2580 break; | |
2581 case SDL_GL_DOUBLEBUFFER: | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2582 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2583 attrib = GL_DOUBLEBUFFER; |
2584 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2585 #else |
2753 | 2586 /* |
2587 * I believe double buffering is the only option in OpenGL ES | |
2588 * -- in any case, GL_DOUBLEBUFFER doesn't exist | |
2589 */ | |
2590 *value = 1; | |
2591 return 0; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2592 #endif |
2753 | 2593 case SDL_GL_DEPTH_SIZE: |
2594 attrib = GL_DEPTH_BITS; | |
2595 break; | |
2596 case SDL_GL_STENCIL_SIZE: | |
2597 attrib = GL_STENCIL_BITS; | |
2598 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2599 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2600 case SDL_GL_ACCUM_RED_SIZE: |
2601 attrib = GL_ACCUM_RED_BITS; | |
2602 break; | |
2603 case SDL_GL_ACCUM_GREEN_SIZE: | |
2604 attrib = GL_ACCUM_GREEN_BITS; | |
2605 break; | |
2606 case SDL_GL_ACCUM_BLUE_SIZE: | |
2607 attrib = GL_ACCUM_BLUE_BITS; | |
2608 break; | |
2609 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2610 attrib = GL_ACCUM_ALPHA_BITS; | |
2611 break; | |
2612 case SDL_GL_STEREO: | |
2613 attrib = GL_STEREO; | |
2614 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2615 #else |
2753 | 2616 case SDL_GL_ACCUM_RED_SIZE: |
2617 case SDL_GL_ACCUM_GREEN_SIZE: | |
2618 case SDL_GL_ACCUM_BLUE_SIZE: | |
2619 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2620 case SDL_GL_STEREO: | |
2621 /* none of these are supported in OpenGL ES */ | |
2622 *value = 0; | |
2623 return 0; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2624 #endif |
2753 | 2625 case SDL_GL_MULTISAMPLEBUFFERS: |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2626 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2627 attrib = GL_SAMPLE_BUFFERS_ARB; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2628 #else |
2753 | 2629 attrib = GL_SAMPLE_BUFFERS; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2630 #endif |
2753 | 2631 break; |
2632 case SDL_GL_MULTISAMPLESAMPLES: | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2633 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2634 attrib = GL_SAMPLES_ARB; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2635 #else |
2753 | 2636 attrib = GL_SAMPLES; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2637 #endif |
2753 | 2638 break; |
2639 case SDL_GL_BUFFER_SIZE: | |
2640 { | |
2641 GLint bits = 0; | |
2642 GLint component; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2643 |
2753 | 2644 /* |
2645 * there doesn't seem to be a single flag in OpenGL | |
2646 * for this! | |
2647 */ | |
2648 glGetIntegervFunc(GL_RED_BITS, &component); | |
2649 bits += component; | |
2650 glGetIntegervFunc(GL_GREEN_BITS, &component); | |
2651 bits += component; | |
2652 glGetIntegervFunc(GL_BLUE_BITS, &component); | |
2653 bits += component; | |
2654 glGetIntegervFunc(GL_ALPHA_BITS, &component); | |
2655 bits += component; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2656 |
2753 | 2657 *value = bits; |
2658 return 0; | |
2659 } | |
2660 case SDL_GL_ACCELERATED_VISUAL: | |
2661 { | |
2662 /* FIXME: How do we get this information? */ | |
2663 *value = (_this->gl_config.accelerated != 0); | |
2664 return 0; | |
2665 } | |
2666 default: | |
2667 SDL_SetError("Unknown OpenGL attribute"); | |
2668 return -1; | |
2669 } | |
0 | 2670 |
2753 | 2671 glGetIntegervFunc(attrib, (GLint *) value); |
2672 return 0; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2673 #else |
2753 | 2674 SDL_Unsupported(); |
2675 return -1; | |
2676 #endif /* SDL_VIDEO_OPENGL */ | |
0 | 2677 } |
2678 | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2679 SDL_GLContext |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2680 SDL_GL_CreateContext(SDL_WindowID windowID) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2681 { |
2753 | 2682 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2683 |
2753 | 2684 if (!window) { |
2685 return NULL; | |
2686 } | |
2687 if (!(window->flags & SDL_WINDOW_OPENGL)) { | |
2688 SDL_SetError("The specified window isn't an OpenGL window"); | |
2689 return NULL; | |
2690 } | |
2691 return _this->GL_CreateContext(_this, window); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2692 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2693 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2694 int |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2695 SDL_GL_MakeCurrent(SDL_WindowID windowID, SDL_GLContext context) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2696 { |
2753 | 2697 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2698 |
2753 | 2699 if (window && !(window->flags & SDL_WINDOW_OPENGL)) { |
2700 SDL_SetError("The specified window isn't an OpenGL window"); | |
2701 return -1; | |
2702 } | |
2703 if (!context) { | |
2704 window = NULL; | |
2705 } | |
2706 return _this->GL_MakeCurrent(_this, window, context); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2707 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2708 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2709 int |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2710 SDL_GL_SetSwapInterval(int interval) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2711 { |
2753 | 2712 if (!_this) { |
2713 SDL_UninitializedVideo(); | |
2714 return -1; | |
2715 } | |
2716 if (_this->GL_SetSwapInterval) { | |
2717 return _this->GL_SetSwapInterval(_this, interval); | |
2718 } else { | |
2719 SDL_SetError("Setting the swap interval is not supported"); | |
2720 return -1; | |
2721 } | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2722 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2723 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2724 int |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2725 SDL_GL_GetSwapInterval(void) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2726 { |
2753 | 2727 if (!_this) { |
2728 SDL_UninitializedVideo(); | |
2729 return -1; | |
2730 } | |
2731 if (_this->GL_GetSwapInterval) { | |
2732 return _this->GL_GetSwapInterval(_this); | |
2733 } else { | |
2734 SDL_SetError("Getting the swap interval is not supported"); | |
2735 return -1; | |
2736 } | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2737 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2738 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2739 void |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2740 SDL_GL_SwapWindow(SDL_WindowID windowID) |
0 | 2741 { |
2753 | 2742 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2743 |
2753 | 2744 if (!window) { |
2745 return; | |
2746 } | |
2747 if (!(window->flags & SDL_WINDOW_OPENGL)) { | |
2748 SDL_SetError("The specified window isn't an OpenGL window"); | |
2749 return; | |
2750 } | |
2751 _this->GL_SwapWindow(_this, window); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2752 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2753 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2754 void |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2755 SDL_GL_DeleteContext(SDL_GLContext context) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2756 { |
2753 | 2757 if (!_this || !context) { |
2758 return; | |
2759 } | |
2760 _this->GL_MakeCurrent(_this, NULL, NULL); | |
2761 _this->GL_DeleteContext(_this, context); | |
0 | 2762 } |
2763 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2764 #if 0 // FIXME |
2744
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2765 /* |
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2766 * Utility function used by SDL_WM_SetIcon(); flags & 1 for color key, flags |
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2767 * & 2 for alpha channel. |
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2768 */ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2769 static void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2770 CreateMaskFromColorKeyOrAlpha(SDL_Surface * icon, Uint8 * mask, int flags) |
0 | 2771 { |
2753 | 2772 int x, y; |
2773 Uint32 colorkey; | |
0 | 2774 #define SET_MASKBIT(icon, x, y, mask) \ |
2775 mask[(y*((icon->w+7)/8))+(x/8)] &= ~(0x01<<(7-(x%8))) | |
2776 | |
2753 | 2777 colorkey = icon->format->colorkey; |
2778 switch (icon->format->BytesPerPixel) { | |
2779 case 1: | |
2780 { | |
2781 Uint8 *pixels; | |
2782 for (y = 0; y < icon->h; ++y) { | |
2783 pixels = (Uint8 *) icon->pixels + y * icon->pitch; | |
2784 for (x = 0; x < icon->w; ++x) { | |
2785 if (*pixels++ == colorkey) { | |
2786 SET_MASKBIT(icon, x, y, mask); | |
2787 } | |
2788 } | |
2789 } | |
2790 } | |
2791 break; | |
0 | 2792 |
2753 | 2793 case 2: |
2794 { | |
2795 Uint16 *pixels; | |
2796 for (y = 0; y < icon->h; ++y) { | |
2797 pixels = (Uint16 *) icon->pixels + y * icon->pitch / 2; | |
2798 for (x = 0; x < icon->w; ++x) { | |
2799 if ((flags & 1) && *pixels == colorkey) { | |
2800 SET_MASKBIT(icon, x, y, mask); | |
2801 } else if ((flags & 2) | |
2802 && (*pixels & icon->format->Amask) == 0) { | |
2803 SET_MASKBIT(icon, x, y, mask); | |
2804 } | |
2805 pixels++; | |
2806 } | |
2807 } | |
2808 } | |
2809 break; | |
0 | 2810 |
2753 | 2811 case 4: |
2812 { | |
2813 Uint32 *pixels; | |
2814 for (y = 0; y < icon->h; ++y) { | |
2815 pixels = (Uint32 *) icon->pixels + y * icon->pitch / 4; | |
2816 for (x = 0; x < icon->w; ++x) { | |
2817 if ((flags & 1) && *pixels == colorkey) { | |
2818 SET_MASKBIT(icon, x, y, mask); | |
2819 } else if ((flags & 2) | |
2820 && (*pixels & icon->format->Amask) == 0) { | |
2821 SET_MASKBIT(icon, x, y, mask); | |
2822 } | |
2823 pixels++; | |
2824 } | |
2825 } | |
2826 } | |
2827 break; | |
2828 } | |
0 | 2829 } |
2830 | |
2831 /* | |
2832 * Sets the window manager icon for the display window. | |
2833 */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2834 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2835 SDL_WM_SetIcon(SDL_Surface * icon, Uint8 * mask) |
0 | 2836 { |
2753 | 2837 if (icon && _this->SetIcon) { |
2838 /* Generate a mask if necessary, and create the icon! */ | |
2839 if (mask == NULL) { | |
2840 int mask_len = icon->h * (icon->w + 7) / 8; | |
2841 int flags = 0; | |
2842 mask = (Uint8 *) SDL_malloc(mask_len); | |
2843 if (mask == NULL) { | |
2844 return; | |
2845 } | |
2846 SDL_memset(mask, ~0, mask_len); | |
2847 if (icon->flags & SDL_SRCCOLORKEY) | |
2848 flags |= 1; | |
2849 if (icon->flags & SDL_SRCALPHA) | |
2850 flags |= 2; | |
2851 if (flags) { | |
2852 CreateMaskFromColorKeyOrAlpha(icon, mask, flags); | |
2853 } | |
2854 _this->SetIcon(_this, icon, mask); | |
2855 SDL_free(mask); | |
2856 } else { | |
2857 _this->SetIcon(_this, icon, mask); | |
2858 } | |
2859 } | |
0 | 2860 } |
2861 #endif | |
2862 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2863 SDL_bool |
2753 | 2864 SDL_GetWindowWMInfo(SDL_WindowID windowID, struct SDL_SysWMinfo *info) |
0 | 2865 { |
2753 | 2866 SDL_Window *window = SDL_GetWindowFromID(windowID); |
0 | 2867 |
2753 | 2868 if (!window || !_this->GetWindowWMInfo) { |
2869 return SDL_FALSE; | |
2870 } | |
2871 return (_this->GetWindowWMInfo(_this, window, info)); | |
0 | 2872 } |
2873 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2874 /* vi: set ts=4 sw=4 expandtab: */ |