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