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