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