Mercurial > sdl-ios-xcode
annotate src/video/SDL_video.c @ 5254:7a963be087ef
Mostly fixed fullscreen mode on Mac OS X, and you can toggle it on and off.
There are still some problems with the ConvertNSRect() calculations when switching video modes, which causes wierd window positioning issues, and the fullscreen window is still minimized on exit.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 11 Feb 2011 00:25:44 -0800 |
parents | 58265e606e4e |
children | f908e06b3c96 |
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 SDL_DisplayMode *displayMode; |
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 |
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 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
|
1010 |
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 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
|
1012 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
|
1013 } |
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
|
1014 |
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
|
1015 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
|
1016 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
|
1017 { |
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
|
1018 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
|
1019 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
|
1020 |
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
|
1021 /* 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
|
1022 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
|
1023 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
|
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 |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, 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 /* 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
|
1027 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
|
1028 (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
|
1029 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
|
1030 /* 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
|
1031 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
|
1032 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
|
1033 } 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
|
1034 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
|
1035 } |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, 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 } 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
|
1037 /* 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
|
1038 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
|
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 |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, 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 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
|
1043 /* 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
|
1044 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
|
1045 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
|
1046 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
|
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 } |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents:
3501
diff
changeset
|
1049 |
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
|
1050 /* 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
|
1051 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
|
1052 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
|
1053 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
|
1054 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
|
1055 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
|
1056 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
|
1057 _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
|
1058 } |
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
|
1059 |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents:
3501
diff
changeset
|
1060 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
|
1061 |
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 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
|
1063 _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
|
1064 } |
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 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
|
1066 |
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 /* 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
|
1068 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
|
1069 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
|
1070 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
|
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 |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents:
3501
diff
changeset
|
1075 /* 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
|
1076 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
|
1077 _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
|
1078 } |
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
|
1079 |
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
|
1080 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
|
1081 |
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 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
|
1083 _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
|
1084 } |
3517
e7eec78e4b92
Fixed mouse events for fullscreen windows on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
3516
diff
changeset
|
1085 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
|
1086 |
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 /* 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
|
1088 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
|
1089 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
|
1090 } |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents:
3501
diff
changeset
|
1091 |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1092 SDL_Window * |
1895
c121d94672cb
SDL 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 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
|
1094 { |
2753 | 1095 const Uint32 allowed_flags = (SDL_WINDOW_FULLSCREEN | |
1096 SDL_WINDOW_OPENGL | | |
1097 SDL_WINDOW_BORDERLESS | | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1098 SDL_WINDOW_RESIZABLE | |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1099 SDL_WINDOW_INPUT_GRABBED); |
2753 | 1100 SDL_VideoDisplay *display; |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1101 SDL_Window *window; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
1102 |
2753 | 1103 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
|
1104 /* Initialize the video system if needed */ |
5125
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
1105 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
|
1106 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
|
1107 } |
2753 | 1108 } |
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
|
1109 |
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 /* 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
|
1111 #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
|
1112 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
|
1113 #endif |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1114 if (flags & SDL_WINDOW_OPENGL) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1115 if (!_this->GL_CreateContext) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1116 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
|
1117 return NULL; |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1118 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1119 SDL_GL_LoadLibrary(NULL); |
2753 | 1120 } |
3685
64ce267332c6
Switched from SDL_WindowID 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 = (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
|
1122 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
|
1123 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
|
1124 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
|
1125 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
|
1126 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
|
1127 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
|
1128 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
|
1129 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
|
1130 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
|
1131 _this->windows->prev = window; |
3693
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
1132 } |
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
|
1133 _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
|
1134 |
64ce267332c6
Switched from SDL_WindowID 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 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
|
1136 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
|
1137 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
|
1138 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1139 |
2753 | 1140 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
|
1141 SDL_SetWindowTitle(window, title); |
2753 | 1142 } |
1143 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
|
1144 SDL_MaximizeWindow(window); |
2753 | 1145 } |
1146 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
|
1147 SDL_MinimizeWindow(window); |
2753 | 1148 } |
1149 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
|
1150 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
|
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 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
|
1153 |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1154 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
|
1155 } |
c121d94672cb
SDL 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 |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1157 SDL_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
|
1158 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
|
1159 { |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1160 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
|
1161 |
2753 | 1162 if (!_this) { |
1163 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
|
1164 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
|
1165 } |
64ce267332c6
Switched from SDL_WindowID 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 = (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
|
1167 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
|
1168 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
|
1169 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
|
1170 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
|
1171 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
|
1172 _this->windows->prev = window; |
3693
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
1173 } |
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
|
1174 _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
|
1175 |
2753 | 1176 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
|
1177 _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
|
1178 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
|
1179 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
|
1180 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1181 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
|
1182 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1183 |
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 int |
1928
861bc36f0ab3
Fixed crash with multiple windows
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
1185 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
|
1186 { |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1187 const Uint32 allowed_flags = (SDL_WINDOW_FULLSCREEN | |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1188 SDL_WINDOW_OPENGL | |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1189 SDL_WINDOW_BORDERLESS | |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1190 SDL_WINDOW_RESIZABLE | |
3486 | 1191 SDL_WINDOW_INPUT_GRABBED | |
1192 SDL_WINDOW_FOREIGN); | |
2753 | 1193 char *title = window->title; |
1956
ba0d62354872
Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
1194 |
2753 | 1195 if ((flags & SDL_WINDOW_OPENGL) && !_this->GL_CreateContext) { |
1196 SDL_SetError("No OpenGL support in video driver"); | |
1197 return -1; | |
1198 } | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1199 |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1200 if (window->flags & SDL_WINDOW_FOREIGN) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1201 /* 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
|
1202 flags |= SDL_WINDOW_FOREIGN; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1203 } else { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1204 flags &= ~SDL_WINDOW_FOREIGN; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1205 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1206 |
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
|
1207 /* 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
|
1208 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
|
1209 |
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 /* 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
|
1211 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
|
1212 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
|
1213 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
|
1214 } |
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 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
|
1216 _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
|
1217 } |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1218 if (_this->DestroyWindow && !(flags & SDL_WINDOW_FOREIGN)) { |
2753 | 1219 _this->DestroyWindow(_this, window); |
1220 } | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1221 |
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
|
1222 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
|
1223 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
|
1224 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
|
1225 } 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
|
1226 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
|
1227 } |
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
|
1228 } |
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
|
1229 |
2753 | 1230 window->title = NULL; |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1231 window->flags = (flags & allowed_flags); |
1956
ba0d62354872
Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
1232 |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1233 if (_this->CreateWindow && !(flags & SDL_WINDOW_FOREIGN)) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1234 if (_this->CreateWindow(_this, window) < 0) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1235 if (flags & SDL_WINDOW_OPENGL) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1236 SDL_GL_UnloadLibrary(); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1237 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1238 return -1; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1239 } |
2753 | 1240 } |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1241 |
2753 | 1242 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
|
1243 SDL_SetWindowTitle(window, title); |
2753 | 1244 SDL_free(title); |
1245 } | |
1246 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
|
1247 SDL_MaximizeWindow(window); |
2753 | 1248 } |
1249 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
|
1250 SDL_MinimizeWindow(window); |
2753 | 1251 } |
1252 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
|
1253 SDL_ShowWindow(window); |
2753 | 1254 } |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1255 SDL_UpdateWindowGrab(window); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1256 |
2753 | 1257 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
|
1258 } |
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
|
1259 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1260 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
|
1261 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
|
1262 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1263 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
|
1264 |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1265 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
|
1266 } |
64ce267332c6
Switched from SDL_WindowID 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 |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1268 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
|
1269 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
|
1270 { |
3685
64ce267332c6
Switched from SDL_WindowID 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 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
|
1272 int i; |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1273 |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1274 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
|
1275 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
|
1276 } |
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
|
1277 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
|
1278 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
|
1279 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
|
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 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
|
1283 } |
64ce267332c6
Switched from SDL_WindowID 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 |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1285 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
|
1286 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
|
1287 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1288 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
|
1289 |
2753 | 1290 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
|
1291 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1292 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1293 void |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1294 SDL_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
|
1295 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1296 CHECK_WINDOW_MAGIC(window, ); |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1297 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1298 if (title == window->title) { |
2753 | 1299 return; |
1300 } | |
1301 if (window->title) { | |
1302 SDL_free(window->title); | |
1303 } | |
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
|
1304 if (title && *title) { |
2753 | 1305 window->title = SDL_strdup(title); |
1306 } else { | |
1307 window->title = NULL; | |
1308 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1309 |
2753 | 1310 if (_this->SetWindowTitle) { |
1311 _this->SetWindowTitle(_this, window); | |
1312 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1313 } |
c121d94672cb
SDL 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 |
2753 | 1315 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
|
1316 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
|
1317 { |
4872
231f8a1c5edd
Whoops, return "" even if the window is invalid.
Sam Lantinga <slouken@libsdl.org>
parents:
4871
diff
changeset
|
1318 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
|
1319 |
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
|
1320 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
|
1321 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1322 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1323 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
|
1324 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
|
1325 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1326 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
|
1327 |
2967
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1328 if (_this->SetWindowIcon) { |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1329 _this->SetWindowIcon(_this, window, icon); |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1330 } |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1331 } |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1332 |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1333 void* |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1334 SDL_SetWindowData(SDL_Window * window, const char *name, void *userdata) |
0 | 1335 { |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1336 SDL_WindowUserData *prev, *data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1337 |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1338 CHECK_WINDOW_MAGIC(window, NULL); |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1339 |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1340 /* 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
|
1341 prev = NULL; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1342 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
|
1343 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
|
1344 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
|
1345 |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1346 if (userdata) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1347 /* Set the new value */ |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1348 data->data = userdata; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1349 } else { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1350 /* Delete this value */ |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1351 if (prev) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1352 prev->next = data->next; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1353 } else { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1354 window->data = data->next; |
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 SDL_free(data->name); |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1357 SDL_free(data); |
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 return last_value; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1360 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1361 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1362 |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1363 /* Add new data to the window */ |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1364 if (userdata) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1365 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
|
1366 data->name = SDL_strdup(name); |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1367 data->data = userdata; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1368 data->next = window->data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1369 window->data = data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1370 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1371 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
|
1372 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1373 |
2753 | 1374 void * |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1375 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
|
1376 { |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1377 SDL_WindowUserData *data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1378 |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1379 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
|
1380 |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1381 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
|
1382 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
|
1383 return data->data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1384 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1385 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1386 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
|
1387 } |
c121d94672cb
SDL 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 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1389 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
|
1390 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
|
1391 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1392 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
|
1393 |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1394 if (x != SDL_WINDOWPOS_UNDEFINED) { |
2753 | 1395 window->x = x; |
1396 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1397 if (y != SDL_WINDOWPOS_UNDEFINED) { |
2753 | 1398 window->y = y; |
1399 } | |
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
|
1400 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
|
1401 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
|
1402 _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
|
1403 } |
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
|
1404 SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MOVED, x, y); |
2753 | 1405 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1406 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1407 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1408 void |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1409 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
|
1410 { |
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
|
1411 /* 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
|
1412 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
|
1413 *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
|
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 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
|
1416 *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
|
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 |
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 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
|
1420 |
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
|
1421 /* 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
|
1422 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
|
1423 } else { |
5247
78ce7bfd0faf
Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents:
5222
diff
changeset
|
1424 if (x) { |
78ce7bfd0faf
Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents:
5222
diff
changeset
|
1425 *x = window->x; |
78ce7bfd0faf
Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents:
5222
diff
changeset
|
1426 } |
78ce7bfd0faf
Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents:
5222
diff
changeset
|
1427 if (y) { |
78ce7bfd0faf
Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents:
5222
diff
changeset
|
1428 *y = window->y; |
78ce7bfd0faf
Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents:
5222
diff
changeset
|
1429 } |
2753 | 1430 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1431 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1432 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1433 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
|
1434 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
|
1435 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1436 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
|
1437 |
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
|
1438 /* 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
|
1439 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
|
1440 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
|
1441 _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
|
1442 } |
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
|
1443 SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESIZED, w, h); |
2753 | 1444 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1445 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1446 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1447 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
|
1448 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
|
1449 { |
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
|
1450 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
|
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 (!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
|
1453 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
|
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 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
|
1456 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
|
1457 } |
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 *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
|
1460 *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
|
1461 |
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
|
1462 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
|
1463 |
5247
78ce7bfd0faf
Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents:
5222
diff
changeset
|
1464 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
|
1465 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
|
1466 *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
|
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 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
|
1469 *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
|
1470 } |
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 } 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
|
1472 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
|
1473 *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
|
1474 } |
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
|
1475 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
|
1476 *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
|
1477 } |
2753 | 1478 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1479 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1480 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1481 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
|
1482 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
|
1483 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1484 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
|
1485 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1486 if (window->flags & SDL_WINDOW_SHOWN) { |
2753 | 1487 return; |
1488 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1489 |
2753 | 1490 if (_this->ShowWindow) { |
1491 _this->ShowWindow(_this, window); | |
1492 } | |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1493 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
|
1494 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1495 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1496 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
|
1497 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
|
1498 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1499 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
|
1500 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1501 if (!(window->flags & SDL_WINDOW_SHOWN)) { |
2753 | 1502 return; |
1503 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1504 |
2753 | 1505 if (_this->HideWindow) { |
1506 _this->HideWindow(_this, window); | |
1507 } | |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1508 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
|
1509 } |
0 | 1510 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1511 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
|
1512 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
|
1513 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1514 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
|
1515 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1516 if (!(window->flags & SDL_WINDOW_SHOWN)) { |
2753 | 1517 return; |
1518 } | |
1519 if (_this->RaiseWindow) { | |
1520 _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
|
1521 } 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
|
1522 /* 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
|
1523 SDL_SendWindowEvent(window, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0); |
2753 | 1524 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1525 } |
c121d94672cb
SDL 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 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1527 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
|
1528 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
|
1529 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1530 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
|
1531 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1532 if (window->flags & SDL_WINDOW_MAXIMIZED) { |
2753 | 1533 return; |
1534 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1535 |
2753 | 1536 if (_this->MaximizeWindow) { |
1537 _this->MaximizeWindow(_this, window); | |
1538 } | |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1539 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
|
1540 } |
0 | 1541 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1542 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
|
1543 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
|
1544 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1545 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
|
1546 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1547 if (window->flags & SDL_WINDOW_MINIMIZED) { |
2753 | 1548 return; |
1549 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1550 |
2753 | 1551 if (_this->MinimizeWindow) { |
1552 _this->MinimizeWindow(_this, window); | |
1553 } | |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1554 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
|
1555 } |
c121d94672cb
SDL 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 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1557 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
|
1558 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
|
1559 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1560 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
|
1561 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1562 if (!(window->flags & (SDL_WINDOW_MAXIMIZED | SDL_WINDOW_MINIMIZED))) { |
2753 | 1563 return; |
1564 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1565 |
2753 | 1566 if (_this->RestoreWindow) { |
1567 _this->RestoreWindow(_this, window); | |
1568 } | |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1569 SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESTORED, 0, 0); |
0 | 1570 } |
1571 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1572 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
|
1573 SDL_SetWindowFullscreen(SDL_Window * window, SDL_bool fullscreen) |
0 | 1574 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1575 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
|
1576 |
2753 | 1577 if (fullscreen) { |
1578 fullscreen = SDL_WINDOW_FULLSCREEN; | |
1579 } | |
1580 if ((window->flags & SDL_WINDOW_FULLSCREEN) == fullscreen) { | |
1581 return 0; | |
1582 } | |
1583 if (fullscreen) { | |
1584 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
|
1585 |
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
|
1586 SDL_UpdateFullscreenMode(window, SDL_TRUE); |
2753 | 1587 } else { |
1588 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
|
1589 |
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
|
1590 SDL_UpdateFullscreenMode(window, SDL_FALSE); |
2753 | 1591 } |
1592 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
|
1593 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1594 |
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
|
1595 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
|
1596 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
|
1597 { |
4d39eeaad00b
Added a way to get a framebuffer interface for 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 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
|
1599 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
|
1600 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
|
1601 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
|
1602 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
|
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 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
|
1605 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
|
1606 } |
4d39eeaad00b
Added a way to get a framebuffer interface for 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 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
|
1609 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
|
1610 } |
4d39eeaad00b
Added a way to get a framebuffer interface for 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 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
|
1613 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
|
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 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
|
1617 } |
4d39eeaad00b
Added a way to get a framebuffer interface for 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 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
|
1620 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
|
1621 { |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1622 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
|
1623 |
5175
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
1624 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
|
1625 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
|
1626 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
|
1627 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
|
1628 } |
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
|
1629 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
|
1630 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
|
1631 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
|
1632 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
|
1633 } |
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
|
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 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
|
1636 } |
4d39eeaad00b
Added a way to get a framebuffer interface for 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 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
|
1639 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
|
1640 { |
4d39eeaad00b
Added a way to get a framebuffer interface for 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 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
|
1642 |
4d39eeaad00b
Added a way to get a framebuffer interface for 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 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
|
1644 |
4d39eeaad00b
Added a way to get a framebuffer interface for 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.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
|
1646 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
|
1647 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
|
1648 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
|
1649 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
|
1650 } |
4d39eeaad00b
Added a way to get a framebuffer interface for 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 |
4d39eeaad00b
Added a way to get a framebuffer interface for 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 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
|
1653 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
|
1654 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
|
1655 { |
4d39eeaad00b
Added a way to get a framebuffer interface for 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 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
|
1657 |
5175
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
1658 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
|
1659 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
|
1660 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
|
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 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1663 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
|
1664 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1665 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1666 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
|
1667 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
|
1668 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1669 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
|
1670 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1671 if ((!!mode == !!(window->flags & SDL_WINDOW_INPUT_GRABBED))) { |
2753 | 1672 return; |
1673 } | |
1674 if (mode) { | |
1675 window->flags |= SDL_WINDOW_INPUT_GRABBED; | |
1676 } else { | |
1677 window->flags &= ~SDL_WINDOW_INPUT_GRABBED; | |
1678 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1679 SDL_UpdateWindowGrab(window); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1680 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1681 |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1682 static void |
2876 | 1683 SDL_UpdateWindowGrab(SDL_Window * window) |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1684 { |
2753 | 1685 if ((window->flags & SDL_WINDOW_INPUT_FOCUS) && _this->SetWindowGrab) { |
1686 _this->SetWindowGrab(_this, window); | |
1687 } | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1688 } |
c121d94672cb
SDL 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 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1690 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
|
1691 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
|
1692 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1693 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
|
1694 |
2753 | 1695 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
|
1696 } |
0 | 1697 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1698 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
|
1699 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
|
1700 { |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1701 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
|
1702 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
|
1703 } |
c121d94672cb
SDL 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 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1705 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
|
1706 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
|
1707 { |
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
|
1708 SDL_UpdateFullscreenMode(window, SDL_FALSE); |
0 | 1709 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1710 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1711 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
|
1712 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
|
1713 { |
5175
51b4cfdf7ebb
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5172
diff
changeset
|
1714 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
|
1715 } |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1716 |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5168
diff
changeset
|
1717 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
|
1718 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
|
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 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
|
1721 } |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, 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 |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents:
3501
diff
changeset
|
1723 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
|
1724 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
|
1725 { |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1726 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
|
1727 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
|
1728 } |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents:
3501
diff
changeset
|
1729 |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents:
3501
diff
changeset
|
1730 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
|
1731 SDL_OnWindowFocusGained(SDL_Window * window) |
0 | 1732 { |
2876 | 1733 if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN)) |
1734 && _this->SetWindowGrab) { | |
2753 | 1735 _this->SetWindowGrab(_this, window); |
1736 } | |
1895
c121d94672cb
SDL 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 } |
c121d94672cb
SDL 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 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1739 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
|
1740 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
|
1741 { |
3512
5ffbbfb78987
If we're fullscreen on a single-head system and lose focus, minimize
Sam Lantinga <slouken@libsdl.org>
parents:
3511
diff
changeset
|
1742 /* 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
|
1743 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
|
1744 _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
|
1745 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
|
1746 } |
5ffbbfb78987
If we're fullscreen on a single-head system and lose focus, minimize
Sam Lantinga <slouken@libsdl.org>
parents:
3511
diff
changeset
|
1747 |
2876 | 1748 if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN)) |
1749 && _this->SetWindowGrab) { | |
2753 | 1750 _this->SetWindowGrab(_this, window); |
1751 } | |
1895
c121d94672cb
SDL 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 } |
c121d94672cb
SDL 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 * |
1895
c121d94672cb
SDL 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 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
|
1756 { |
3685
64ce267332c6
Switched from SDL_WindowID 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 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
|
1758 |
2753 | 1759 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
|
1760 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
|
1761 } |
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
|
1762 for (window = _this->windows; window; window = window->next) { |
2753 | 1763 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
|
1764 return window; |
2753 | 1765 } |
1766 } | |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1767 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
|
1768 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1769 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1770 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
|
1771 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
|
1772 { |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1773 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
|
1774 |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
1775 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
|
1776 |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1777 /* 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
|
1778 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
|
1779 |
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
|
1780 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
|
1781 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
|
1782 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
|
1783 } |
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
|
1784 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
|
1785 _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
|
1786 } |
3685
64ce267332c6
Switched from SDL_WindowID 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 (_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
|
1788 _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
|
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 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
|
1791 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
|
1792 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1793 |
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
|
1794 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
|
1795 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
|
1796 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
|
1797 } |
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
|
1798 |
4901
deadc1219bea
Minor cleanup in patches from Coursoud
Sam Lantinga <slouken@libsdl.org>
parents:
4900
diff
changeset
|
1799 /* Now invalidate magic */ |
4897
c3eb55210a90
SDL_DestroyWindow is setting window->magic to NULL too early. -
Sam Lantinga <slouken@libsdl.org>
parents:
4872
diff
changeset
|
1800 window->magic = NULL; |
c3eb55210a90
SDL_DestroyWindow is setting window->magic to NULL too early. -
Sam Lantinga <slouken@libsdl.org>
parents:
4872
diff
changeset
|
1801 |
5168
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1802 /* Free memory associated with the window */ |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1803 if (window->title) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1804 SDL_free(window->title); |
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 while (window->data) { |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1807 SDL_WindowUserData *data = window->data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1808 |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1809 window->data = data->next; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1810 SDL_free(data->name); |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1811 SDL_free(data); |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1812 } |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5157
diff
changeset
|
1813 |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1814 /* Unlink the window from the list */ |
3693
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
1815 if (window->next) { |
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
1816 window->next->prev = window->prev; |
d3f330fc2009
update window prev links
Sam Lantinga <slouken@libsdl.org>
parents:
3692
diff
changeset
|
1817 } |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1818 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
|
1819 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
|
1820 } 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
|
1821 _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
|
1822 } |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1823 |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3683
diff
changeset
|
1824 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
|
1825 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1826 |
3025
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1827 SDL_bool |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1828 SDL_IsScreenSaverEnabled() |
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 if (!_this) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1831 return SDL_TRUE; |
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 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
|
1834 } |
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 void |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1837 SDL_EnableScreenSaver() |
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) { |
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 if (!_this->suspend_screensaver) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1843 return; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1844 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1845 _this->suspend_screensaver = SDL_FALSE; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1846 if (_this->SuspendScreenSaver) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1847 _this->SuspendScreenSaver(_this); |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1848 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1849 } |
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 void |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1852 SDL_DisableScreenSaver() |
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) { |
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 if (_this->suspend_screensaver) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1858 return; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1859 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1860 _this->suspend_screensaver = SDL_TRUE; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1861 if (_this->SuspendScreenSaver) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1862 _this->SuspendScreenSaver(_this); |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1863 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1864 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
1865 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1866 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
|
1867 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
|
1868 { |
2753 | 1869 int i, j; |
0 | 1870 |
2753 | 1871 if (!_this) { |
1872 return; | |
1873 } | |
5125
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
1874 |
2753 | 1875 /* 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
|
1876 SDL_QuitQuit(); |
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
1877 SDL_MouseQuit(); |
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
1878 SDL_KeyboardQuit(); |
2753 | 1879 SDL_StopEventLoop(); |
5125
dc0dfdd58f27
Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents:
5105
diff
changeset
|
1880 |
3029
89f8a72e1ee9
Re-enable the screensaver at exit, just in case it's needed...
Sam Lantinga <slouken@libsdl.org>
parents:
3025
diff
changeset
|
1881 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
|
1882 |
2753 | 1883 /* 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
|
1884 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
|
1885 SDL_DestroyWindow(_this->windows); |
2753 | 1886 } |
1887 _this->VideoQuit(_this); | |
0 | 1888 |
2753 | 1889 for (i = _this->num_displays; i--;) { |
1890 SDL_VideoDisplay *display = &_this->displays[i]; | |
1891 for (j = display->num_display_modes; j--;) { | |
1892 if (display->display_modes[j].driverdata) { | |
1893 SDL_free(display->display_modes[j].driverdata); | |
1894 display->display_modes[j].driverdata = NULL; | |
1895 } | |
1896 } | |
1897 if (display->display_modes) { | |
1898 SDL_free(display->display_modes); | |
1899 display->display_modes = NULL; | |
1900 } | |
1901 if (display->desktop_mode.driverdata) { | |
1902 SDL_free(display->desktop_mode.driverdata); | |
1903 display->desktop_mode.driverdata = NULL; | |
1904 } | |
1905 if (display->driverdata) { | |
1906 SDL_free(display->driverdata); | |
1907 display->driverdata = NULL; | |
1908 } | |
1909 } | |
1910 if (_this->displays) { | |
1911 SDL_free(_this->displays); | |
1912 _this->displays = NULL; | |
1913 } | |
4495
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
1914 if (_this->clipboard_text) { |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
1915 SDL_free(_this->clipboard_text); |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
1916 _this->clipboard_text = NULL; |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
1917 } |
2753 | 1918 _this->free(_this); |
1919 _this = NULL; | |
0 | 1920 } |
1921 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1922 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
|
1923 SDL_GL_LoadLibrary(const char *path) |
0 | 1924 { |
2753 | 1925 int retval; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
1926 |
2753 | 1927 if (!_this) { |
1928 SDL_UninitializedVideo(); | |
1929 return -1; | |
1930 } | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1931 if (_this->gl_config.driver_loaded) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1932 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
|
1933 SDL_SetError("OpenGL library already loaded"); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1934 return -1; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1935 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1936 retval = 0; |
2753 | 1937 } else { |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1938 if (!_this->GL_LoadLibrary) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1939 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
|
1940 return -1; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1941 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1942 retval = _this->GL_LoadLibrary(_this, path); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1943 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1944 if (retval == 0) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1945 ++_this->gl_config.driver_loaded; |
2753 | 1946 } |
1947 return (retval); | |
0 | 1948 } |
1949 | |
2753 | 1950 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
|
1951 SDL_GL_GetProcAddress(const char *proc) |
0 | 1952 { |
2753 | 1953 void *func; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
1954 |
2753 | 1955 if (!_this) { |
1956 SDL_UninitializedVideo(); | |
1957 return NULL; | |
1958 } | |
1959 func = NULL; | |
1960 if (_this->GL_GetProcAddress) { | |
1961 if (_this->gl_config.driver_loaded) { | |
1962 func = _this->GL_GetProcAddress(_this, proc); | |
1963 } else { | |
1964 SDL_SetError("No GL driver has been loaded"); | |
1965 } | |
1966 } else { | |
1967 SDL_SetError("No dynamic GL support in video driver"); | |
1968 } | |
1969 return func; | |
0 | 1970 } |
1971 | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1972 void |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1973 SDL_GL_UnloadLibrary(void) |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1974 { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1975 if (!_this) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1976 SDL_UninitializedVideo(); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1977 return; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1978 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1979 if (_this->gl_config.driver_loaded > 0) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1980 if (--_this->gl_config.driver_loaded > 0) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1981 return; |
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 if (_this->GL_UnloadLibrary) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1984 _this->GL_UnloadLibrary(_this); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1985 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1986 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1987 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1988 |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1989 SDL_bool |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1990 SDL_GL_ExtensionSupported(const char *extension) |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1991 { |
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
|
1992 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 |
2753 | 1993 const GLubyte *(APIENTRY * glGetStringFunc) (GLenum); |
1994 const char *extensions; | |
1995 const char *start; | |
1996 const char *where, *terminator; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
1997 |
2753 | 1998 /* Extension names should not have spaces. */ |
1999 where = SDL_strchr(extension, ' '); | |
2000 if (where || *extension == '\0') { | |
2001 return SDL_FALSE; | |
2002 } | |
2003 /* See if there's an environment variable override */ | |
2004 start = SDL_getenv(extension); | |
2005 if (start && *start == '0') { | |
2006 return SDL_FALSE; | |
2007 } | |
2008 /* Lookup the available extensions */ | |
2009 glGetStringFunc = SDL_GL_GetProcAddress("glGetString"); | |
2010 if (glGetStringFunc) { | |
2011 extensions = (const char *) glGetStringFunc(GL_EXTENSIONS); | |
2012 } else { | |
2013 extensions = NULL; | |
2014 } | |
2015 if (!extensions) { | |
2016 return SDL_FALSE; | |
2017 } | |
2018 /* | |
2019 * It takes a bit of care to be fool-proof about parsing the OpenGL | |
2020 * extensions string. Don't be fooled by sub-strings, etc. | |
2021 */ | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2022 |
2753 | 2023 start = extensions; |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2024 |
2753 | 2025 for (;;) { |
2026 where = SDL_strstr(start, extension); | |
2027 if (!where) | |
2028 break; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2029 |
2753 | 2030 terminator = where + SDL_strlen(extension); |
2031 if (where == start || *(where - 1) == ' ') | |
2032 if (*terminator == ' ' || *terminator == '\0') | |
2033 return SDL_TRUE; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2034 |
2753 | 2035 start = terminator; |
2036 } | |
2037 return SDL_FALSE; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2038 #else |
2753 | 2039 return SDL_FALSE; |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2040 #endif |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2041 } |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2042 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2043 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2044 SDL_GL_SetAttribute(SDL_GLattr attr, int value) |
0 | 2045 { |
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
|
2046 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 |
2753 | 2047 int retval; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2048 |
2753 | 2049 if (!_this) { |
2050 SDL_UninitializedVideo(); | |
2051 return -1; | |
2052 } | |
2053 retval = 0; | |
2054 switch (attr) { | |
2055 case SDL_GL_RED_SIZE: | |
2056 _this->gl_config.red_size = value; | |
2057 break; | |
2058 case SDL_GL_GREEN_SIZE: | |
2059 _this->gl_config.green_size = value; | |
2060 break; | |
2061 case SDL_GL_BLUE_SIZE: | |
2062 _this->gl_config.blue_size = value; | |
2063 break; | |
2064 case SDL_GL_ALPHA_SIZE: | |
2065 _this->gl_config.alpha_size = value; | |
2066 break; | |
2067 case SDL_GL_DOUBLEBUFFER: | |
2068 _this->gl_config.double_buffer = value; | |
2069 break; | |
2070 case SDL_GL_BUFFER_SIZE: | |
2071 _this->gl_config.buffer_size = value; | |
2072 break; | |
2073 case SDL_GL_DEPTH_SIZE: | |
2074 _this->gl_config.depth_size = value; | |
2075 break; | |
2076 case SDL_GL_STENCIL_SIZE: | |
2077 _this->gl_config.stencil_size = value; | |
2078 break; | |
2079 case SDL_GL_ACCUM_RED_SIZE: | |
2080 _this->gl_config.accum_red_size = value; | |
2081 break; | |
2082 case SDL_GL_ACCUM_GREEN_SIZE: | |
2083 _this->gl_config.accum_green_size = value; | |
2084 break; | |
2085 case SDL_GL_ACCUM_BLUE_SIZE: | |
2086 _this->gl_config.accum_blue_size = value; | |
2087 break; | |
2088 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2089 _this->gl_config.accum_alpha_size = value; | |
2090 break; | |
2091 case SDL_GL_STEREO: | |
2092 _this->gl_config.stereo = value; | |
2093 break; | |
2094 case SDL_GL_MULTISAMPLEBUFFERS: | |
2095 _this->gl_config.multisamplebuffers = value; | |
2096 break; | |
2097 case SDL_GL_MULTISAMPLESAMPLES: | |
2098 _this->gl_config.multisamplesamples = value; | |
2099 break; | |
2100 case SDL_GL_ACCELERATED_VISUAL: | |
2101 _this->gl_config.accelerated = value; | |
2102 break; | |
2103 case SDL_GL_RETAINED_BACKING: | |
2104 _this->gl_config.retained_backing = value; | |
2105 break; | |
3100
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3099
diff
changeset
|
2106 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
|
2107 _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
|
2108 break; |
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3099
diff
changeset
|
2109 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
|
2110 _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
|
2111 break; |
2753 | 2112 default: |
2113 SDL_SetError("Unknown OpenGL attribute"); | |
2114 retval = -1; | |
2115 break; | |
2116 } | |
2117 return retval; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2118 #else |
2753 | 2119 SDL_Unsupported(); |
2120 return -1; | |
2121 #endif /* SDL_VIDEO_OPENGL */ | |
0 | 2122 } |
2123 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2124 int |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2125 SDL_GL_GetAttribute(SDL_GLattr attr, int *value) |
0 | 2126 { |
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
|
2127 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 |
2753 | 2128 void (APIENTRY * glGetIntegervFunc) (GLenum pname, GLint * params); |
3139 | 2129 GLenum(APIENTRY * glGetErrorFunc) (void); |
2753 | 2130 GLenum attrib = 0; |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2131 GLenum error = 0; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2132 |
2753 | 2133 glGetIntegervFunc = SDL_GL_GetProcAddress("glGetIntegerv"); |
2134 if (!glGetIntegervFunc) { | |
2135 return -1; | |
2136 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2137 |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2138 glGetErrorFunc = SDL_GL_GetProcAddress("glGetError"); |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2139 if (!glGetErrorFunc) { |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2140 return -1; |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2141 } |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2142 |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2143 /* Clear value in any case */ |
3139 | 2144 *value = 0; |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2145 |
2753 | 2146 switch (attr) { |
2147 case SDL_GL_RED_SIZE: | |
2148 attrib = GL_RED_BITS; | |
2149 break; | |
2150 case SDL_GL_BLUE_SIZE: | |
2151 attrib = GL_BLUE_BITS; | |
2152 break; | |
2153 case SDL_GL_GREEN_SIZE: | |
2154 attrib = GL_GREEN_BITS; | |
2155 break; | |
2156 case SDL_GL_ALPHA_SIZE: | |
2157 attrib = GL_ALPHA_BITS; | |
2158 break; | |
2159 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
|
2160 #if SDL_VIDEO_OPENGL |
2753 | 2161 attrib = GL_DOUBLEBUFFER; |
2162 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2163 #else |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2164 /* 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
|
2165 /* 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
|
2166 /* 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
|
2167 *value = _this->gl_config.double_buffer; |
2753 | 2168 return 0; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2169 #endif |
2753 | 2170 case SDL_GL_DEPTH_SIZE: |
2171 attrib = GL_DEPTH_BITS; | |
2172 break; | |
2173 case SDL_GL_STENCIL_SIZE: | |
2174 attrib = GL_STENCIL_BITS; | |
2175 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
|
2176 #if SDL_VIDEO_OPENGL |
2753 | 2177 case SDL_GL_ACCUM_RED_SIZE: |
2178 attrib = GL_ACCUM_RED_BITS; | |
2179 break; | |
2180 case SDL_GL_ACCUM_GREEN_SIZE: | |
2181 attrib = GL_ACCUM_GREEN_BITS; | |
2182 break; | |
2183 case SDL_GL_ACCUM_BLUE_SIZE: | |
2184 attrib = GL_ACCUM_BLUE_BITS; | |
2185 break; | |
2186 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2187 attrib = GL_ACCUM_ALPHA_BITS; | |
2188 break; | |
2189 case SDL_GL_STEREO: | |
2190 attrib = GL_STEREO; | |
2191 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2192 #else |
2753 | 2193 case SDL_GL_ACCUM_RED_SIZE: |
2194 case SDL_GL_ACCUM_GREEN_SIZE: | |
2195 case SDL_GL_ACCUM_BLUE_SIZE: | |
2196 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2197 case SDL_GL_STEREO: | |
2198 /* none of these are supported in OpenGL ES */ | |
2199 *value = 0; | |
2200 return 0; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2201 #endif |
2753 | 2202 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
|
2203 #if SDL_VIDEO_OPENGL |
2753 | 2204 attrib = GL_SAMPLE_BUFFERS_ARB; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2205 #else |
2753 | 2206 attrib = GL_SAMPLE_BUFFERS; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2207 #endif |
2753 | 2208 break; |
2209 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
|
2210 #if SDL_VIDEO_OPENGL |
2753 | 2211 attrib = GL_SAMPLES_ARB; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2212 #else |
2753 | 2213 attrib = GL_SAMPLES; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2214 #endif |
2753 | 2215 break; |
2216 case SDL_GL_BUFFER_SIZE: | |
2217 { | |
2218 GLint bits = 0; | |
2219 GLint component; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2220 |
2753 | 2221 /* |
2222 * there doesn't seem to be a single flag in OpenGL | |
2223 * for this! | |
2224 */ | |
2225 glGetIntegervFunc(GL_RED_BITS, &component); | |
2226 bits += component; | |
2227 glGetIntegervFunc(GL_GREEN_BITS, &component); | |
2228 bits += component; | |
2229 glGetIntegervFunc(GL_BLUE_BITS, &component); | |
2230 bits += component; | |
2231 glGetIntegervFunc(GL_ALPHA_BITS, &component); | |
2232 bits += component; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2233 |
2753 | 2234 *value = bits; |
2235 return 0; | |
2236 } | |
2237 case SDL_GL_ACCELERATED_VISUAL: | |
2238 { | |
2239 /* 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
|
2240 *value = (_this->gl_config.accelerated != 0); |
2753 | 2241 return 0; |
2242 } | |
5213
1be088cec098
At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents:
5212
diff
changeset
|
2243 case SDL_GL_RETAINED_BACKING: |
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 *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
|
2246 return 0; |
1be088cec098
At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents:
5212
diff
changeset
|
2247 } |
1be088cec098
At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents:
5212
diff
changeset
|
2248 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
|
2249 { |
1be088cec098
At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents:
5212
diff
changeset
|
2250 *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
|
2251 return 0; |
1be088cec098
At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents:
5212
diff
changeset
|
2252 } |
1be088cec098
At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents:
5212
diff
changeset
|
2253 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
|
2254 { |
1be088cec098
At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents:
5212
diff
changeset
|
2255 *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
|
2256 return 0; |
1be088cec098
At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents:
5212
diff
changeset
|
2257 } |
2753 | 2258 default: |
2259 SDL_SetError("Unknown OpenGL attribute"); | |
2260 return -1; | |
2261 } | |
0 | 2262 |
2753 | 2263 glGetIntegervFunc(attrib, (GLint *) value); |
3139 | 2264 error = glGetErrorFunc(); |
2265 if (error != GL_NO_ERROR) { | |
2266 switch (error) { | |
2267 case GL_INVALID_ENUM: | |
2268 { | |
2269 SDL_SetError("OpenGL error: GL_INVALID_ENUM"); | |
2270 } | |
2271 break; | |
2272 case GL_INVALID_VALUE: | |
2273 { | |
2274 SDL_SetError("OpenGL error: GL_INVALID_VALUE"); | |
2275 } | |
2276 break; | |
2277 default: | |
2278 { | |
2279 SDL_SetError("OpenGL error: %08X", error); | |
2280 } | |
2281 break; | |
2282 } | |
2283 return -1; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2284 } |
2753 | 2285 return 0; |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2286 #else |
2753 | 2287 SDL_Unsupported(); |
2288 return -1; | |
2289 #endif /* SDL_VIDEO_OPENGL */ | |
0 | 2290 } |
2291 | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2292 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
|
2293 SDL_GL_CreateContext(SDL_Window * window) |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2294 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
2295 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
|
2296 |
2753 | 2297 if (!(window->flags & SDL_WINDOW_OPENGL)) { |
2298 SDL_SetError("The specified window isn't an OpenGL window"); | |
2299 return NULL; | |
2300 } | |
2301 return _this->GL_CreateContext(_this, window); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2302 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2303 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2304 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
|
2305 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
|
2306 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
2307 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
|
2308 |
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
2309 if (!(window->flags & SDL_WINDOW_OPENGL)) { |
2753 | 2310 SDL_SetError("The specified window isn't an OpenGL window"); |
2311 return -1; | |
2312 } | |
2313 if (!context) { | |
2314 window = NULL; | |
2315 } | |
2316 return _this->GL_MakeCurrent(_this, window, context); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2317 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2318 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2319 int |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2320 SDL_GL_SetSwapInterval(int interval) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2321 { |
2753 | 2322 if (!_this) { |
2323 SDL_UninitializedVideo(); | |
2324 return -1; | |
2325 } | |
2326 if (_this->GL_SetSwapInterval) { | |
2327 return _this->GL_SetSwapInterval(_this, interval); | |
2328 } else { | |
2329 SDL_SetError("Setting the swap interval is not supported"); | |
2330 return -1; | |
2331 } | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2332 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2333 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2334 int |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2335 SDL_GL_GetSwapInterval(void) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2336 { |
2753 | 2337 if (!_this) { |
2338 SDL_UninitializedVideo(); | |
2339 return -1; | |
2340 } | |
2341 if (_this->GL_GetSwapInterval) { | |
2342 return _this->GL_GetSwapInterval(_this); | |
2343 } else { | |
2344 SDL_SetError("Getting the swap interval is not supported"); | |
2345 return -1; | |
2346 } | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2347 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2348 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2349 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
|
2350 SDL_GL_SwapWindow(SDL_Window * window) |
0 | 2351 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
2352 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
|
2353 |
2753 | 2354 if (!(window->flags & SDL_WINDOW_OPENGL)) { |
2355 SDL_SetError("The specified window isn't an OpenGL window"); | |
2356 return; | |
2357 } | |
2358 _this->GL_SwapWindow(_this, window); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2359 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2360 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2361 void |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2362 SDL_GL_DeleteContext(SDL_GLContext context) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2363 { |
4526 | 2364 if (!_this || !_this->gl_data || !context) { |
2753 | 2365 return; |
2366 } | |
2367 _this->GL_MakeCurrent(_this, NULL, NULL); | |
2368 _this->GL_DeleteContext(_this, context); | |
0 | 2369 } |
2370 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2371 #if 0 // FIXME |
2744
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2372 /* |
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2373 * 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
|
2374 * & 2 for alpha channel. |
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2375 */ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2376 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
|
2377 CreateMaskFromColorKeyOrAlpha(SDL_Surface * icon, Uint8 * mask, int flags) |
0 | 2378 { |
2753 | 2379 int x, y; |
2380 Uint32 colorkey; | |
0 | 2381 #define SET_MASKBIT(icon, x, y, mask) \ |
2382 mask[(y*((icon->w+7)/8))+(x/8)] &= ~(0x01<<(7-(x%8))) | |
2383 | |
2753 | 2384 colorkey = icon->format->colorkey; |
2385 switch (icon->format->BytesPerPixel) { | |
2386 case 1: | |
2387 { | |
2388 Uint8 *pixels; | |
2389 for (y = 0; y < icon->h; ++y) { | |
2390 pixels = (Uint8 *) icon->pixels + y * icon->pitch; | |
2391 for (x = 0; x < icon->w; ++x) { | |
2392 if (*pixels++ == colorkey) { | |
2393 SET_MASKBIT(icon, x, y, mask); | |
2394 } | |
2395 } | |
2396 } | |
2397 } | |
2398 break; | |
0 | 2399 |
2753 | 2400 case 2: |
2401 { | |
2402 Uint16 *pixels; | |
2403 for (y = 0; y < icon->h; ++y) { | |
2404 pixels = (Uint16 *) icon->pixels + y * icon->pitch / 2; | |
2405 for (x = 0; x < icon->w; ++x) { | |
2406 if ((flags & 1) && *pixels == colorkey) { | |
2407 SET_MASKBIT(icon, x, y, mask); | |
2408 } else if ((flags & 2) | |
2409 && (*pixels & icon->format->Amask) == 0) { | |
2410 SET_MASKBIT(icon, x, y, mask); | |
2411 } | |
2412 pixels++; | |
2413 } | |
2414 } | |
2415 } | |
2416 break; | |
0 | 2417 |
2753 | 2418 case 4: |
2419 { | |
2420 Uint32 *pixels; | |
2421 for (y = 0; y < icon->h; ++y) { | |
2422 pixels = (Uint32 *) icon->pixels + y * icon->pitch / 4; | |
2423 for (x = 0; x < icon->w; ++x) { | |
2424 if ((flags & 1) && *pixels == colorkey) { | |
2425 SET_MASKBIT(icon, x, y, mask); | |
2426 } else if ((flags & 2) | |
2427 && (*pixels & icon->format->Amask) == 0) { | |
2428 SET_MASKBIT(icon, x, y, mask); | |
2429 } | |
2430 pixels++; | |
2431 } | |
2432 } | |
2433 } | |
2434 break; | |
2435 } | |
0 | 2436 } |
2437 | |
2438 /* | |
2439 * Sets the window manager icon for the display window. | |
2440 */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2441 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
|
2442 SDL_WM_SetIcon(SDL_Surface * icon, Uint8 * mask) |
0 | 2443 { |
2753 | 2444 if (icon && _this->SetIcon) { |
2445 /* Generate a mask if necessary, and create the icon! */ | |
2446 if (mask == NULL) { | |
2447 int mask_len = icon->h * (icon->w + 7) / 8; | |
2448 int flags = 0; | |
2449 mask = (Uint8 *) SDL_malloc(mask_len); | |
2450 if (mask == NULL) { | |
2451 return; | |
2452 } | |
2453 SDL_memset(mask, ~0, mask_len); | |
2454 if (icon->flags & SDL_SRCCOLORKEY) | |
2455 flags |= 1; | |
2456 if (icon->flags & SDL_SRCALPHA) | |
2457 flags |= 2; | |
2458 if (flags) { | |
2459 CreateMaskFromColorKeyOrAlpha(icon, mask, flags); | |
2460 } | |
2461 _this->SetIcon(_this, icon, mask); | |
2462 SDL_free(mask); | |
2463 } else { | |
2464 _this->SetIcon(_this, icon, mask); | |
2465 } | |
2466 } | |
0 | 2467 } |
2468 #endif | |
2469 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2470 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
|
2471 SDL_GetWindowWMInfo(SDL_Window * window, struct SDL_SysWMinfo *info) |
0 | 2472 { |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
2473 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
|
2474 |
4900
69d9db65f248
Merged the Windows custom window system hooks into the union used by X11.
Sam Lantinga <slouken@libsdl.org>
parents:
4897
diff
changeset
|
2475 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
|
2476 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
|
2477 } |
69d9db65f248
Merged the Windows custom window system hooks into the union used by X11.
Sam Lantinga <slouken@libsdl.org>
parents:
4897
diff
changeset
|
2478 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
|
2479 |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3694
diff
changeset
|
2480 if (!_this->GetWindowWMInfo) { |
2753 | 2481 return SDL_FALSE; |
2482 } | |
2483 return (_this->GetWindowWMInfo(_this, window, info)); | |
0 | 2484 } |
2485 | |
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
|
2486 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
|
2487 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
|
2488 { |
3683 | 2489 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
|
2490 _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
|
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 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
|
2493 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
|
2494 } |
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 |
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
|
2496 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
|
2497 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
|
2498 { |
3683 | 2499 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
|
2500 _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
|
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 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
|
2503 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
|
2504 } |
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 |
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
|
2506 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
|
2507 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
|
2508 { |
3683 | 2509 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
|
2510 _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
|
2511 } |
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
|
2512 } |
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
|
2513 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2514 /* vi: set ts=4 sw=4 expandtab: */ |