Mercurial > sdl-ios-xcode
annotate src/video/SDL_video.c @ 5175:51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Also experimented with texture rectangle updates, but I think at this point the full rect update gives the most consistent results.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 04 Feb 2011 12:24:28 -0800 |
parents | ededa1ccf91c |
children | 82a48f4d65f6 |
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" | |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
31 #include "../events/SDL_events_c.h" |
0 | 32 |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
33 #if SDL_VIDEO_OPENGL_ES |
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
34 #include "SDL_opengles.h" |
2753 | 35 #endif /* SDL_VIDEO_OPENGL_ES */ |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
36 |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
37 #if SDL_VIDEO_OPENGL |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
38 #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
|
39 #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
|
40 |
69d9db65f248
Merged the Windows custom window system hooks into the union used by X11.
Sam Lantinga <slouken@libsdl.org>
parents:
4897
diff
changeset
|
41 #include "SDL_syswm.h" |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
42 |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
43 /* On Windows, windows.h defines CreateWindow */ |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
44 #ifdef CreateWindow |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
45 #undef CreateWindow |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
46 #endif |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
47 |
0 | 48 /* 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
|
49 static VideoBootStrap *bootstrap[] = { |
1931
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
1930
diff
changeset
|
50 #if SDL_VIDEO_DRIVER_COCOA |
2753 | 51 &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
|
52 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
53 #if SDL_VIDEO_DRIVER_X11 |
2753 | 54 &X11_bootstrap, |
0 | 55 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
56 #if SDL_VIDEO_DRIVER_DIRECTFB |
2753 | 57 &DirectFB_bootstrap, |
167
cb384ef627f6
Added support for DirectFB video on Linux (thanks Denis!)
Sam Lantinga <slouken@libsdl.org>
parents:
125
diff
changeset
|
58 #endif |
5062 | 59 #if SDL_VIDEO_DRIVER_WINDOWS |
60 &WINDOWS_bootstrap, | |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
61 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
62 #if SDL_VIDEO_DRIVER_BWINDOW |
2753 | 63 &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
|
64 #endif |
5153
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
5152
diff
changeset
|
65 #if SDL_VIDEO_DRIVER_PANDORA |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
5152
diff
changeset
|
66 &PND_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
67 #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
|
68 #if SDL_VIDEO_DRIVER_NDS |
2753 | 69 &NDS_bootstrap, |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2702
diff
changeset
|
70 #endif |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
71 #if SDL_VIDEO_DRIVER_UIKIT |
2753 | 72 &UIKIT_bootstrap, |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
73 #endif |
5153
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
5152
diff
changeset
|
74 #if SDL_VIDEO_DRIVER_ANDROID |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
5152
diff
changeset
|
75 &Android_bootstrap, |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
5152
diff
changeset
|
76 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
77 #if SDL_VIDEO_DRIVER_DUMMY |
2753 | 78 &DUMMY_bootstrap, |
610
95433459fbd2
Date: Mon, 14 Apr 2003 22:08:27 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
580
diff
changeset
|
79 #endif |
2753 | 80 NULL |
0 | 81 }; |
173
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
167
diff
changeset
|
82 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
83 static SDL_VideoDevice *_this = NULL; |
0 | 84 |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
85 #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
|
86 if (!_this) { \ |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
87 SDL_UninitializedVideo(); \ |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
88 return retval; \ |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
89 } \ |
3701
fb905d5674cc
Fixed showing and hiding fullscreen windows
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
90 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
|
91 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
|
92 return retval; \ |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
93 } |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
94 |
0 | 95 /* Various local functions */ |
2876 | 96 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
|
97 |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
98 /* Support for framebuffer emulation using an accelerated renderer */ |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
99 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
100 #define SDL_WINDOWTEXTUREDATA "_SDL_WindowTextureData" |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
101 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
102 typedef struct { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
103 SDL_Renderer *renderer; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
104 SDL_Texture *texture; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
105 void *pixels; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
106 int pitch; |
5175
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
107 int bytes_per_pixel; |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
108 } SDL_WindowTextureData; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
109 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
110 static int |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
111 SDL_CreateWindowTexture(_THIS, SDL_Window * window, Uint32 * format, void ** pixels, int *pitch) |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
112 { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
113 SDL_WindowTextureData *data; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
114 SDL_Renderer *renderer; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
115 SDL_RendererInfo info; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
116 Uint32 i; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
117 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
118 data = SDL_GetWindowData(window, SDL_WINDOWTEXTUREDATA); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
119 if (!data) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
120 data = (SDL_WindowTextureData *)SDL_calloc(1, sizeof(*data)); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
121 if (!data) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
122 SDL_OutOfMemory(); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
123 return -1; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
124 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
125 SDL_SetWindowData(window, SDL_WINDOWTEXTUREDATA, data); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
126 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
127 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
128 renderer = data->renderer; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
129 if (!renderer) { |
5171
db487f28419e
Fixed recursion crash when setting SDL_VIDEO_RENDERER=software
Sam Lantinga <slouken@libsdl.org>
parents:
5169
diff
changeset
|
130 SDL_RendererInfo info; |
db487f28419e
Fixed recursion crash when setting SDL_VIDEO_RENDERER=software
Sam Lantinga <slouken@libsdl.org>
parents:
5169
diff
changeset
|
131 int i; |
db487f28419e
Fixed recursion crash when setting SDL_VIDEO_RENDERER=software
Sam Lantinga <slouken@libsdl.org>
parents:
5169
diff
changeset
|
132 |
db487f28419e
Fixed recursion crash when setting SDL_VIDEO_RENDERER=software
Sam Lantinga <slouken@libsdl.org>
parents:
5169
diff
changeset
|
133 /* We need to make sure we don't get a software renderer */ |
db487f28419e
Fixed recursion crash when setting SDL_VIDEO_RENDERER=software
Sam Lantinga <slouken@libsdl.org>
parents:
5169
diff
changeset
|
134 for (i = 0; i < SDL_GetNumRenderDrivers(); ++i) { |
db487f28419e
Fixed recursion crash when setting SDL_VIDEO_RENDERER=software
Sam Lantinga <slouken@libsdl.org>
parents:
5169
diff
changeset
|
135 SDL_GetRenderDriverInfo(i, &info); |
db487f28419e
Fixed recursion crash when setting SDL_VIDEO_RENDERER=software
Sam Lantinga <slouken@libsdl.org>
parents:
5169
diff
changeset
|
136 if (SDL_strcmp(info.name, "software") != 0) { |
db487f28419e
Fixed recursion crash when setting SDL_VIDEO_RENDERER=software
Sam Lantinga <slouken@libsdl.org>
parents:
5169
diff
changeset
|
137 renderer = SDL_CreateRenderer(window, i, 0); |
db487f28419e
Fixed recursion crash when setting SDL_VIDEO_RENDERER=software
Sam Lantinga <slouken@libsdl.org>
parents:
5169
diff
changeset
|
138 if (renderer) { |
db487f28419e
Fixed recursion crash when setting SDL_VIDEO_RENDERER=software
Sam Lantinga <slouken@libsdl.org>
parents:
5169
diff
changeset
|
139 break; |
db487f28419e
Fixed recursion crash when setting SDL_VIDEO_RENDERER=software
Sam Lantinga <slouken@libsdl.org>
parents:
5169
diff
changeset
|
140 } |
db487f28419e
Fixed recursion crash when setting SDL_VIDEO_RENDERER=software
Sam Lantinga <slouken@libsdl.org>
parents:
5169
diff
changeset
|
141 } |
db487f28419e
Fixed recursion crash when setting SDL_VIDEO_RENDERER=software
Sam Lantinga <slouken@libsdl.org>
parents:
5169
diff
changeset
|
142 } |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
143 if (!renderer) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
144 return -1; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
145 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
146 data->renderer = renderer; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
147 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
148 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
149 /* Free any old texture and pixel data */ |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
150 if (data->texture) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
151 SDL_DestroyTexture(data->texture); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
152 data->texture = NULL; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
153 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
154 if (data->pixels) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
155 SDL_free(data->pixels); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
156 data->pixels = NULL; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
157 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
158 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
159 if (SDL_GetRendererInfo(renderer, &info) < 0) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
160 return -1; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
161 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
162 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
163 /* Find the first format without an alpha channel */ |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
164 *format = info.texture_formats[0]; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
165 for (i = 0; i < info.num_texture_formats; ++i) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
166 if (!SDL_ISPIXELFORMAT_ALPHA(info.texture_formats[i])) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
167 *format = info.texture_formats[i]; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
168 break; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
169 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
170 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
171 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
172 data->texture = SDL_CreateTexture(renderer, *format, |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
173 SDL_TEXTUREACCESS_STREAMING, |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
174 window->w, window->h); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
175 if (!data->texture) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
176 return -1; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
177 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
178 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
179 /* Create framebuffer data */ |
5175
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
180 data->bytes_per_pixel = SDL_BYTESPERPIXEL(*format); |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
181 data->pitch = (((window->w * data->bytes_per_pixel) + 3) & ~3); |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
182 data->pixels = SDL_malloc(window->h * data->pitch); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
183 if (!data->pixels) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
184 SDL_OutOfMemory(); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
185 return -1; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
186 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
187 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
188 *pixels = data->pixels; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
189 *pitch = data->pitch; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
190 return 0; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
191 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
192 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
193 static int |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
194 SDL_UpdateWindowTexture(_THIS, SDL_Window * window, int numrects, SDL_Rect * rects) |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
195 { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
196 SDL_WindowTextureData *data; |
5175
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
197 #ifdef UPDATE_TEXTURE_SUBRECTS |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
198 void *src, *dst; |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
199 int src_pitch; |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
200 int dst_pitch; |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
201 int i, row, length; |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
202 #endif |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
203 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
204 data = SDL_GetWindowData(window, SDL_WINDOWTEXTUREDATA); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
205 if (!data || !data->texture) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
206 SDL_SetError("No window texture data"); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
207 return -1; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
208 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
209 |
5175
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
210 #ifdef UPDATE_TEXTURE_SUBRECTS |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
211 src_pitch = data->pitch; |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
212 for (i = 0; i < numrects; ++i) { |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
213 src = (void *)((Uint8 *)data->pixels + |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
214 rects[i].y * src_pitch + |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
215 rects[i].x * data->bytes_per_pixel); |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
216 if (SDL_LockTexture(data->texture, &rects[i], &dst, &dst_pitch) < 0) { |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
217 return -1; |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
218 } |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
219 length = rects[i].w * data->bytes_per_pixel; |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
220 for (row = rects[i].h; row--; ) { |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
221 SDL_memcpy(dst, src, length); |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
222 src = (Uint8*)src + src_pitch; |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
223 dst = (Uint8*)dst + dst_pitch; |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
224 } |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
225 SDL_UnlockTexture(data->texture); |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
226 } |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
227 #else |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
228 if (SDL_UpdateTexture(data->texture, NULL, data->pixels, data->pitch) < 0) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
229 return -1; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
230 } |
5175
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
231 #endif |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
232 |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
233 if (SDL_RenderCopy(data->renderer, data->texture, NULL, NULL) < 0) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
234 return -1; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
235 } |
5175
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
236 |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
237 SDL_RenderPresent(data->renderer); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
238 return 0; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
239 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
240 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
241 static void |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
242 SDL_DestroyWindowTexture(_THIS, SDL_Window * window) |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
243 { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
244 SDL_WindowTextureData *data; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
245 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
246 data = SDL_SetWindowData(window, SDL_WINDOWTEXTUREDATA, NULL); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
247 if (!data) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
248 return; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
249 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
250 if (data->texture) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
251 SDL_DestroyTexture(data->texture); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
252 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
253 if (data->renderer) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
254 SDL_DestroyRenderer(data->renderer); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
255 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
256 if (data->pixels) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
257 SDL_free(data->pixels); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
258 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
259 SDL_free(data); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
260 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
261 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
262 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
263 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
|
264 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
|
265 { |
2753 | 266 SDL_DisplayMode a = *(const SDL_DisplayMode *) A; |
267 SDL_DisplayMode b = *(const SDL_DisplayMode *) B; | |
0 | 268 |
2753 | 269 if (a.w != b.w) { |
270 return b.w - a.w; | |
271 } | |
272 if (a.h != b.h) { | |
273 return b.h - a.h; | |
274 } | |
275 if (SDL_BITSPERPIXEL(a.format) != SDL_BITSPERPIXEL(b.format)) { | |
276 return SDL_BITSPERPIXEL(b.format) - SDL_BITSPERPIXEL(a.format); | |
277 } | |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
278 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
|
279 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
|
280 } |
2753 | 281 if (a.refresh_rate != b.refresh_rate) { |
282 return b.refresh_rate - a.refresh_rate; | |
283 } | |
284 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
|
285 } |
0 | 286 |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
287 static void |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
288 SDL_UninitializedVideo() |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
289 { |
2753 | 290 SDL_SetError("Video subsystem has not been initialized"); |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
291 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
292 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
293 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
|
294 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
|
295 { |
2753 | 296 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
|
297 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
298 |
2753 | 299 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
|
300 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
|
301 { |
2753 | 302 if (index >= 0 && index < SDL_GetNumVideoDrivers()) { |
303 return bootstrap[index]->name; | |
304 } | |
305 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
|
306 } |
0 | 307 |
308 /* | |
309 * Initialize the video and event subsystems -- determine native pixel format | |
310 */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
311 int |
5125
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
312 SDL_VideoInit(const char *driver_name) |
0 | 313 { |
2753 | 314 SDL_VideoDevice *video; |
315 int index; | |
316 int i; | |
0 | 317 |
3694 | 318 /* Check to make sure we don't overwrite '_this' */ |
319 if (_this != NULL) { | |
320 SDL_VideoQuit(); | |
321 } | |
322 | |
2753 | 323 /* Start the event loop */ |
5125
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
324 if (SDL_StartEventLoop() < 0 || |
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
325 SDL_KeyboardInit() < 0 || |
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
326 SDL_MouseInit() < 0 || |
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
327 SDL_TouchInit() < 0 || |
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
328 SDL_QuitInit() < 0) { |
2753 | 329 return -1; |
330 } | |
3694 | 331 |
2753 | 332 /* Select the proper video driver */ |
333 index = 0; | |
334 video = NULL; | |
335 if (driver_name == NULL) { | |
336 driver_name = SDL_getenv("SDL_VIDEODRIVER"); | |
337 } | |
338 if (driver_name != NULL) { | |
339 for (i = 0; bootstrap[i]; ++i) { | |
340 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
|
341 video = bootstrap[i]->create(index); |
2753 | 342 break; |
343 } | |
344 } | |
345 } else { | |
346 for (i = 0; bootstrap[i]; ++i) { | |
347 if (bootstrap[i]->available()) { | |
348 video = bootstrap[i]->create(index); | |
349 if (video != NULL) { | |
350 break; | |
351 } | |
352 } | |
353 } | |
354 } | |
355 if (video == NULL) { | |
356 if (driver_name) { | |
357 SDL_SetError("%s not available", driver_name); | |
358 } else { | |
359 SDL_SetError("No available video device"); | |
360 } | |
361 return -1; | |
362 } | |
363 _this = video; | |
364 _this->name = bootstrap[i]->name; | |
365 _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
|
366 |
0 | 367 |
2753 | 368 /* Set some very sane GL defaults */ |
369 _this->gl_config.driver_loaded = 0; | |
370 _this->gl_config.dll_handle = NULL; | |
371 _this->gl_config.red_size = 3; | |
372 _this->gl_config.green_size = 3; | |
373 _this->gl_config.blue_size = 2; | |
374 _this->gl_config.alpha_size = 0; | |
375 _this->gl_config.buffer_size = 0; | |
376 _this->gl_config.depth_size = 16; | |
377 _this->gl_config.stencil_size = 0; | |
378 _this->gl_config.double_buffer = 1; | |
379 _this->gl_config.accum_red_size = 0; | |
380 _this->gl_config.accum_green_size = 0; | |
381 _this->gl_config.accum_blue_size = 0; | |
382 _this->gl_config.accum_alpha_size = 0; | |
383 _this->gl_config.stereo = 0; | |
384 _this->gl_config.multisamplebuffers = 0; | |
385 _this->gl_config.multisamplesamples = 0; | |
386 _this->gl_config.retained_backing = 1; | |
3571
19691cebb866
Default to allow either accelerated or not
Sam Lantinga <slouken@libsdl.org>
parents:
3570
diff
changeset
|
387 _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
|
388 _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
|
389 _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
|
390 |
2753 | 391 /* Initialize the video subsystem */ |
392 if (_this->VideoInit(_this) < 0) { | |
393 SDL_VideoQuit(); | |
394 return -1; | |
395 } | |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
396 |
2753 | 397 /* Make sure some displays were added */ |
398 if (_this->num_displays == 0) { | |
399 SDL_SetError("The video driver did not add any displays"); | |
400 SDL_VideoQuit(); | |
401 return (-1); | |
402 } | |
0 | 403 |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
404 /* Add the renderer framebuffer emulation if needed */ |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
405 if (!_this->CreateWindowFramebuffer) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
406 _this->CreateWindowFramebuffer = SDL_CreateWindowTexture; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
407 _this->UpdateWindowFramebuffer = SDL_UpdateWindowTexture; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
408 _this->DestroyWindowFramebuffer = SDL_DestroyWindowTexture; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
409 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
410 |
2753 | 411 /* We're ready to go! */ |
412 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
|
413 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
414 |
2753 | 415 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
|
416 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
|
417 { |
2753 | 418 if (!_this) { |
419 SDL_UninitializedVideo(); | |
420 return NULL; | |
421 } | |
422 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
|
423 } |
0 | 424 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
425 SDL_VideoDevice * |
4472
791b3256fb22
Mostly cleaned up warnings with -Wmissing-prototypes
Sam Lantinga <slouken@libsdl.org>
parents:
4433
diff
changeset
|
426 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
|
427 { |
2753 | 428 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
|
429 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
430 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
431 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
|
432 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
|
433 { |
2753 | 434 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
|
435 |
2753 | 436 SDL_zero(display); |
437 if (desktop_mode) { | |
438 display.desktop_mode = *desktop_mode; | |
439 } | |
440 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
|
441 |
2753 | 442 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
|
443 } |
0 | 444 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
445 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
|
446 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
|
447 { |
2753 | 448 SDL_VideoDisplay *displays; |
449 int index = -1; | |
0 | 450 |
2753 | 451 displays = |
452 SDL_realloc(_this->displays, | |
453 (_this->num_displays + 1) * sizeof(*displays)); | |
454 if (displays) { | |
455 index = _this->num_displays++; | |
456 displays[index] = *display; | |
457 displays[index].device = _this; | |
458 _this->displays = displays; | |
459 } else { | |
460 SDL_OutOfMemory(); | |
461 } | |
462 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
|
463 } |
0 | 464 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
465 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
|
466 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
|
467 { |
2753 | 468 if (!_this) { |
469 SDL_UninitializedVideo(); | |
470 return 0; | |
471 } | |
472 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
|
473 } |
0 | 474 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
475 int |
3528
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
476 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
|
477 { |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
478 if (!_this) { |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
479 SDL_UninitializedVideo(); |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
480 return -1; |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
481 } |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
482 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
|
483 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
|
484 _this->num_displays - 1); |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
485 return -1; |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
486 } |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
487 if (rect) { |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
488 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
|
489 |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
490 if (_this->GetDisplayBounds) { |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
491 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
|
492 return -1; |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
493 } |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
494 } else { |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
495 /* 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
|
496 if (index == 0) { |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
497 rect->x = 0; |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
498 rect->y = 0; |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
499 } else { |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
500 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
|
501 rect->x += rect->w; |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
502 } |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
503 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
|
504 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
|
505 } |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
506 } |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
507 return 0; |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
508 } |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
509 |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3526
diff
changeset
|
510 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
|
511 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
|
512 { |
2753 | 513 if (!_this) { |
514 SDL_UninitializedVideo(); | |
515 return (-1); | |
516 } | |
517 if (index < 0 || index >= _this->num_displays) { | |
518 SDL_SetError("index must be in the range 0 - %d", | |
519 _this->num_displays - 1); | |
520 return -1; | |
521 } | |
522 _this->current_display = index; | |
523 return 0; | |
1963
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
524 } |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
525 |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
526 int |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
527 SDL_GetCurrentVideoDisplay(void) |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
528 { |
2753 | 529 if (!_this) { |
530 SDL_UninitializedVideo(); | |
531 return (-1); | |
532 } | |
533 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
|
534 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
535 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
536 SDL_bool |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
537 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
|
538 { |
2753 | 539 SDL_DisplayMode *modes; |
540 int i, nmodes; | |
910
4ab6d1fd028f
Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
883
diff
changeset
|
541 |
2753 | 542 /* Make sure we don't already have the mode in the list */ |
543 modes = display->display_modes; | |
544 nmodes = display->num_display_modes; | |
545 for (i = nmodes; i--;) { | |
546 if (SDL_memcmp(mode, &modes[i], sizeof(*mode)) == 0) { | |
547 return SDL_FALSE; | |
548 } | |
549 } | |
910
4ab6d1fd028f
Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
883
diff
changeset
|
550 |
2753 | 551 /* Go ahead and add the new mode */ |
552 if (nmodes == display->max_display_modes) { | |
553 modes = | |
554 SDL_realloc(modes, | |
555 (display->max_display_modes + 32) * sizeof(*modes)); | |
556 if (!modes) { | |
557 return SDL_FALSE; | |
558 } | |
559 display->display_modes = modes; | |
560 display->max_display_modes += 32; | |
561 } | |
562 modes[nmodes] = *mode; | |
563 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
|
564 |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
565 /* 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
|
566 SDL_qsort(display->display_modes, display->num_display_modes, |
3186 | 567 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
|
568 |
2753 | 569 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
|
570 } |
0 | 571 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
572 int |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
573 SDL_GetNumDisplayModesForDisplay(SDL_VideoDisplay * display) |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
574 { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
575 if (!display->num_display_modes && _this->GetDisplayModes) { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
576 _this->GetDisplayModes(_this, display); |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
577 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
|
578 sizeof(SDL_DisplayMode), cmpmodes); |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
579 } |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
580 return display->num_display_modes; |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
581 } |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
582 |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
583 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
|
584 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
|
585 { |
2753 | 586 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
|
587 return SDL_GetNumDisplayModesForDisplay(SDL_CurrentDisplay); |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
588 } |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
589 return 0; |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
590 } |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
591 |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
592 int |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
593 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
|
594 { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
595 if (index < 0 || index >= SDL_GetNumDisplayModesForDisplay(display)) { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
596 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
|
597 SDL_GetNumDisplayModesForDisplay(display) - 1); |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
598 return -1; |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
599 } |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
600 if (mode) { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
601 *mode = display->display_modes[index]; |
2753 | 602 } |
603 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
|
604 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
605 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
606 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
607 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
|
608 { |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
609 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
|
610 } |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
611 |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
612 int |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
613 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
|
614 { |
2753 | 615 if (mode) { |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
616 *mode = display->desktop_mode; |
2753 | 617 } |
618 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
|
619 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
620 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
621 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
622 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
|
623 { |
2753 | 624 if (!_this) { |
625 SDL_UninitializedVideo(); | |
626 return -1; | |
627 } | |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
628 return SDL_GetDesktopDisplayModeForDisplay(SDL_CurrentDisplay, mode); |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
629 } |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
630 |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
631 int |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
632 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
|
633 { |
2753 | 634 if (mode) { |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
635 *mode = display->current_mode; |
2753 | 636 } |
637 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
|
638 } |
0 | 639 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
640 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
641 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
|
642 { |
2753 | 643 if (!_this) { |
644 SDL_UninitializedVideo(); | |
645 return -1; | |
646 } | |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
647 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
|
648 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
649 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
650 SDL_DisplayMode * |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
651 SDL_GetClosestDisplayModeForDisplay(SDL_VideoDisplay * display, |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
652 const SDL_DisplayMode * mode, |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
653 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
|
654 { |
2753 | 655 Uint32 target_format; |
656 int target_refresh_rate; | |
657 int i; | |
658 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
|
659 |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
660 if (!mode || !closest) { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
661 SDL_SetError("Missing desired mode or closest mode parameter"); |
2753 | 662 return NULL; |
663 } | |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
664 |
2753 | 665 /* Default to the desktop format */ |
666 if (mode->format) { | |
667 target_format = mode->format; | |
668 } else { | |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
669 target_format = display->desktop_mode.format; |
2753 | 670 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
671 |
2753 | 672 /* Default to the desktop refresh rate */ |
673 if (mode->refresh_rate) { | |
674 target_refresh_rate = mode->refresh_rate; | |
675 } else { | |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
676 target_refresh_rate = display->desktop_mode.refresh_rate; |
2753 | 677 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
678 |
2753 | 679 match = NULL; |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
680 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
|
681 current = &display->display_modes[i]; |
0 | 682 |
2789
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
683 if (current->w && (current->w < mode->w)) { |
2753 | 684 /* Out of sorted modes large enough here */ |
685 break; | |
686 } | |
2789
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
687 if (current->h && (current->h < mode->h)) { |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
688 if (current->w && (current->w == mode->w)) { |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
689 /* Out of sorted modes large enough here */ |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
690 break; |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
691 } |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
692 /* 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
|
693 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
|
694 modes may still follow. */ |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
695 continue; |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
696 } |
2753 | 697 if (!match || current->w < match->w || current->h < match->h) { |
698 match = current; | |
699 continue; | |
700 } | |
701 if (current->format != match->format) { | |
702 /* Sorted highest depth to lowest */ | |
703 if (current->format == target_format || | |
704 (SDL_BITSPERPIXEL(current->format) >= | |
705 SDL_BITSPERPIXEL(target_format) | |
706 && SDL_PIXELTYPE(current->format) == | |
707 SDL_PIXELTYPE(target_format))) { | |
708 match = current; | |
709 } | |
710 continue; | |
711 } | |
712 if (current->refresh_rate != match->refresh_rate) { | |
713 /* Sorted highest refresh to lowest */ | |
714 if (current->refresh_rate >= target_refresh_rate) { | |
715 match = current; | |
716 } | |
717 } | |
718 } | |
719 if (match) { | |
720 if (match->format) { | |
721 closest->format = match->format; | |
722 } else { | |
723 closest->format = mode->format; | |
724 } | |
725 if (match->w && match->h) { | |
726 closest->w = match->w; | |
727 closest->h = match->h; | |
728 } else { | |
729 closest->w = mode->w; | |
730 closest->h = mode->h; | |
731 } | |
732 if (match->refresh_rate) { | |
733 closest->refresh_rate = match->refresh_rate; | |
734 } else { | |
735 closest->refresh_rate = mode->refresh_rate; | |
736 } | |
737 closest->driverdata = match->driverdata; | |
0 | 738 |
2753 | 739 /* |
740 * Pick some reasonable defaults if the app and driver don't | |
741 * care | |
742 */ | |
743 if (!closest->format) { | |
744 closest->format = SDL_PIXELFORMAT_RGB888; | |
745 } | |
746 if (!closest->w) { | |
747 closest->w = 640; | |
748 } | |
749 if (!closest->h) { | |
750 closest->h = 480; | |
751 } | |
752 return closest; | |
753 } | |
754 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
|
755 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
756 |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
757 SDL_DisplayMode * |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
758 SDL_GetClosestDisplayMode(const SDL_DisplayMode * mode, |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
759 SDL_DisplayMode * closest) |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
760 { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
761 if (!_this) { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
762 SDL_UninitializedVideo(); |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
763 return NULL; |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
764 } |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
765 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
|
766 } |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
767 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
768 int |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
769 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
|
770 { |
2753 | 771 SDL_DisplayMode display_mode; |
772 SDL_DisplayMode current_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
|
773 |
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
|
774 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
|
775 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
|
776 |
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 /* 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
|
778 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
|
779 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
|
780 } |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents:
3501
diff
changeset
|
781 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
|
782 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
|
783 } |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents:
3501
diff
changeset
|
784 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
|
785 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
|
786 } |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents:
3501
diff
changeset
|
787 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
|
788 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
|
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 /* 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
|
792 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
|
793 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
|
794 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
|
795 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
|
796 } |
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 } 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
|
798 display_mode = display->desktop_mode; |
2753 | 799 } |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
800 |
2753 | 801 /* 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
|
802 SDL_GetCurrentDisplayModeForDisplay(display, ¤t_mode); |
2753 | 803 if (SDL_memcmp(&display_mode, ¤t_mode, sizeof(display_mode)) == 0) { |
804 return 0; | |
805 } | |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
806 |
2753 | 807 /* Actually change the display mode */ |
4978
4a7f284a82b2
You can't change the resolution on some devices
Sam Lantinga <slouken@libsdl.org>
parents:
4977
diff
changeset
|
808 if (!_this->SetDisplayMode) { |
4a7f284a82b2
You can't change the resolution on some devices
Sam Lantinga <slouken@libsdl.org>
parents:
4977
diff
changeset
|
809 SDL_SetError("Video driver doesn't support changing display mode"); |
4a7f284a82b2
You can't change the resolution on some devices
Sam Lantinga <slouken@libsdl.org>
parents:
4977
diff
changeset
|
810 return -1; |
4a7f284a82b2
You can't change the resolution on some devices
Sam Lantinga <slouken@libsdl.org>
parents:
4977
diff
changeset
|
811 } |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
812 if (_this->SetDisplayMode(_this, display, &display_mode) < 0) { |
2753 | 813 return -1; |
814 } | |
815 display->current_mode = display_mode; | |
816 return 0; | |
0 | 817 } |
818 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
819 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
|
820 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
|
821 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
822 CHECK_WINDOW_MAGIC(window, -1); |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
823 |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
824 if (mode) { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
825 window->fullscreen_mode = *mode; |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
826 } else { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
827 SDL_zero(window->fullscreen_mode); |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
828 } |
3526 | 829 return 0; |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
830 } |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
831 |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
832 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
|
833 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
|
834 { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
835 SDL_DisplayMode fullscreen_mode; |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
836 |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
837 CHECK_WINDOW_MAGIC(window, -1); |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
838 |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
839 fullscreen_mode = window->fullscreen_mode; |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
840 if (!fullscreen_mode.w) { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
841 fullscreen_mode.w = window->w; |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
842 } |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
843 if (!fullscreen_mode.h) { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
844 fullscreen_mode.h = window->h; |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
845 } |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
846 |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
847 if (!SDL_GetClosestDisplayModeForDisplay(window->display, |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
848 &fullscreen_mode, |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
849 &fullscreen_mode)) { |
2869
2fe507a2ef7d
Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents:
2860
diff
changeset
|
850 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
|
851 return -1; |
2fe507a2ef7d
Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents:
2860
diff
changeset
|
852 } |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3091
diff
changeset
|
853 |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
854 if (mode) { |
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
855 *mode = fullscreen_mode; |
2753 | 856 } |
857 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
|
858 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
859 |
5157
fb424691cfc7
Moved the rendering code out to a separate directory in the hope that it can someday be completely decoupled from the rest of the library and be expanded to an awesome 2D on 3D library.
Sam Lantinga <slouken@libsdl.org>
parents:
5153
diff
changeset
|
860 Uint32 |
fb424691cfc7
Moved the rendering code out to a separate directory in the hope that it can someday be completely decoupled from the rest of the library and be expanded to an awesome 2D on 3D library.
Sam Lantinga <slouken@libsdl.org>
parents:
5153
diff
changeset
|
861 SDL_GetWindowPixelFormat(SDL_Window * window) |
fb424691cfc7
Moved the rendering code out to a separate directory in the hope that it can someday be completely decoupled from the rest of the library and be expanded to an awesome 2D on 3D library.
Sam Lantinga <slouken@libsdl.org>
parents:
5153
diff
changeset
|
862 { |
fb424691cfc7
Moved the rendering code out to a separate directory in the hope that it can someday be completely decoupled from the rest of the library and be expanded to an awesome 2D on 3D library.
Sam Lantinga <slouken@libsdl.org>
parents:
5153
diff
changeset
|
863 SDL_VideoDisplay *display = window->display; |
fb424691cfc7
Moved the rendering code out to a separate directory in the hope that it can someday be completely decoupled from the rest of the library and be expanded to an awesome 2D on 3D library.
Sam Lantinga <slouken@libsdl.org>
parents:
5153
diff
changeset
|
864 SDL_DisplayMode *displayMode = &display->current_mode; |
fb424691cfc7
Moved the rendering code out to a separate directory in the hope that it can someday be completely decoupled from the rest of the library and be expanded to an awesome 2D on 3D library.
Sam Lantinga <slouken@libsdl.org>
parents:
5153
diff
changeset
|
865 return displayMode->format; |
fb424691cfc7
Moved the rendering code out to a separate directory in the hope that it can someday be completely decoupled from the rest of the library and be expanded to an awesome 2D on 3D library.
Sam Lantinga <slouken@libsdl.org>
parents:
5153
diff
changeset
|
866 } |
fb424691cfc7
Moved the rendering code out to a separate directory in the hope that it can someday be completely decoupled from the rest of the library and be expanded to an awesome 2D on 3D library.
Sam Lantinga <slouken@libsdl.org>
parents:
5153
diff
changeset
|
867 |
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
|
868 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
|
869 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
|
870 { |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
871 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
|
872 |
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
|
873 /* 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
|
874 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
|
875 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
|
876 } |
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
|
877 |
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
|
878 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
|
879 |
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
|
880 /* 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
|
881 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
|
882 (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
|
883 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
|
884 /* 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
|
885 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
|
886 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
|
887 } 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
|
888 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
|
889 } |
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
|
890 } 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
|
891 /* 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
|
892 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
|
893 } |
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
|
894 } |
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
|
895 |
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
|
896 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
|
897 /* Hide any other fullscreen windows */ |
3701
fb905d5674cc
Fixed showing and hiding fullscreen windows
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
898 SDL_Window *other; |
fb905d5674cc
Fixed showing and hiding fullscreen windows
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
899 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
|
900 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
|
901 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
|
902 } |
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
|
903 } |
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
|
904 } |
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
|
905 |
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
|
906 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
|
907 |
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
|
908 /* See if there are any fullscreen windows */ |
3701
fb905d5674cc
Fixed showing and hiding fullscreen windows
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
909 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
|
910 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
|
911 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
|
912 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
|
913 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
|
914 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
|
915 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
|
916 } |
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
|
917 } |
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
|
918 } |
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
|
919 |
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
|
920 /* 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
|
921 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
|
922 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
|
923 } |
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
|
924 |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
925 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
|
926 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
|
927 { |
2753 | 928 const Uint32 allowed_flags = (SDL_WINDOW_FULLSCREEN | |
929 SDL_WINDOW_OPENGL | | |
930 SDL_WINDOW_BORDERLESS | | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
931 SDL_WINDOW_RESIZABLE | |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
932 SDL_WINDOW_INPUT_GRABBED); |
2753 | 933 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
|
934 SDL_Window *window; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
935 |
2753 | 936 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
|
937 /* Initialize the video system if needed */ |
5125
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
938 if (SDL_VideoInit(NULL) < 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
|
939 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
|
940 } |
2753 | 941 } |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
942 if (flags & SDL_WINDOW_OPENGL) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
943 if (!_this->GL_CreateContext) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
944 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
|
945 return NULL; |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
946 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
947 SDL_GL_LoadLibrary(NULL); |
2753 | 948 } |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
949 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
|
950 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
|
951 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
|
952 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
|
953 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
|
954 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
|
955 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
|
956 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
|
957 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
|
958 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
|
959 window->next = display->windows; |
3693
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
960 if (display->windows) { |
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
961 display->windows->prev = window; |
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
962 } |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
963 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
|
964 |
64ce267332c6
Switched from SDL_WindowID 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 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
|
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 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
969 |
2753 | 970 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
|
971 SDL_SetWindowTitle(window, title); |
2753 | 972 } |
973 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
|
974 SDL_MaximizeWindow(window); |
2753 | 975 } |
976 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
|
977 SDL_MinimizeWindow(window); |
2753 | 978 } |
979 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
|
980 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
|
981 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
982 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
|
983 |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
984 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
|
985 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
986 |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
987 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
|
988 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
|
989 { |
2753 | 990 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
|
991 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
|
992 |
2753 | 993 if (!_this) { |
994 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
|
995 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
|
996 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
997 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
|
998 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
|
999 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
|
1000 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
|
1001 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
|
1002 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
|
1003 window->next = display->windows; |
3693
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
1004 if (display->windows) { |
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
1005 display->windows->prev = window; |
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
1006 } |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1007 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
|
1008 |
2753 | 1009 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
|
1010 _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
|
1011 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
|
1012 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
|
1013 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1014 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
|
1015 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1016 |
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
|
1017 int |
1928
861bc36f0ab3
Fixed crash with multiple windows
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
1018 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
|
1019 { |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1020 const Uint32 allowed_flags = (SDL_WINDOW_FULLSCREEN | |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1021 SDL_WINDOW_OPENGL | |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1022 SDL_WINDOW_BORDERLESS | |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1023 SDL_WINDOW_RESIZABLE | |
3486 | 1024 SDL_WINDOW_INPUT_GRABBED | |
1025 SDL_WINDOW_FOREIGN); | |
2753 | 1026 char *title = window->title; |
1956
ba0d62354872
Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
1027 |
2753 | 1028 if ((flags & SDL_WINDOW_OPENGL) && !_this->GL_CreateContext) { |
1029 SDL_SetError("No OpenGL support in video driver"); | |
1030 return -1; | |
1031 } | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1032 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
|
1033 if (flags & SDL_WINDOW_OPENGL) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1034 SDL_GL_LoadLibrary(NULL); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1035 } else { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1036 SDL_GL_UnloadLibrary(); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1037 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1038 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1039 |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1040 if (window->flags & SDL_WINDOW_FOREIGN) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1041 /* 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
|
1042 flags |= SDL_WINDOW_FOREIGN; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1043 } else { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1044 flags &= ~SDL_WINDOW_FOREIGN; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1045 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1046 |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1047 if (_this->DestroyWindow && !(flags & SDL_WINDOW_FOREIGN)) { |
2753 | 1048 _this->DestroyWindow(_this, window); |
1049 } | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1050 |
2753 | 1051 window->title = NULL; |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1052 window->flags = (flags & allowed_flags); |
1956
ba0d62354872
Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
1053 |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1054 if (_this->CreateWindow && !(flags & SDL_WINDOW_FOREIGN)) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1055 if (_this->CreateWindow(_this, window) < 0) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1056 if (flags & SDL_WINDOW_OPENGL) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1057 SDL_GL_UnloadLibrary(); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1058 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1059 return -1; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1060 } |
2753 | 1061 } |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1062 |
2753 | 1063 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
|
1064 SDL_SetWindowTitle(window, title); |
2753 | 1065 SDL_free(title); |
1066 } | |
1067 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
|
1068 SDL_MaximizeWindow(window); |
2753 | 1069 } |
1070 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
|
1071 SDL_MinimizeWindow(window); |
2753 | 1072 } |
1073 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
|
1074 SDL_ShowWindow(window); |
2753 | 1075 } |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1076 SDL_UpdateWindowGrab(window); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1077 |
2753 | 1078 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
|
1079 } |
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
|
1080 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1081 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
|
1082 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
|
1083 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1084 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
|
1085 |
3685
64ce267332c6
Switched from SDL_WindowID 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 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
|
1087 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1088 |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1089 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
|
1090 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
|
1091 { |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1092 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
|
1093 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
|
1094 |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1095 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
|
1096 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
|
1097 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1098 /* 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
|
1099 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
|
1100 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
|
1101 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
|
1102 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
|
1103 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
|
1104 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1105 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1106 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1107 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
|
1108 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1109 |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1110 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
|
1111 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
|
1112 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1113 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
|
1114 |
2753 | 1115 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
|
1116 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1117 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1118 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
|
1119 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
|
1120 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1121 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
|
1122 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1123 if (title == window->title) { |
2753 | 1124 return; |
1125 } | |
1126 if (window->title) { | |
1127 SDL_free(window->title); | |
1128 } | |
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
|
1129 if (title && *title) { |
2753 | 1130 window->title = SDL_strdup(title); |
1131 } else { | |
1132 window->title = NULL; | |
1133 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1134 |
2753 | 1135 if (_this->SetWindowTitle) { |
1136 _this->SetWindowTitle(_this, window); | |
1137 } | |
1895
c121d94672cb
SDL 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 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
|
1141 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
|
1142 { |
4872
231f8a1c5edd
Whoops, return "" even if the window is invalid.
Sam Lantinga <slouken@libsdl.org>
parents:
4871
diff
changeset
|
1143 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
|
1144 |
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
|
1145 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
|
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_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
|
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 |
2967
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1153 if (_this->SetWindowIcon) { |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1154 _this->SetWindowIcon(_this, window, icon); |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1155 } |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1156 } |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1157 |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1158 void* |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1159 SDL_SetWindowData(SDL_Window * window, const char *name, void *userdata) |
0 | 1160 { |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1161 SDL_WindowUserData *prev, *data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1162 |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1163 CHECK_WINDOW_MAGIC(window, NULL); |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1164 |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1165 /* See if the named data already exists */ |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1166 prev = NULL; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1167 for (data = window->data; data; prev = data, data = data->next) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1168 if (SDL_strcmp(data->name, name) == 0) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1169 void *last_value = data->data; |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1170 |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1171 if (userdata) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1172 /* Set the new value */ |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1173 data->data = userdata; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1174 } else { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1175 /* Delete this value */ |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1176 if (prev) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1177 prev->next = data->next; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1178 } else { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1179 window->data = data->next; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1180 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1181 SDL_free(data->name); |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1182 SDL_free(data); |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1183 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1184 return last_value; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1185 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1186 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1187 |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1188 /* Add new data to the window */ |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1189 if (userdata) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1190 data = (SDL_WindowUserData *)SDL_malloc(sizeof(*data)); |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1191 data->name = SDL_strdup(name); |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1192 data->data = userdata; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1193 data->next = window->data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1194 window->data = data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1195 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1196 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
|
1197 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1198 |
2753 | 1199 void * |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1200 SDL_GetWindowData(SDL_Window * window, const char *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
|
1201 { |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1202 SDL_WindowUserData *data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1203 |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1204 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
|
1205 |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1206 for (data = window->data; data; data = data->next) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1207 if (SDL_strcmp(data->name, name) == 0) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1208 return data->data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1209 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1210 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1211 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
|
1212 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1213 |
c121d94672cb
SDL 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 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
|
1215 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
|
1216 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1217 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
|
1218 |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1219 if (x != SDL_WINDOWPOS_UNDEFINED) { |
2753 | 1220 window->x = x; |
1221 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1222 if (y != SDL_WINDOWPOS_UNDEFINED) { |
2753 | 1223 window->y = y; |
1224 } | |
1225 if (_this->SetWindowPosition) { | |
1226 _this->SetWindowPosition(_this, window); | |
1227 } | |
3685
64ce267332c6
Switched from SDL_WindowID 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_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
|
1229 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1230 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1231 void |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1232 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
|
1233 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1234 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
|
1235 |
2753 | 1236 if (x) { |
1237 *x = window->x; | |
1238 } | |
1239 if (y) { | |
1240 *y = window->y; | |
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 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1243 |
c121d94672cb
SDL 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 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
|
1245 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
|
1246 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1247 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
|
1248 |
2753 | 1249 window->w = w; |
1250 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
|
1251 |
2753 | 1252 if (_this->SetWindowSize) { |
1253 _this->SetWindowSize(_this, window); | |
1254 } | |
5150
ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multi-threaded rendering in the future.
Sam Lantinga <slouken@libsdl.org>
parents:
5147
diff
changeset
|
1255 SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESIZED, w, 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
|
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_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
|
1260 { |
2860
6ce28e5287e9
Date: Sun, 07 Dec 2008 13:35:23 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
1261 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
|
1262 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
|
1263 *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
|
1264 } |
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
|
1265 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
|
1266 *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
|
1267 } |
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
|
1268 } 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
|
1269 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
|
1270 *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
|
1271 } |
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
|
1272 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
|
1273 *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
|
1274 } |
2753 | 1275 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1276 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1277 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1278 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
|
1279 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
|
1280 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1281 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
|
1282 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1283 if (window->flags & SDL_WINDOW_SHOWN) { |
2753 | 1284 return; |
1285 } | |
1895
c121d94672cb
SDL 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 |
2753 | 1287 if (_this->ShowWindow) { |
1288 _this->ShowWindow(_this, window); | |
1289 } | |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1290 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
|
1291 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1292 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1293 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
|
1294 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
|
1295 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1296 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
|
1297 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1298 if (!(window->flags & SDL_WINDOW_SHOWN)) { |
2753 | 1299 return; |
1300 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1301 |
2753 | 1302 if (_this->HideWindow) { |
1303 _this->HideWindow(_this, window); | |
1304 } | |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1305 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
|
1306 } |
0 | 1307 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1308 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
|
1309 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
|
1310 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1311 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
|
1312 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1313 if (!(window->flags & SDL_WINDOW_SHOWN)) { |
2753 | 1314 return; |
1315 } | |
1316 if (_this->RaiseWindow) { | |
1317 _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
|
1318 } 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
|
1319 /* 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
|
1320 SDL_SendWindowEvent(window, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0); |
2753 | 1321 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1322 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1323 |
c121d94672cb
SDL 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 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
|
1325 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
|
1326 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1327 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
|
1328 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1329 if (window->flags & SDL_WINDOW_MAXIMIZED) { |
2753 | 1330 return; |
1331 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1332 |
2753 | 1333 if (_this->MaximizeWindow) { |
1334 _this->MaximizeWindow(_this, window); | |
1335 } | |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1336 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
|
1337 } |
0 | 1338 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1339 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
|
1340 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
|
1341 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1342 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
|
1343 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1344 if (window->flags & SDL_WINDOW_MINIMIZED) { |
2753 | 1345 return; |
1346 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1347 |
2753 | 1348 if (_this->MinimizeWindow) { |
1349 _this->MinimizeWindow(_this, window); | |
1350 } | |
3685
64ce267332c6
Switched from SDL_WindowID 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_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
|
1352 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1353 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1354 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
|
1355 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
|
1356 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1357 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
|
1358 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1359 if (!(window->flags & (SDL_WINDOW_MAXIMIZED | SDL_WINDOW_MINIMIZED))) { |
2753 | 1360 return; |
1361 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1362 |
2753 | 1363 if (_this->RestoreWindow) { |
1364 _this->RestoreWindow(_this, window); | |
1365 } | |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1366 SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESTORED, 0, 0); |
0 | 1367 } |
1368 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1369 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
|
1370 SDL_SetWindowFullscreen(SDL_Window * window, int fullscreen) |
0 | 1371 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1372 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
|
1373 |
2753 | 1374 if (fullscreen) { |
1375 fullscreen = SDL_WINDOW_FULLSCREEN; | |
1376 } | |
1377 if ((window->flags & SDL_WINDOW_FULLSCREEN) == fullscreen) { | |
1378 return 0; | |
1379 } | |
1380 if (fullscreen) { | |
1381 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
|
1382 |
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
|
1383 SDL_UpdateFullscreenMode(window, SDL_TRUE); |
2753 | 1384 } else { |
1385 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
|
1386 |
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
|
1387 SDL_UpdateFullscreenMode(window, SDL_FALSE); |
2753 | 1388 } |
1389 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
|
1390 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1391 |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1392 static SDL_Surface * |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1393 SDL_CreateWindowFramebuffer(SDL_Window * window) |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1394 { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1395 Uint32 format; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1396 void *pixels; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1397 int pitch; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1398 int bpp; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1399 Uint32 Rmask, Gmask, Bmask, Amask; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1400 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1401 if (!_this->CreateWindowFramebuffer || !_this->UpdateWindowFramebuffer) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1402 return NULL; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1403 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1404 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1405 if (_this->CreateWindowFramebuffer(_this, window, &format, &pixels, &pitch) < 0) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1406 return NULL; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1407 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1408 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1409 if (!SDL_PixelFormatEnumToMasks(format, &bpp, &Rmask, &Gmask, &Bmask, &Amask)) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1410 return NULL; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1411 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1412 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1413 return SDL_CreateRGBSurfaceFrom(pixels, window->w, window->h, bpp, pitch, Rmask, Gmask, Bmask, Amask); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1414 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1415 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1416 SDL_Surface * |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1417 SDL_GetWindowSurface(SDL_Window * window) |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1418 { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1419 CHECK_WINDOW_MAGIC(window, NULL); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1420 |
5175
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
1421 if (!window->surface_valid) { |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
1422 if (window->surface) { |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
1423 window->surface->refcount = 0; |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
1424 SDL_FreeSurface(window->surface); |
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
1425 } |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1426 window->surface = SDL_CreateWindowFramebuffer(window); |
5172
ededa1ccf91c
Switched the SDL 1.2 compatibility to use the window surface, so it's fast even when there's no hardware acceleration available.
Sam Lantinga <slouken@libsdl.org>
parents:
5171
diff
changeset
|
1427 if (window->surface) { |
5175
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
1428 window->surface_valid = SDL_TRUE; |
5172
ededa1ccf91c
Switched the SDL 1.2 compatibility to use the window surface, so it's fast even when there's no hardware acceleration available.
Sam Lantinga <slouken@libsdl.org>
parents:
5171
diff
changeset
|
1429 window->surface->refcount = 0x7FFFFFF; |
ededa1ccf91c
Switched the SDL 1.2 compatibility to use the window surface, so it's fast even when there's no hardware acceleration available.
Sam Lantinga <slouken@libsdl.org>
parents:
5171
diff
changeset
|
1430 } |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1431 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1432 return window->surface; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1433 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1434 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1435 int |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1436 SDL_UpdateWindowSurface(SDL_Window * window) |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1437 { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1438 SDL_Rect full_rect; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1439 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1440 CHECK_WINDOW_MAGIC(window, -1); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1441 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1442 full_rect.x = 0; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1443 full_rect.y = 0; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1444 full_rect.w = window->w; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1445 full_rect.h = window->h; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1446 return SDL_UpdateWindowSurfaceRects(window, 1, &full_rect); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1447 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1448 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1449 int |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1450 SDL_UpdateWindowSurfaceRects(SDL_Window * window, |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1451 int numrects, SDL_Rect * rects) |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1452 { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1453 CHECK_WINDOW_MAGIC(window, -1); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1454 |
5175
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
1455 if (!window->surface_valid) { |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1456 SDL_SetError("Window surface is invalid, please call SDL_GetWindowSurface() to get a new surface"); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1457 return -1; |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1458 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1459 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1460 return _this->UpdateWindowFramebuffer(_this, window, numrects, rects); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1461 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1462 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1463 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
|
1464 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
|
1465 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1466 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
|
1467 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1468 if ((!!mode == !!(window->flags & SDL_WINDOW_INPUT_GRABBED))) { |
2753 | 1469 return; |
1470 } | |
1471 if (mode) { | |
1472 window->flags |= SDL_WINDOW_INPUT_GRABBED; | |
1473 } else { | |
1474 window->flags &= ~SDL_WINDOW_INPUT_GRABBED; | |
1475 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1476 SDL_UpdateWindowGrab(window); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1477 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1478 |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1479 static void |
2876 | 1480 SDL_UpdateWindowGrab(SDL_Window * window) |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1481 { |
2753 | 1482 if ((window->flags & SDL_WINDOW_INPUT_FOCUS) && _this->SetWindowGrab) { |
1483 _this->SetWindowGrab(_this, window); | |
1484 } | |
1895
c121d94672cb
SDL 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 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
|
1488 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
|
1489 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1490 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
|
1491 |
2753 | 1492 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
|
1493 } |
0 | 1494 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1495 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
|
1496 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
|
1497 { |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1498 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
|
1499 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
|
1500 } |
c121d94672cb
SDL 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 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
|
1503 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
|
1504 { |
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
|
1505 SDL_UpdateFullscreenMode(window, SDL_FALSE); |
0 | 1506 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1507 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1508 void |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1509 SDL_OnWindowResized(SDL_Window * window) |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1510 { |
5175
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
1511 window->surface_valid = SDL_FALSE; |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1512 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1513 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1514 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
|
1515 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
|
1516 { |
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
|
1517 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
|
1518 } |
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
|
1519 |
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
|
1520 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
|
1521 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
|
1522 { |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1523 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
|
1524 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
|
1525 } |
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
|
1526 |
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
|
1527 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
|
1528 SDL_OnWindowFocusGained(SDL_Window * window) |
0 | 1529 { |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1530 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
|
1531 |
2753 | 1532 if (display->gamma && _this->SetDisplayGammaRamp) { |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
1533 _this->SetDisplayGammaRamp(_this, display, display->gamma); |
2753 | 1534 } |
2876 | 1535 if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN)) |
1536 && _this->SetWindowGrab) { | |
2753 | 1537 _this->SetWindowGrab(_this, window); |
1538 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1539 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1540 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1541 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
|
1542 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
|
1543 { |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1544 SDL_VideoDisplay *display = window->display; |
0 | 1545 |
3512
5ffbbfb78987
If we're fullscreen on a single-head system and lose focus, minimize
Sam Lantinga <slouken@libsdl.org>
parents:
3511
diff
changeset
|
1546 /* 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
|
1547 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
|
1548 _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
|
1549 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
|
1550 } |
5ffbbfb78987
If we're fullscreen on a single-head system and lose focus, minimize
Sam Lantinga <slouken@libsdl.org>
parents:
3511
diff
changeset
|
1551 |
2753 | 1552 if (display->gamma && _this->SetDisplayGammaRamp) { |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3489
diff
changeset
|
1553 _this->SetDisplayGammaRamp(_this, display, display->saved_gamma); |
2753 | 1554 } |
2876 | 1555 if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN)) |
1556 && _this->SetWindowGrab) { | |
2753 | 1557 _this->SetWindowGrab(_this, window); |
1558 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1559 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1560 |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1561 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
|
1562 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
|
1563 { |
2753 | 1564 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
|
1565 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
|
1566 |
2753 | 1567 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
|
1568 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
|
1569 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1570 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
|
1571 for (window = display->windows; window; window = window->next) { |
2753 | 1572 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
|
1573 return window; |
2753 | 1574 } |
1575 } | |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1576 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
|
1577 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1578 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1579 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
|
1580 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
|
1581 { |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1582 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
|
1583 |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1584 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
|
1585 |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1586 /* 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
|
1587 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
|
1588 |
5172
ededa1ccf91c
Switched the SDL 1.2 compatibility to use the window surface, so it's fast even when there's no hardware acceleration available.
Sam Lantinga <slouken@libsdl.org>
parents:
5171
diff
changeset
|
1589 if (window->surface) { |
ededa1ccf91c
Switched the SDL 1.2 compatibility to use the window surface, so it's fast even when there's no hardware acceleration available.
Sam Lantinga <slouken@libsdl.org>
parents:
5171
diff
changeset
|
1590 window->surface->refcount = 0; |
ededa1ccf91c
Switched the SDL 1.2 compatibility to use the window surface, so it's fast even when there's no hardware acceleration available.
Sam Lantinga <slouken@libsdl.org>
parents:
5171
diff
changeset
|
1591 SDL_FreeSurface(window->surface); |
ededa1ccf91c
Switched the SDL 1.2 compatibility to use the window surface, so it's fast even when there's no hardware acceleration available.
Sam Lantinga <slouken@libsdl.org>
parents:
5171
diff
changeset
|
1592 } |
5169
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1593 if (_this->DestroyWindowFramebuffer) { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1594 _this->DestroyWindowFramebuffer(_this, window); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1595 } |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1596 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
|
1597 _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
|
1598 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1599 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
|
1600 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
|
1601 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1602 |
4901
deadc1219bea
Minor cleanup in patches from Coursoud
Sam Lantinga <slouken@libsdl.org>
parents:
4900
diff
changeset
|
1603 /* Now invalidate magic */ |
4897
c3eb55210a90
SDL_DestroyWindow is setting window->magic to NULL too early. -
Sam Lantinga <slouken@libsdl.org>
parents:
4872
diff
changeset
|
1604 window->magic = NULL; |
c3eb55210a90
SDL_DestroyWindow is setting window->magic to NULL too early. -
Sam Lantinga <slouken@libsdl.org>
parents:
4872
diff
changeset
|
1605 |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1606 /* Free memory associated with the window */ |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1607 if (window->title) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1608 SDL_free(window->title); |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1609 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1610 while (window->data) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1611 SDL_WindowUserData *data = window->data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1612 |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1613 window->data = data->next; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1614 SDL_free(data->name); |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1615 SDL_free(data); |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1616 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1617 |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1618 /* 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
|
1619 display = window->display; |
3693
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
1620 if (window->next) { |
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
1621 window->next->prev = window->prev; |
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
1622 } |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1623 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
|
1624 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
|
1625 } 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
|
1626 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
|
1627 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1628 |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1629 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
|
1630 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1631 |
3025
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1632 SDL_bool |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1633 SDL_IsScreenSaverEnabled() |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1634 { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1635 if (!_this) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1636 return SDL_TRUE; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1637 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1638 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
|
1639 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1640 |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1641 void |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1642 SDL_EnableScreenSaver() |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1643 { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1644 if (!_this) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1645 return; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1646 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1647 if (!_this->suspend_screensaver) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1648 return; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1649 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1650 _this->suspend_screensaver = SDL_FALSE; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1651 if (_this->SuspendScreenSaver) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1652 _this->SuspendScreenSaver(_this); |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1653 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1654 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1655 |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1656 void |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1657 SDL_DisableScreenSaver() |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1658 { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1659 if (!_this) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1660 return; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1661 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1662 if (_this->suspend_screensaver) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1663 return; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1664 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1665 _this->suspend_screensaver = SDL_TRUE; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1666 if (_this->SuspendScreenSaver) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1667 _this->SuspendScreenSaver(_this); |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1668 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1669 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1670 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1671 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
|
1672 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
|
1673 { |
2753 | 1674 int i, j; |
0 | 1675 |
2753 | 1676 if (!_this) { |
1677 return; | |
1678 } | |
5125
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
1679 |
2753 | 1680 /* Halt event processing before doing anything else */ |
5125
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
1681 SDL_QuitQuit(); |
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
1682 SDL_MouseQuit(); |
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
1683 SDL_KeyboardQuit(); |
2753 | 1684 SDL_StopEventLoop(); |
5125
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
1685 |
3029
89f8a72e1ee9
Re-enable the screensaver at exit, just in case it's needed...
Sam Lantinga <slouken@libsdl.org>
parents:
3025
diff
changeset
|
1686 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
|
1687 |
2753 | 1688 /* Clean up the system video */ |
1689 for (i = _this->num_displays; i--;) { | |
1690 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
|
1691 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
|
1692 SDL_DestroyWindow(display->windows); |
2753 | 1693 } |
1694 } | |
1695 _this->VideoQuit(_this); | |
0 | 1696 |
2753 | 1697 for (i = _this->num_displays; i--;) { |
1698 SDL_VideoDisplay *display = &_this->displays[i]; | |
1699 for (j = display->num_display_modes; j--;) { | |
1700 if (display->display_modes[j].driverdata) { | |
1701 SDL_free(display->display_modes[j].driverdata); | |
1702 display->display_modes[j].driverdata = NULL; | |
1703 } | |
1704 } | |
1705 if (display->display_modes) { | |
1706 SDL_free(display->display_modes); | |
1707 display->display_modes = NULL; | |
1708 } | |
1709 if (display->desktop_mode.driverdata) { | |
1710 SDL_free(display->desktop_mode.driverdata); | |
1711 display->desktop_mode.driverdata = NULL; | |
1712 } | |
1713 if (display->gamma) { | |
1714 SDL_free(display->gamma); | |
1715 display->gamma = NULL; | |
1716 } | |
1717 if (display->driverdata) { | |
1718 SDL_free(display->driverdata); | |
1719 display->driverdata = NULL; | |
1720 } | |
1721 } | |
1722 if (_this->displays) { | |
1723 SDL_free(_this->displays); | |
1724 _this->displays = NULL; | |
1725 } | |
4495
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
1726 if (_this->clipboard_text) { |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
1727 SDL_free(_this->clipboard_text); |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
1728 _this->clipboard_text = NULL; |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
1729 } |
2753 | 1730 _this->free(_this); |
1731 _this = NULL; | |
0 | 1732 } |
1733 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1734 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
|
1735 SDL_GL_LoadLibrary(const char *path) |
0 | 1736 { |
2753 | 1737 int retval; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
1738 |
2753 | 1739 if (!_this) { |
1740 SDL_UninitializedVideo(); | |
1741 return -1; | |
1742 } | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1743 if (_this->gl_config.driver_loaded) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1744 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
|
1745 SDL_SetError("OpenGL library already loaded"); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1746 return -1; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1747 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1748 retval = 0; |
2753 | 1749 } else { |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1750 if (!_this->GL_LoadLibrary) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1751 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
|
1752 return -1; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1753 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1754 retval = _this->GL_LoadLibrary(_this, path); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1755 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1756 if (retval == 0) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1757 ++_this->gl_config.driver_loaded; |
2753 | 1758 } |
1759 return (retval); | |
0 | 1760 } |
1761 | |
2753 | 1762 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
|
1763 SDL_GL_GetProcAddress(const char *proc) |
0 | 1764 { |
2753 | 1765 void *func; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
1766 |
2753 | 1767 if (!_this) { |
1768 SDL_UninitializedVideo(); | |
1769 return NULL; | |
1770 } | |
1771 func = NULL; | |
1772 if (_this->GL_GetProcAddress) { | |
1773 if (_this->gl_config.driver_loaded) { | |
1774 func = _this->GL_GetProcAddress(_this, proc); | |
1775 } else { | |
1776 SDL_SetError("No GL driver has been loaded"); | |
1777 } | |
1778 } else { | |
1779 SDL_SetError("No dynamic GL support in video driver"); | |
1780 } | |
1781 return func; | |
0 | 1782 } |
1783 | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1784 void |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1785 SDL_GL_UnloadLibrary(void) |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1786 { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1787 if (!_this) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1788 SDL_UninitializedVideo(); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1789 return; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1790 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1791 if (_this->gl_config.driver_loaded > 0) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1792 if (--_this->gl_config.driver_loaded > 0) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1793 return; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1794 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1795 if (_this->GL_UnloadLibrary) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1796 _this->GL_UnloadLibrary(_this); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1797 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1798 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1799 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1800 |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1801 SDL_bool |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1802 SDL_GL_ExtensionSupported(const char *extension) |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1803 { |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
1804 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES |
2753 | 1805 const GLubyte *(APIENTRY * glGetStringFunc) (GLenum); |
1806 const char *extensions; | |
1807 const char *start; | |
1808 const char *where, *terminator; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1809 |
2753 | 1810 /* Extension names should not have spaces. */ |
1811 where = SDL_strchr(extension, ' '); | |
1812 if (where || *extension == '\0') { | |
1813 return SDL_FALSE; | |
1814 } | |
1815 /* See if there's an environment variable override */ | |
1816 start = SDL_getenv(extension); | |
1817 if (start && *start == '0') { | |
1818 return SDL_FALSE; | |
1819 } | |
1820 /* Lookup the available extensions */ | |
1821 glGetStringFunc = SDL_GL_GetProcAddress("glGetString"); | |
1822 if (glGetStringFunc) { | |
1823 extensions = (const char *) glGetStringFunc(GL_EXTENSIONS); | |
1824 } else { | |
1825 extensions = NULL; | |
1826 } | |
1827 if (!extensions) { | |
1828 return SDL_FALSE; | |
1829 } | |
1830 /* | |
1831 * It takes a bit of care to be fool-proof about parsing the OpenGL | |
1832 * extensions string. Don't be fooled by sub-strings, etc. | |
1833 */ | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1834 |
2753 | 1835 start = extensions; |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1836 |
2753 | 1837 for (;;) { |
1838 where = SDL_strstr(start, extension); | |
1839 if (!where) | |
1840 break; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1841 |
2753 | 1842 terminator = where + SDL_strlen(extension); |
1843 if (where == start || *(where - 1) == ' ') | |
1844 if (*terminator == ' ' || *terminator == '\0') | |
1845 return SDL_TRUE; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1846 |
2753 | 1847 start = terminator; |
1848 } | |
1849 return SDL_FALSE; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1850 #else |
2753 | 1851 return SDL_FALSE; |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1852 #endif |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1853 } |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1854 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1855 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
|
1856 SDL_GL_SetAttribute(SDL_GLattr attr, int value) |
0 | 1857 { |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
1858 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES |
2753 | 1859 int retval; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
1860 |
2753 | 1861 if (!_this) { |
1862 SDL_UninitializedVideo(); | |
1863 return -1; | |
1864 } | |
1865 retval = 0; | |
1866 switch (attr) { | |
1867 case SDL_GL_RED_SIZE: | |
1868 _this->gl_config.red_size = value; | |
1869 break; | |
1870 case SDL_GL_GREEN_SIZE: | |
1871 _this->gl_config.green_size = value; | |
1872 break; | |
1873 case SDL_GL_BLUE_SIZE: | |
1874 _this->gl_config.blue_size = value; | |
1875 break; | |
1876 case SDL_GL_ALPHA_SIZE: | |
1877 _this->gl_config.alpha_size = value; | |
1878 break; | |
1879 case SDL_GL_DOUBLEBUFFER: | |
1880 _this->gl_config.double_buffer = value; | |
1881 break; | |
1882 case SDL_GL_BUFFER_SIZE: | |
1883 _this->gl_config.buffer_size = value; | |
1884 break; | |
1885 case SDL_GL_DEPTH_SIZE: | |
1886 _this->gl_config.depth_size = value; | |
1887 break; | |
1888 case SDL_GL_STENCIL_SIZE: | |
1889 _this->gl_config.stencil_size = value; | |
1890 break; | |
1891 case SDL_GL_ACCUM_RED_SIZE: | |
1892 _this->gl_config.accum_red_size = value; | |
1893 break; | |
1894 case SDL_GL_ACCUM_GREEN_SIZE: | |
1895 _this->gl_config.accum_green_size = value; | |
1896 break; | |
1897 case SDL_GL_ACCUM_BLUE_SIZE: | |
1898 _this->gl_config.accum_blue_size = value; | |
1899 break; | |
1900 case SDL_GL_ACCUM_ALPHA_SIZE: | |
1901 _this->gl_config.accum_alpha_size = value; | |
1902 break; | |
1903 case SDL_GL_STEREO: | |
1904 _this->gl_config.stereo = value; | |
1905 break; | |
1906 case SDL_GL_MULTISAMPLEBUFFERS: | |
1907 _this->gl_config.multisamplebuffers = value; | |
1908 break; | |
1909 case SDL_GL_MULTISAMPLESAMPLES: | |
1910 _this->gl_config.multisamplesamples = value; | |
1911 break; | |
1912 case SDL_GL_ACCELERATED_VISUAL: | |
1913 _this->gl_config.accelerated = value; | |
1914 break; | |
1915 case SDL_GL_RETAINED_BACKING: | |
1916 _this->gl_config.retained_backing = value; | |
1917 break; | |
3100
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3099
diff
changeset
|
1918 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
|
1919 _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
|
1920 break; |
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3099
diff
changeset
|
1921 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
|
1922 _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
|
1923 break; |
2753 | 1924 default: |
1925 SDL_SetError("Unknown OpenGL attribute"); | |
1926 retval = -1; | |
1927 break; | |
1928 } | |
1929 return retval; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
1930 #else |
2753 | 1931 SDL_Unsupported(); |
1932 return -1; | |
1933 #endif /* SDL_VIDEO_OPENGL */ | |
0 | 1934 } |
1935 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1936 int |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
1937 SDL_GL_GetAttribute(SDL_GLattr attr, int *value) |
0 | 1938 { |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
1939 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES |
2753 | 1940 void (APIENTRY * glGetIntegervFunc) (GLenum pname, GLint * params); |
3139 | 1941 GLenum(APIENTRY * glGetErrorFunc) (void); |
2753 | 1942 GLenum attrib = 0; |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1943 GLenum error = 0; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
1944 |
2753 | 1945 glGetIntegervFunc = SDL_GL_GetProcAddress("glGetIntegerv"); |
1946 if (!glGetIntegervFunc) { | |
1947 return -1; | |
1948 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1949 |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1950 glGetErrorFunc = SDL_GL_GetProcAddress("glGetError"); |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1951 if (!glGetErrorFunc) { |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1952 return -1; |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1953 } |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1954 |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1955 /* Clear value in any case */ |
3139 | 1956 *value = 0; |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1957 |
2753 | 1958 switch (attr) { |
1959 case SDL_GL_RETAINED_BACKING: | |
1960 *value = _this->gl_config.retained_backing; | |
1961 return 0; | |
1962 case SDL_GL_RED_SIZE: | |
1963 attrib = GL_RED_BITS; | |
1964 break; | |
1965 case SDL_GL_BLUE_SIZE: | |
1966 attrib = GL_BLUE_BITS; | |
1967 break; | |
1968 case SDL_GL_GREEN_SIZE: | |
1969 attrib = GL_GREEN_BITS; | |
1970 break; | |
1971 case SDL_GL_ALPHA_SIZE: | |
1972 attrib = GL_ALPHA_BITS; | |
1973 break; | |
1974 case SDL_GL_DOUBLEBUFFER: | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
1975 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 1976 attrib = GL_DOUBLEBUFFER; |
1977 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
1978 #else |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1979 /* 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
|
1980 /* 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
|
1981 /* 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
|
1982 *value = _this->gl_config.double_buffer; |
2753 | 1983 return 0; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
1984 #endif |
2753 | 1985 case SDL_GL_DEPTH_SIZE: |
1986 attrib = GL_DEPTH_BITS; | |
1987 break; | |
1988 case SDL_GL_STENCIL_SIZE: | |
1989 attrib = GL_STENCIL_BITS; | |
1990 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
1991 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 1992 case SDL_GL_ACCUM_RED_SIZE: |
1993 attrib = GL_ACCUM_RED_BITS; | |
1994 break; | |
1995 case SDL_GL_ACCUM_GREEN_SIZE: | |
1996 attrib = GL_ACCUM_GREEN_BITS; | |
1997 break; | |
1998 case SDL_GL_ACCUM_BLUE_SIZE: | |
1999 attrib = GL_ACCUM_BLUE_BITS; | |
2000 break; | |
2001 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2002 attrib = GL_ACCUM_ALPHA_BITS; | |
2003 break; | |
2004 case SDL_GL_STEREO: | |
2005 attrib = GL_STEREO; | |
2006 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2007 #else |
2753 | 2008 case SDL_GL_ACCUM_RED_SIZE: |
2009 case SDL_GL_ACCUM_GREEN_SIZE: | |
2010 case SDL_GL_ACCUM_BLUE_SIZE: | |
2011 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2012 case SDL_GL_STEREO: | |
2013 /* none of these are supported in OpenGL ES */ | |
2014 *value = 0; | |
2015 return 0; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2016 #endif |
2753 | 2017 case SDL_GL_MULTISAMPLEBUFFERS: |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2018 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2019 attrib = GL_SAMPLE_BUFFERS_ARB; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2020 #else |
2753 | 2021 attrib = GL_SAMPLE_BUFFERS; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2022 #endif |
2753 | 2023 break; |
2024 case SDL_GL_MULTISAMPLESAMPLES: | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2025 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2026 attrib = GL_SAMPLES_ARB; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2027 #else |
2753 | 2028 attrib = GL_SAMPLES; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2029 #endif |
2753 | 2030 break; |
2031 case SDL_GL_BUFFER_SIZE: | |
2032 { | |
2033 GLint bits = 0; | |
2034 GLint component; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2035 |
2753 | 2036 /* |
2037 * there doesn't seem to be a single flag in OpenGL | |
2038 * for this! | |
2039 */ | |
2040 glGetIntegervFunc(GL_RED_BITS, &component); | |
2041 bits += component; | |
2042 glGetIntegervFunc(GL_GREEN_BITS, &component); | |
2043 bits += component; | |
2044 glGetIntegervFunc(GL_BLUE_BITS, &component); | |
2045 bits += component; | |
2046 glGetIntegervFunc(GL_ALPHA_BITS, &component); | |
2047 bits += component; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2048 |
2753 | 2049 *value = bits; |
2050 return 0; | |
2051 } | |
2052 case SDL_GL_ACCELERATED_VISUAL: | |
2053 { | |
2054 /* 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
|
2055 *value = (_this->gl_config.accelerated != 0); |
2753 | 2056 return 0; |
2057 } | |
2058 default: | |
2059 SDL_SetError("Unknown OpenGL attribute"); | |
2060 return -1; | |
2061 } | |
0 | 2062 |
2753 | 2063 glGetIntegervFunc(attrib, (GLint *) value); |
3139 | 2064 error = glGetErrorFunc(); |
2065 if (error != GL_NO_ERROR) { | |
2066 switch (error) { | |
2067 case GL_INVALID_ENUM: | |
2068 { | |
2069 SDL_SetError("OpenGL error: GL_INVALID_ENUM"); | |
2070 } | |
2071 break; | |
2072 case GL_INVALID_VALUE: | |
2073 { | |
2074 SDL_SetError("OpenGL error: GL_INVALID_VALUE"); | |
2075 } | |
2076 break; | |
2077 default: | |
2078 { | |
2079 SDL_SetError("OpenGL error: %08X", error); | |
2080 } | |
2081 break; | |
2082 } | |
2083 return -1; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2084 } |
2753 | 2085 return 0; |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2086 #else |
2753 | 2087 SDL_Unsupported(); |
2088 return -1; | |
2089 #endif /* SDL_VIDEO_OPENGL */ | |
0 | 2090 } |
2091 | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2092 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
|
2093 SDL_GL_CreateContext(SDL_Window * window) |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2094 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
2095 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
|
2096 |
2753 | 2097 if (!(window->flags & SDL_WINDOW_OPENGL)) { |
2098 SDL_SetError("The specified window isn't an OpenGL window"); | |
2099 return NULL; | |
2100 } | |
2101 return _this->GL_CreateContext(_this, window); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2102 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2103 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2104 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
|
2105 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
|
2106 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
2107 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
|
2108 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
2109 if (!(window->flags & SDL_WINDOW_OPENGL)) { |
2753 | 2110 SDL_SetError("The specified window isn't an OpenGL window"); |
2111 return -1; | |
2112 } | |
2113 if (!context) { | |
2114 window = NULL; | |
2115 } | |
2116 return _this->GL_MakeCurrent(_this, window, context); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2117 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2118 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2119 int |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2120 SDL_GL_SetSwapInterval(int interval) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2121 { |
2753 | 2122 if (!_this) { |
2123 SDL_UninitializedVideo(); | |
2124 return -1; | |
2125 } | |
2126 if (_this->GL_SetSwapInterval) { | |
2127 return _this->GL_SetSwapInterval(_this, interval); | |
2128 } else { | |
2129 SDL_SetError("Setting the swap interval is not supported"); | |
2130 return -1; | |
2131 } | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2132 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2133 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2134 int |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2135 SDL_GL_GetSwapInterval(void) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2136 { |
2753 | 2137 if (!_this) { |
2138 SDL_UninitializedVideo(); | |
2139 return -1; | |
2140 } | |
2141 if (_this->GL_GetSwapInterval) { | |
2142 return _this->GL_GetSwapInterval(_this); | |
2143 } else { | |
2144 SDL_SetError("Getting the swap interval is not supported"); | |
2145 return -1; | |
2146 } | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2147 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2148 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2149 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
|
2150 SDL_GL_SwapWindow(SDL_Window * window) |
0 | 2151 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
2152 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
|
2153 |
2753 | 2154 if (!(window->flags & SDL_WINDOW_OPENGL)) { |
2155 SDL_SetError("The specified window isn't an OpenGL window"); | |
2156 return; | |
2157 } | |
2158 _this->GL_SwapWindow(_this, window); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2159 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2160 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2161 void |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2162 SDL_GL_DeleteContext(SDL_GLContext context) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2163 { |
4526 | 2164 if (!_this || !_this->gl_data || !context) { |
2753 | 2165 return; |
2166 } | |
2167 _this->GL_MakeCurrent(_this, NULL, NULL); | |
2168 _this->GL_DeleteContext(_this, context); | |
0 | 2169 } |
2170 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2171 #if 0 // FIXME |
2744
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2172 /* |
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2173 * 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
|
2174 * & 2 for alpha channel. |
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2175 */ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2176 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
|
2177 CreateMaskFromColorKeyOrAlpha(SDL_Surface * icon, Uint8 * mask, int flags) |
0 | 2178 { |
2753 | 2179 int x, y; |
2180 Uint32 colorkey; | |
0 | 2181 #define SET_MASKBIT(icon, x, y, mask) \ |
2182 mask[(y*((icon->w+7)/8))+(x/8)] &= ~(0x01<<(7-(x%8))) | |
2183 | |
2753 | 2184 colorkey = icon->format->colorkey; |
2185 switch (icon->format->BytesPerPixel) { | |
2186 case 1: | |
2187 { | |
2188 Uint8 *pixels; | |
2189 for (y = 0; y < icon->h; ++y) { | |
2190 pixels = (Uint8 *) icon->pixels + y * icon->pitch; | |
2191 for (x = 0; x < icon->w; ++x) { | |
2192 if (*pixels++ == colorkey) { | |
2193 SET_MASKBIT(icon, x, y, mask); | |
2194 } | |
2195 } | |
2196 } | |
2197 } | |
2198 break; | |
0 | 2199 |
2753 | 2200 case 2: |
2201 { | |
2202 Uint16 *pixels; | |
2203 for (y = 0; y < icon->h; ++y) { | |
2204 pixels = (Uint16 *) icon->pixels + y * icon->pitch / 2; | |
2205 for (x = 0; x < icon->w; ++x) { | |
2206 if ((flags & 1) && *pixels == colorkey) { | |
2207 SET_MASKBIT(icon, x, y, mask); | |
2208 } else if ((flags & 2) | |
2209 && (*pixels & icon->format->Amask) == 0) { | |
2210 SET_MASKBIT(icon, x, y, mask); | |
2211 } | |
2212 pixels++; | |
2213 } | |
2214 } | |
2215 } | |
2216 break; | |
0 | 2217 |
2753 | 2218 case 4: |
2219 { | |
2220 Uint32 *pixels; | |
2221 for (y = 0; y < icon->h; ++y) { | |
2222 pixels = (Uint32 *) icon->pixels + y * icon->pitch / 4; | |
2223 for (x = 0; x < icon->w; ++x) { | |
2224 if ((flags & 1) && *pixels == colorkey) { | |
2225 SET_MASKBIT(icon, x, y, mask); | |
2226 } else if ((flags & 2) | |
2227 && (*pixels & icon->format->Amask) == 0) { | |
2228 SET_MASKBIT(icon, x, y, mask); | |
2229 } | |
2230 pixels++; | |
2231 } | |
2232 } | |
2233 } | |
2234 break; | |
2235 } | |
0 | 2236 } |
2237 | |
2238 /* | |
2239 * Sets the window manager icon for the display window. | |
2240 */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2241 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
|
2242 SDL_WM_SetIcon(SDL_Surface * icon, Uint8 * mask) |
0 | 2243 { |
2753 | 2244 if (icon && _this->SetIcon) { |
2245 /* Generate a mask if necessary, and create the icon! */ | |
2246 if (mask == NULL) { | |
2247 int mask_len = icon->h * (icon->w + 7) / 8; | |
2248 int flags = 0; | |
2249 mask = (Uint8 *) SDL_malloc(mask_len); | |
2250 if (mask == NULL) { | |
2251 return; | |
2252 } | |
2253 SDL_memset(mask, ~0, mask_len); | |
2254 if (icon->flags & SDL_SRCCOLORKEY) | |
2255 flags |= 1; | |
2256 if (icon->flags & SDL_SRCALPHA) | |
2257 flags |= 2; | |
2258 if (flags) { | |
2259 CreateMaskFromColorKeyOrAlpha(icon, mask, flags); | |
2260 } | |
2261 _this->SetIcon(_this, icon, mask); | |
2262 SDL_free(mask); | |
2263 } else { | |
2264 _this->SetIcon(_this, icon, mask); | |
2265 } | |
2266 } | |
0 | 2267 } |
2268 #endif | |
2269 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2270 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
|
2271 SDL_GetWindowWMInfo(SDL_Window * window, struct SDL_SysWMinfo *info) |
0 | 2272 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
2273 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
|
2274 |
4900
69d9db65f248
Merged the Windows custom window system hooks into the union used by X11.
Sam Lantinga <slouken@libsdl.org>
parents:
4897
diff
changeset
|
2275 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
|
2276 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
|
2277 } |
69d9db65f248
Merged the Windows custom window system hooks into the union used by X11.
Sam Lantinga <slouken@libsdl.org>
parents:
4897
diff
changeset
|
2278 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
|
2279 |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
2280 if (!_this->GetWindowWMInfo) { |
2753 | 2281 return SDL_FALSE; |
2282 } | |
2283 return (_this->GetWindowWMInfo(_this, window, info)); | |
0 | 2284 } |
2285 | |
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
|
2286 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
|
2287 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
|
2288 { |
3683 | 2289 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
|
2290 _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
|
2291 } |
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
|
2292 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
|
2293 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
|
2294 } |
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
|
2295 |
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
|
2296 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
|
2297 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
|
2298 { |
3683 | 2299 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
|
2300 _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
|
2301 } |
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
|
2302 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
|
2303 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
|
2304 } |
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
|
2305 |
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
|
2306 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
|
2307 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
|
2308 { |
3683 | 2309 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
|
2310 _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
|
2311 } |
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
|
2312 } |
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
|
2313 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2314 /* vi: set ts=4 sw=4 expandtab: */ |