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