annotate src/video/SDL_video.c @ 5275:7aba0406c273

Frank Zago to sdl The following patch fixes some of the bitrot for the Nintendo DS port. The support is still basic at the moment, but it allows to run the "general" test under the current head of tree (parent: 5269:11bd1585efb5 tip). Most of the patch is mine, but I integrated a couple changes that John Magnotti posted on Feb 1st.
author Sam Lantinga <slouken@libsdl.org>
date Sat, 12 Feb 2011 11:36:56 -0800
parents c5a04f3c3908
children bad04e4710f6
rev   line source
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1 /*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
5267
b530ef003506 Happy 2011! :)
Sam Lantinga <slouken@libsdl.org>
parents: 5266
diff changeset
3 Copyright (C) 1997-2011 Sam Lantinga
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
4
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
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
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
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
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
9
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
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
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
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
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
18
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
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
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
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
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
23
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
24 /* The high-level video driver subsystem */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
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
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
28 #include "SDL_sysvideo.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
29 #include "SDL_blit.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
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
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
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
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
58 &X11_bootstrap,
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
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
e8916fe9cfc8 Fixed bug #925
Sam Lantinga <slouken@libsdl.org>
parents: 5048
diff changeset
63 #if SDL_VIDEO_DRIVER_WINDOWS
e8916fe9cfc8 Fixed bug #925
Sam Lantinga <slouken@libsdl.org>
parents: 5048
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
84 NULL
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
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
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
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
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
110 /* Various local functions */
2876
Sam Lantinga <slouken@libsdl.org>
parents: 2875
diff changeset
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) {
5273
c5a04f3c3908 Fixed a crash caused by the 1.2 code path getting a YV12 texture. :)
Sam Lantinga <slouken@libsdl.org>
parents: 5267
diff changeset
277 if (!SDL_ISPIXELFORMAT_FOURCC(info.texture_formats[i]) &&
c5a04f3c3908 Fixed a crash caused by the 1.2 code path getting a YV12 texture. :)
Sam Lantinga <slouken@libsdl.org>
parents: 5267
diff changeset
278 !SDL_ISPIXELFORMAT_ALPHA(info.texture_formats[i])) {
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
279 *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
280 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
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
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
285 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
286 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
287 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
288 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
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
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
291 /* 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
292 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
293 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
294 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
295 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
296 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
297 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
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
4d39eeaad00b Added a way to get a framebuffer interface for 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 *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
301 *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
302 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
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
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
306 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
307 {
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
308 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
309 #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
310 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
311 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
312 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
313 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
314 #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
315
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
317 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
318 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
319 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
320 }
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
321
5175
51b4cfdf7ebb Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents: 5172
diff changeset
322 #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
323 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
324 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
325 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
326 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
327 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
328 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
329 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
330 }
51b4cfdf7ebb Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents: 5172
diff changeset
331 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
332 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
333 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
334 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
335 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
336 }
51b4cfdf7ebb Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents: 5172
diff changeset
337 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
338 }
51b4cfdf7ebb Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents: 5172
diff changeset
339 #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
340 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
341 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
342 }
5175
51b4cfdf7ebb Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents: 5172
diff changeset
343 #endif
51b4cfdf7ebb Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents: 5172
diff changeset
344
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
345 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
346 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
347 }
5175
51b4cfdf7ebb Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents: 5172
diff changeset
348
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
349 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
350 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
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
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
354 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
355 {
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
357
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
359 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
360 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
361 }
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
363 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
364 }
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
366 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
367 }
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
369 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
370 }
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
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
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
374
1895
c121d94672cb SDL 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 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
376 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
377 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
378 SDL_DisplayMode a = *(const SDL_DisplayMode *) A;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
379 SDL_DisplayMode b = *(const SDL_DisplayMode *) B;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
380
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
381 if (a.w != b.w) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
382 return b.w - a.w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
383 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
384 if (a.h != b.h) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
385 return b.h - a.h;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
386 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
387 if (SDL_BITSPERPIXEL(a.format) != SDL_BITSPERPIXEL(b.format)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
388 return SDL_BITSPERPIXEL(b.format) - SDL_BITSPERPIXEL(a.format);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
389 }
3178
72edc980789b 1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents: 3169
diff changeset
390 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
391 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
392 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
393 if (a.refresh_rate != b.refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
394 return b.refresh_rate - a.refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
395 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
396 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
397 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
398
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
399 static void
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
400 SDL_UninitializedVideo()
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
401 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
402 SDL_SetError("Video subsystem has not been initialized");
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
403 }
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
404
1895
c121d94672cb SDL 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 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
406 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
407 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
408 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
409 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
410
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
411 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
412 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
413 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
414 if (index >= 0 && index < SDL_GetNumVideoDrivers()) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
415 return bootstrap[index]->name;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
416 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
417 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
418 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
419
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
420 /*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
421 * Initialize the video and event subsystems -- determine native pixel format
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
422 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
423 int
5125
dc0dfdd58f27 Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents: 5105
diff changeset
424 SDL_VideoInit(const char *driver_name)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
425 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
426 SDL_VideoDevice *video;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
427 int index;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
428 int i;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
429
3694
b0a707f589a6 Fixed bug #916
Sam Lantinga <slouken@libsdl.org>
parents: 3693
diff changeset
430 /* Check to make sure we don't overwrite '_this' */
b0a707f589a6 Fixed bug #916
Sam Lantinga <slouken@libsdl.org>
parents: 3693
diff changeset
431 if (_this != NULL) {
b0a707f589a6 Fixed bug #916
Sam Lantinga <slouken@libsdl.org>
parents: 3693
diff changeset
432 SDL_VideoQuit();
b0a707f589a6 Fixed bug #916
Sam Lantinga <slouken@libsdl.org>
parents: 3693
diff changeset
433 }
b0a707f589a6 Fixed bug #916
Sam Lantinga <slouken@libsdl.org>
parents: 3693
diff changeset
434
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
435 /* Start the event loop */
5125
dc0dfdd58f27 Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents: 5105
diff changeset
436 if (SDL_StartEventLoop() < 0 ||
dc0dfdd58f27 Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents: 5105
diff changeset
437 SDL_KeyboardInit() < 0 ||
dc0dfdd58f27 Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents: 5105
diff changeset
438 SDL_MouseInit() < 0 ||
dc0dfdd58f27 Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents: 5105
diff changeset
439 SDL_TouchInit() < 0 ||
dc0dfdd58f27 Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents: 5105
diff changeset
440 SDL_QuitInit() < 0) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
441 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
442 }
3694
b0a707f589a6 Fixed bug #916
Sam Lantinga <slouken@libsdl.org>
parents: 3693
diff changeset
443
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
444 /* Select the proper video driver */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
445 index = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
446 video = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
447 if (driver_name == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
448 driver_name = SDL_getenv("SDL_VIDEODRIVER");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
449 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
450 if (driver_name != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
451 for (i = 0; bootstrap[i]; ++i) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
452 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
453 video = bootstrap[i]->create(index);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
454 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
455 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
456 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
457 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
458 for (i = 0; bootstrap[i]; ++i) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
459 if (bootstrap[i]->available()) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
460 video = bootstrap[i]->create(index);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
461 if (video != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
462 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
463 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
464 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
465 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
466 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
467 if (video == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
468 if (driver_name) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
469 SDL_SetError("%s not available", driver_name);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
470 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
471 SDL_SetError("No available video device");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
472 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
473 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
474 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
475 _this = video;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
476 _this->name = bootstrap[i]->name;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
477 _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
478
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
479
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
480 /* Set some very sane GL defaults */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
481 _this->gl_config.driver_loaded = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
482 _this->gl_config.dll_handle = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
483 _this->gl_config.red_size = 3;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
484 _this->gl_config.green_size = 3;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
485 _this->gl_config.blue_size = 2;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
486 _this->gl_config.alpha_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
487 _this->gl_config.buffer_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
488 _this->gl_config.depth_size = 16;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
489 _this->gl_config.stencil_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
490 _this->gl_config.double_buffer = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
491 _this->gl_config.accum_red_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
492 _this->gl_config.accum_green_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
493 _this->gl_config.accum_blue_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
494 _this->gl_config.accum_alpha_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
495 _this->gl_config.stereo = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
496 _this->gl_config.multisamplebuffers = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
497 _this->gl_config.multisamplesamples = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
498 _this->gl_config.retained_backing = 1;
3571
19691cebb866 Default to allow either accelerated or not
Sam Lantinga <slouken@libsdl.org>
parents: 3570
diff changeset
499 _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
500 #if SDL_VIDEO_OPENGL
3100
7dc982143c06 Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents: 3099
diff changeset
501 _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
502 _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
503 #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
504 _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
505 _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
506 #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
507 _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
508 _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
509 #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
510
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
511 /* Initialize the video subsystem */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
512 if (_this->VideoInit(_this) < 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
513 SDL_VideoQuit();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
514 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
515 }
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
516
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
517 /* Make sure some displays were added */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
518 if (_this->num_displays == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
519 SDL_SetError("The video driver did not add any displays");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
520 SDL_VideoQuit();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
521 return (-1);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
522 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
523
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
524 /* 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
525 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
526 _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
527 _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
528 _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
529 }
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
530
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
531 /* We're ready to go! */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
532 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
533 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
534
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
535 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
536 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
537 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
538 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
539 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
540 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
541 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
542 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
543 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
544
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
545 SDL_VideoDevice *
4472
791b3256fb22 Mostly cleaned up warnings with -Wmissing-prototypes
Sam Lantinga <slouken@libsdl.org>
parents: 4433
diff changeset
546 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
547 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
548 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
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
c121d94672cb SDL 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 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
552 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
553 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
554 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
555
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
556 SDL_zero(display);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
557 if (desktop_mode) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
558 display.desktop_mode = *desktop_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
559 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
560 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
561
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
562 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
563 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
564
1895
c121d94672cb SDL 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 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
566 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
567 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
568 SDL_VideoDisplay *displays;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
569 int index = -1;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
570
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
571 displays =
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
572 SDL_realloc(_this->displays,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
573 (_this->num_displays + 1) * sizeof(*displays));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
574 if (displays) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
575 index = _this->num_displays++;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
576 displays[index] = *display;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
577 displays[index].device = _this;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
578 _this->displays = displays;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
579 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
580 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
581 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
582 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
583 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
584
1895
c121d94672cb SDL 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 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
586 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
587 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
588 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
589 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
590 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
591 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
592 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
593 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
594
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
595 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
596 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
597 {
5249
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
598 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
599
3528
59ff7a2beb57 Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents: 3526
diff changeset
600 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
601 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
602
59ff7a2beb57 Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents: 3526
diff changeset
603 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
604 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
605 return 0;
3528
59ff7a2beb57 Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents: 3526
diff changeset
606 }
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
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
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 /* 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
610 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
611 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
612 rect->y = 0;
3528
59ff7a2beb57 Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents: 3526
diff changeset
613 } 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
614 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
615 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
616 }
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
617 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
618 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
619 }
59ff7a2beb57 Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents: 3526
diff changeset
620 return 0;
59ff7a2beb57 Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents: 3526
diff changeset
621 }
59ff7a2beb57 Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents: 3526
diff changeset
622
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
623 SDL_bool
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
624 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
625 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
626 SDL_DisplayMode *modes;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
627 int i, nmodes;
910
4ab6d1fd028f Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents: 883
diff changeset
628
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
629 /* Make sure we don't already have the mode in the list */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
630 modes = display->display_modes;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
631 nmodes = display->num_display_modes;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
632 for (i = nmodes; i--;) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
633 if (SDL_memcmp(mode, &modes[i], sizeof(*mode)) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
634 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
635 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
636 }
910
4ab6d1fd028f Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents: 883
diff changeset
637
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
638 /* Go ahead and add the new mode */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
639 if (nmodes == display->max_display_modes) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
640 modes =
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
641 SDL_realloc(modes,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
642 (display->max_display_modes + 32) * sizeof(*modes));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
643 if (!modes) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
644 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
645 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
646 display->display_modes = modes;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
647 display->max_display_modes += 32;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
648 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
649 modes[nmodes] = *mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
650 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
651
3178
72edc980789b 1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents: 3169
diff changeset
652 /* 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
653 SDL_qsort(display->display_modes, display->num_display_modes,
3186
Sam Lantinga <slouken@libsdl.org>
parents: 3178
diff changeset
654 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
655
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
656 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
657 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
658
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
659 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
660 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
661 {
58265e606e4e Window 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 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
663 }
58265e606e4e Window coordinates are in the global space and windows are not tied to a particular display.
Sam Lantinga <slouken@libsdl.org>
parents: 5249
diff changeset
664
5249
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
665 static int
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
666 SDL_GetNumDisplayModesForDisplay(SDL_VideoDisplay * display)
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
667 {
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
668 if (!display->num_display_modes && _this->GetDisplayModes) {
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
669 _this->GetDisplayModes(_this, display);
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
670 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
671 sizeof(SDL_DisplayMode), cmpmodes);
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
672 }
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
673 return display->num_display_modes;
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
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
676 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
677 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
678 {
5249
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
679 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
680
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
681 return SDL_GetNumDisplayModesForDisplay(&_this->displays[displayIndex]);
3500
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
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
684 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
685 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
686 {
5249
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
687 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
688
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
689 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
690
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
691 display = &_this->displays[displayIndex];
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
692 if (index < 0 || index >= SDL_GetNumDisplayModesForDisplay(display)) {
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
693 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
694 SDL_GetNumDisplayModesForDisplay(display) - 1);
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
695 return -1;
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
696 }
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
697 if (mode) {
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
698 *mode = display->display_modes[index];
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
699 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
700 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
701 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
702
1967
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1965
diff changeset
703 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
704 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
705 {
5249
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
706 SDL_VideoDisplay *display;
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
707
5249
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
708 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
709
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
710 display = &_this->displays[displayIndex];
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
711 if (mode) {
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
712 *mode = display->desktop_mode;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
713 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
714 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
715 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
716
1967
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1965
diff changeset
717 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
718 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
719 {
5249
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
720 SDL_VideoDisplay *display;
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
721
5249
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
722 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
723
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
724 display = &_this->displays[displayIndex];
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
725 if (mode) {
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
726 *mode = display->current_mode;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
727 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
728 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
729 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
730
5249
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
731 static SDL_DisplayMode *
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
732 SDL_GetClosestDisplayModeForDisplay(SDL_VideoDisplay * display,
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
733 const SDL_DisplayMode * mode,
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
734 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
735 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
736 Uint32 target_format;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
737 int target_refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
738 int i;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
739 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
740
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
741 if (!mode || !closest) {
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
742 SDL_SetError("Missing desired mode or closest mode parameter");
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
743 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
744 }
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
745
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
746 /* Default to the desktop format */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
747 if (mode->format) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
748 target_format = mode->format;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
749 } else {
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
750 target_format = display->desktop_mode.format;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
751 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
752
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
753 /* Default to the desktop refresh rate */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
754 if (mode->refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
755 target_refresh_rate = mode->refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
756 } else {
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
757 target_refresh_rate = display->desktop_mode.refresh_rate;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
758 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
759
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
760 match = NULL;
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
761 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
762 current = &display->display_modes[i];
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
763
2789
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
764 if (current->w && (current->w < mode->w)) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
765 /* Out of sorted modes large enough here */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
766 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
767 }
2789
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
768 if (current->h && (current->h < mode->h)) {
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
769 if (current->w && (current->w == mode->w)) {
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
770 /* Out of sorted modes large enough here */
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
771 break;
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
772 }
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
773 /* 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
774 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
775 modes may still follow. */
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
776 continue;
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
777 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
778 if (!match || current->w < match->w || current->h < match->h) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
779 match = current;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
780 continue;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
781 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
782 if (current->format != match->format) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
783 /* Sorted highest depth to lowest */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
784 if (current->format == target_format ||
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
785 (SDL_BITSPERPIXEL(current->format) >=
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
786 SDL_BITSPERPIXEL(target_format)
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
787 && SDL_PIXELTYPE(current->format) ==
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
788 SDL_PIXELTYPE(target_format))) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
789 match = current;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
790 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
791 continue;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
792 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
793 if (current->refresh_rate != match->refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
794 /* Sorted highest refresh to lowest */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
795 if (current->refresh_rate >= target_refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
796 match = current;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
797 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
798 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
799 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
800 if (match) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
801 if (match->format) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
802 closest->format = match->format;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
803 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
804 closest->format = mode->format;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
805 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
806 if (match->w && match->h) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
807 closest->w = match->w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
808 closest->h = match->h;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
809 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
810 closest->w = mode->w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
811 closest->h = mode->h;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
812 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
813 if (match->refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
814 closest->refresh_rate = match->refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
815 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
816 closest->refresh_rate = mode->refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
817 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
818 closest->driverdata = match->driverdata;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
819
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
820 /*
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
821 * Pick some reasonable defaults if the app and driver don't
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
822 * care
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
823 */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
824 if (!closest->format) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
825 closest->format = SDL_PIXELFORMAT_RGB888;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
826 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
827 if (!closest->w) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
828 closest->w = 640;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
829 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
830 if (!closest->h) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
831 closest->h = 480;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
832 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
833 return closest;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
834 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
835 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
836 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
837
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
838 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
839 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
840 const SDL_DisplayMode * mode,
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
841 SDL_DisplayMode * closest)
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
842 {
5249
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
843 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
844
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
845 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
846
762e40fb8e28 Be explicit about what display you're querying. The default display is 0.
Sam Lantinga <slouken@libsdl.org>
parents: 5248
diff changeset
847 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
848 return SDL_GetClosestDisplayModeForDisplay(display, mode, closest);
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
849 }
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
850
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
851 int
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
852 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
853 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
854 SDL_DisplayMode display_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
855 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
856
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
857 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
858 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
859
98a819296cdc Whenever a window becomes fullscreen, shown, unminimized, 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 /* 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
861 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
862 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
863 }
98a819296cdc Whenever a window becomes fullscreen, shown, unminimized, 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 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
865 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
866 }
98a819296cdc Whenever a window becomes fullscreen, shown, unminimized, 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 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
868 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
869 }
98a819296cdc Whenever a window becomes fullscreen, shown, unminimized, 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 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
871 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
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
98a819296cdc Whenever a window becomes fullscreen, shown, unminimized, 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 /* 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
875 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
876 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
877 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
878 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
879 }
98a819296cdc Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents: 3501
diff changeset
880 } 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
881 display_mode = display->desktop_mode;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
882 }
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
883
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
884 /* 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
885 current_mode = display->current_mode;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
886 if (SDL_memcmp(&display_mode, &current_mode, sizeof(display_mode)) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
887 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
888 }
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
889
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
890 /* 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
891 if (!_this->SetDisplayMode) {
4a7f284a82b2 You can't change the resolution on some devices
Sam Lantinga <slouken@libsdl.org>
parents: 4977
diff changeset
892 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
893 return -1;
4a7f284a82b2 You can't change the resolution on some devices
Sam Lantinga <slouken@libsdl.org>
parents: 4977
diff changeset
894 }
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
895 if (_this->SetDisplayMode(_this, display, &display_mode) < 0) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
896 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
897 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
898 display->current_mode = display_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
899 return 0;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
900 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
901
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
902 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
903 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
904 {
58265e606e4e Window 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 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
906 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
907 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
908 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
909 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
910 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
911 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
912
58265e606e4e Window 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 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
914
58265e606e4e Window 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 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
916 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
917 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
918 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
919 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
920 }
58265e606e4e Window 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 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
922 }
58265e606e4e Window 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 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
924 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
925 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
926 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
927 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
928 }
58265e606e4e Window 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 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
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
58265e606e4e Window 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 /* 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
933 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
934 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
935 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
936 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
937
58265e606e4e Window 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 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
939 if (display->fullscreen_window == window || SDL_EnclosePoints(&center, 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
940 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
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
58265e606e4e Window 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.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
944 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
945 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
946 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
947 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
948 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
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 }
58265e606e4e Window 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 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
952 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
953 }
58265e606e4e Window 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 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
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
58265e606e4e Window 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_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
958 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
959 {
58265e606e4e Window 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 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
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
58265e606e4e Window coordinates are in the global space and windows are not tied to a particular display.
Sam Lantinga <slouken@libsdl.org>
parents: 5249
diff changeset
963 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
964 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
965 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
966 CHECK_WINDOW_MAGIC(window, -1);
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
967
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
968 if (mode) {
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
969 window->fullscreen_mode = *mode;
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
970 } else {
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
971 SDL_zero(window->fullscreen_mode);
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
972 }
3526
e6f2f312780f Fixed compiler warnings
Sam Lantinga <slouken@libsdl.org>
parents: 3517
diff changeset
973 return 0;
3500
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
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
976 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
977 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
978 {
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
979 SDL_DisplayMode fullscreen_mode;
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
980
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
981 CHECK_WINDOW_MAGIC(window, -1);
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
982
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
983 fullscreen_mode = window->fullscreen_mode;
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
984 if (!fullscreen_mode.w) {
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
985 fullscreen_mode.w = window->w;
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
986 }
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
987 if (!fullscreen_mode.h) {
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
988 fullscreen_mode.h = window->h;
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
989 }
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
990
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
991 if (!SDL_GetClosestDisplayModeForDisplay(SDL_GetDisplayForWindow(window),
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
992 &fullscreen_mode,
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
993 &fullscreen_mode)) {
2869
2fe507a2ef7d Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents: 2860
diff changeset
994 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
995 return -1;
2fe507a2ef7d Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents: 2860
diff changeset
996 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3091
diff changeset
997
3500
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
998 if (mode) {
4b594623401b Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents: 3489
diff changeset
999 *mode = fullscreen_mode;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1000 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1001 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
1002 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1003
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
1004 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
1005 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
1006 {
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
1007 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
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;
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
1086 }
98a819296cdc Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents: 3501
diff changeset
1087
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1088 SDL_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
1089 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
1090 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1091 const Uint32 allowed_flags = (SDL_WINDOW_FULLSCREEN |
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1092 SDL_WINDOW_OPENGL |
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1093 SDL_WINDOW_BORDERLESS |
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1094 SDL_WINDOW_RESIZABLE |
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1095 SDL_WINDOW_INPUT_GRABBED);
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1096 SDL_Window *window;
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
1097
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1098 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
1099 /* Initialize the video system if needed */
5125
dc0dfdd58f27 Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents: 5105
diff changeset
1100 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
1101 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
1102 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1103 }
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
1104
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
1105 /* 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
1106 #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
1107 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
1108 #endif
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1109 if (flags & SDL_WINDOW_OPENGL) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1110 if (!_this->GL_CreateContext) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1111 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
1112 return NULL;
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1113 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1114 SDL_GL_LoadLibrary(NULL);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1115 }
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1116 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
1117 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
1118 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
1119 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
1120 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
1121 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
1122 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
1123 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
1124 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
1125 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
1126 _this->windows->prev = window;
3693
d3f330fc2009 update window prev links
Sam Lantinga <slouken@libsdl.org>
parents: 3692
diff changeset
1127 }
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
1128 _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
1129
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1130 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
1131 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
1132 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
1133 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1134
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1135 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
1136 SDL_SetWindowTitle(window, title);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1137 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1138 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
1139 SDL_MaximizeWindow(window);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1140 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1141 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
1142 SDL_MinimizeWindow(window);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1143 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1144 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
1145 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
1146 }
64ce267332c6 Switched from SDL_WindowID 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_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
1148
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1149 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
1150 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1151
3685
64ce267332c6 Switched from SDL_WindowID 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_Window *
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1153 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
1154 {
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1155 SDL_Window *window;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1156
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1157 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1158 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
1159 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
1160 }
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1161 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
1162 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
1163 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
1164 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
1165 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
1166 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
1167 _this->windows->prev = window;
3693
d3f330fc2009 update window prev links
Sam Lantinga <slouken@libsdl.org>
parents: 3692
diff changeset
1168 }
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
1169 _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
1170
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1171 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
1172 _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
1173 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
1174 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
1175 }
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1176 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
1177 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1178
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
1179 int
1928
861bc36f0ab3 Fixed crash with multiple windows
Sam Lantinga <slouken@libsdl.org>
parents: 1926
diff changeset
1180 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
1181 {
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1182 const Uint32 allowed_flags = (SDL_WINDOW_FULLSCREEN |
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1183 SDL_WINDOW_OPENGL |
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1184 SDL_WINDOW_BORDERLESS |
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1185 SDL_WINDOW_RESIZABLE |
3486
c87dbbde2bc2 Fixed bug #891
Sam Lantinga <slouken@libsdl.org>
parents: 3485
diff changeset
1186 SDL_WINDOW_INPUT_GRABBED |
c87dbbde2bc2 Fixed bug #891
Sam Lantinga <slouken@libsdl.org>
parents: 3485
diff changeset
1187 SDL_WINDOW_FOREIGN);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1188 char *title = window->title;
1956
ba0d62354872 Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents: 1952
diff changeset
1189
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1190 if ((flags & SDL_WINDOW_OPENGL) && !_this->GL_CreateContext) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1191 SDL_SetError("No OpenGL support in video driver");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1192 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1193 }
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1194
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1195 if (window->flags & SDL_WINDOW_FOREIGN) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1196 /* 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
1197 flags |= SDL_WINDOW_FOREIGN;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1198 } else {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1199 flags &= ~SDL_WINDOW_FOREIGN;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1200 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1201
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
1202 /* 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
1203 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
1204
7a963be087ef Mostly fixed fullscreen mode on Mac OS X, and you can toggle it on and off.
Sam Lantinga <slouken@libsdl.org>
parents: 5251
diff changeset
1205 /* 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
1206 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
1207 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
1208 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
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 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
1211 _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
1212 }
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1213 if (_this->DestroyWindow && !(flags & SDL_WINDOW_FOREIGN)) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1214 _this->DestroyWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1215 }
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1216
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
1217 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
1218 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
1219 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
1220 } 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
1221 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
1222 }
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 }
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
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1225 window->title = NULL;
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1226 window->flags = (flags & allowed_flags);
1956
ba0d62354872 Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents: 1952
diff changeset
1227
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1228 if (_this->CreateWindow && !(flags & SDL_WINDOW_FOREIGN)) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1229 if (_this->CreateWindow(_this, window) < 0) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1230 if (flags & SDL_WINDOW_OPENGL) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1231 SDL_GL_UnloadLibrary();
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1232 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1233 return -1;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1234 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1235 }
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1236
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1237 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
1238 SDL_SetWindowTitle(window, title);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1239 SDL_free(title);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1240 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1241 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
1242 SDL_MaximizeWindow(window);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1243 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1244 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
1245 SDL_MinimizeWindow(window);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1246 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1247 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
1248 SDL_ShowWindow(window);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1249 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1250 SDL_UpdateWindowGrab(window);
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1251
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1252 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
1253 }
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
1254
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1255 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
1256 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
1257 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1258 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
1259
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1260 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
1261 }
64ce267332c6 Switched from SDL_WindowID 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
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1263 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
1264 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
1265 {
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1266 SDL_Window *window;
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1267
64ce267332c6 Switched from SDL_WindowID 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 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
1269 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
1270 }
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
1271 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
1272 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
1273 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
1274 }
64ce267332c6 Switched from SDL_WindowID 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 }
64ce267332c6 Switched from SDL_WindowID 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 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
1277 }
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1278
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1279 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
1280 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
1281 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1282 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
1283
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1284 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
1285 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1286
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1287 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
1288 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
1289 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1290 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
1291
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1292 if (title == window->title) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1293 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1294 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1295 if (window->title) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1296 SDL_free(window->title);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1297 }
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
1298 if (title && *title) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1299 window->title = SDL_strdup(title);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1300 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1301 window->title = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1302 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1303
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1304 if (_this->SetWindowTitle) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1305 _this->SetWindowTitle(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1306 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1307 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1308
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1309 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
1310 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
1311 {
4872
231f8a1c5edd Whoops, return "" even if the window is invalid.
Sam Lantinga <slouken@libsdl.org>
parents: 4871
diff changeset
1312 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
1313
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
1314 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
1315 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1316
c121d94672cb SDL 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 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
1318 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
1319 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1320 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
1321
2967
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1322 if (_this->SetWindowIcon) {
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1323 _this->SetWindowIcon(_this, window, icon);
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1324 }
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1325 }
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1326
5168
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1327 void*
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1328 SDL_SetWindowData(SDL_Window * window, const char *name, void *userdata)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1329 {
5168
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1330 SDL_WindowUserData *prev, *data;
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1331
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1332 CHECK_WINDOW_MAGIC(window, NULL);
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1333
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1334 /* 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
1335 prev = NULL;
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1336 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
1337 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
1338 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
1339
5168
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1340 if (userdata) {
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1341 /* Set the new value */
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1342 data->data = userdata;
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1343 } else {
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1344 /* Delete this value */
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1345 if (prev) {
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1346 prev->next = data->next;
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1347 } else {
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1348 window->data = data->next;
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1349 }
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1350 SDL_free(data->name);
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1351 SDL_free(data);
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1352 }
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1353 return last_value;
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1354 }
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
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1357 /* Add new data to the window */
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1358 if (userdata) {
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1359 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
1360 data->name = SDL_strdup(name);
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1361 data->data = userdata;
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1362 data->next = window->data;
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1363 window->data = data;
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1364 }
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1365 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
1366 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1367
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1368 void *
5168
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1369 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
1370 {
5168
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1371 SDL_WindowUserData *data;
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1372
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1373 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
1374
5168
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1375 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
1376 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
1377 return data->data;
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1378 }
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1379 }
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1380 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
1381 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1382
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1383 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
1384 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
1385 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1386 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
1387
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1388 if (x != SDL_WINDOWPOS_UNDEFINED) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1389 window->x = x;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1390 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1391 if (y != SDL_WINDOWPOS_UNDEFINED) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1392 window->y = y;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1393 }
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
1394 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
1395 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
1396 _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
1397 }
58265e606e4e Window coordinates are in the global space and windows are not tied to a particular display.
Sam Lantinga <slouken@libsdl.org>
parents: 5249
diff changeset
1398 SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MOVED, x, y);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1399 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1400 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1401
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1402 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
1403 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
1404 {
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
1405 /* 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
1406 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
1407 *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
1408 }
58265e606e4e Window coordinates are in the global space and windows are not tied to a particular display.
Sam Lantinga <slouken@libsdl.org>
parents: 5249
diff changeset
1409 if (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
1410 *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
1411 }
58265e606e4e Window coordinates are in the global space and windows are not tied to a particular display.
Sam Lantinga <slouken@libsdl.org>
parents: 5249
diff changeset
1412
58265e606e4e Window 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 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
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 /* 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
1416 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
1417 } else {
5247
78ce7bfd0faf Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents: 5222
diff changeset
1418 if (x) {
78ce7bfd0faf Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents: 5222
diff changeset
1419 *x = window->x;
78ce7bfd0faf Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents: 5222
diff changeset
1420 }
78ce7bfd0faf Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents: 5222
diff changeset
1421 if (y) {
78ce7bfd0faf Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents: 5222
diff changeset
1422 *y = window->y;
78ce7bfd0faf Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents: 5222
diff changeset
1423 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1424 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1425 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1426
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1427 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
1428 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
1429 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1430 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
1431
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
1432 /* 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
1433 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
1434 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
1435 _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
1436 }
7a963be087ef Mostly fixed fullscreen mode on Mac OS X, and you can toggle it on and off.
Sam Lantinga <slouken@libsdl.org>
parents: 5251
diff changeset
1437 SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESIZED, w, h);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1438 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1439 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1440
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1441 void
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1442 SDL_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
1443 {
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
1444 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
1445
58265e606e4e Window coordinates are in the global space and windows are not tied to a particular display.
Sam Lantinga <slouken@libsdl.org>
parents: 5249
diff changeset
1446 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
1447 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
1448 }
58265e606e4e Window coordinates are in the global space and windows are not tied to a particular display.
Sam Lantinga <slouken@libsdl.org>
parents: 5249
diff changeset
1449 if (!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
1450 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
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
58265e606e4e Window 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 = 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
1454 *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
1455
58265e606e4e Window coordinates are in the global space and windows are not tied to a particular display.
Sam Lantinga <slouken@libsdl.org>
parents: 5249
diff changeset
1456 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
1457
5247
78ce7bfd0faf Better window parameter checking
Sam Lantinga <slouken@libsdl.org>
parents: 5222
diff changeset
1458 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
1459 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
1460 *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
1461 }
523b10db69f8 There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents: 2814
diff changeset
1462 if (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
1463 *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
1464 }
523b10db69f8 There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents: 2814
diff changeset
1465 } 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
1466 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
1467 *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
1468 }
523b10db69f8 There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents: 2814
diff changeset
1469 if (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 *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
1471 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1472 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1473 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1474
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1475 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
1476 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
1477 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1478 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
1479
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1480 if (window->flags & SDL_WINDOW_SHOWN) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1481 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1482 }
1895
c121d94672cb SDL 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
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1484 if (_this->ShowWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1485 _this->ShowWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1486 }
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1487 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
1488 }
c121d94672cb SDL 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
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1490 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
1491 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
1492 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1493 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
1494
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1495 if (!(window->flags & SDL_WINDOW_SHOWN)) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1496 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1497 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1498
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1499 if (_this->HideWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1500 _this->HideWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1501 }
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1502 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
1503 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1504
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1505 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
1506 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
1507 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1508 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
1509
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1510 if (!(window->flags & SDL_WINDOW_SHOWN)) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1511 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1512 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1513 if (_this->RaiseWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1514 _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
1515 } 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
1516 /* 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
1517 SDL_SendWindowEvent(window, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1518 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1519 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1520
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1521 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
1522 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
1523 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1524 CHECK_WINDOW_MAGIC(window, );
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1525
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1526 if (window->flags & SDL_WINDOW_MAXIMIZED) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1527 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1528 }
1895
c121d94672cb SDL 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
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1530 if (_this->MaximizeWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1531 _this->MaximizeWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1532 }
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1533 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
1534 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1535
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1536 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
1537 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
1538 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1539 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
1540
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1541 if (window->flags & SDL_WINDOW_MINIMIZED) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1542 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1543 }
1895
c121d94672cb SDL 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
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1545 if (_this->MinimizeWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1546 _this->MinimizeWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1547 }
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1548 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
1549 }
c121d94672cb SDL 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
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1551 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
1552 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
1553 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1554 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
1555
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1556 if (!(window->flags & (SDL_WINDOW_MAXIMIZED | SDL_WINDOW_MINIMIZED))) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1557 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1558 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1559
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1560 if (_this->RestoreWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1561 _this->RestoreWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1562 }
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1563 SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESTORED, 0, 0);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1564 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1565
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1566 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
1567 SDL_SetWindowFullscreen(SDL_Window * window, SDL_bool fullscreen)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1568 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1569 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
1570
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1571 if (fullscreen) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1572 fullscreen = SDL_WINDOW_FULLSCREEN;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1573 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1574 if ((window->flags & SDL_WINDOW_FULLSCREEN) == fullscreen) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1575 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1576 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1577 if (fullscreen) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1578 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
1579
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
1580 SDL_UpdateFullscreenMode(window, SDL_TRUE);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1581 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1582 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
1583
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
1584 SDL_UpdateFullscreenMode(window, SDL_FALSE);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1585 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1586 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
1587 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1588
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
1589 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
1590 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
1591 {
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
1592 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
1593 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
1594 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
1595 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
1596 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
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 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
1599 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
1600 }
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
1601
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
1603 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
1604 }
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
1605
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
1607 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
1608 }
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
1609
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
1610 return 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
1611 }
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
1612
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
1613 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
1614 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
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 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
1617
5175
51b4cfdf7ebb Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents: 5172
diff changeset
1618 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
1619 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
1620 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
1621 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
1622 }
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
1623 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
1624 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
1625 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
1626 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
1627 }
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
1628 }
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
1630 }
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
1631
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
1632 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
1633 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
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 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
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 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
1638
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
1640 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
1641 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
1642 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
1643 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
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
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
1647 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
1648 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
1649 {
4d39eeaad00b Added a way to get a framebuffer interface for 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 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
1651
5175
51b4cfdf7ebb Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents: 5172
diff changeset
1652 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
1653 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
1654 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
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
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
1657 return _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
1658 }
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
1659
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1660 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
1661 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
1662 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1663 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
1664
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1665 if ((!!mode == !!(window->flags & SDL_WINDOW_INPUT_GRABBED))) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1666 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1667 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1668 if (mode) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1669 window->flags |= SDL_WINDOW_INPUT_GRABBED;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1670 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1671 window->flags &= ~SDL_WINDOW_INPUT_GRABBED;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1672 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1673 SDL_UpdateWindowGrab(window);
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1674 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1675
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1676 static void
2876
Sam Lantinga <slouken@libsdl.org>
parents: 2875
diff changeset
1677 SDL_UpdateWindowGrab(SDL_Window * window)
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1678 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1679 if ((window->flags & SDL_WINDOW_INPUT_FOCUS) && _this->SetWindowGrab) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1680 _this->SetWindowGrab(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1681 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1682 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1683
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1684 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
1685 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
1686 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1687 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
1688
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1689 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
1690 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1691
1895
c121d94672cb SDL 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 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
1693 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
1694 {
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1695 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
1696 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
1697 }
c121d94672cb SDL 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
c121d94672cb SDL 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 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
1700 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
1701 {
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_FALSE);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1703 }
1895
c121d94672cb SDL 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
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
1706 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
1707 {
5175
51b4cfdf7ebb Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents: 5172
diff changeset
1708 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
1709 }
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
1710
4d39eeaad00b Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents: 5168
diff changeset
1711 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
1712 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
1713 {
98a819296cdc Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents: 3501
diff changeset
1714 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
1715 }
98a819296cdc Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents: 3501
diff changeset
1716
98a819296cdc Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents: 3501
diff changeset
1717 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
1718 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
1719 {
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1720 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
1721 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
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
98a819296cdc Whenever a window becomes fullscreen, shown, unminimized, 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 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
1725 SDL_OnWindowFocusGained(SDL_Window * window)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1726 {
2876
Sam Lantinga <slouken@libsdl.org>
parents: 2875
diff changeset
1727 if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN))
Sam Lantinga <slouken@libsdl.org>
parents: 2875
diff changeset
1728 && _this->SetWindowGrab) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1729 _this->SetWindowGrab(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1730 }
1895
c121d94672cb SDL 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 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1732
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1733 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
1734 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
1735 {
3512
5ffbbfb78987 If we're fullscreen on a single-head system and lose focus, minimize
Sam Lantinga <slouken@libsdl.org>
parents: 3511
diff changeset
1736 /* 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
1737 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
1738 _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
1739 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
1740 }
5ffbbfb78987 If we're fullscreen on a single-head system and lose focus, minimize
Sam Lantinga <slouken@libsdl.org>
parents: 3511
diff changeset
1741
2876
Sam Lantinga <slouken@libsdl.org>
parents: 2875
diff changeset
1742 if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN))
Sam Lantinga <slouken@libsdl.org>
parents: 2875
diff changeset
1743 && _this->SetWindowGrab) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1744 _this->SetWindowGrab(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1745 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1746 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1747
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1748 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
1749 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
1750 {
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1751 SDL_Window *window;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1752
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1753 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
1754 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
1755 }
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
1756 for (window = _this->windows; window; window = window->next) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1757 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
1758 return window;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1759 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1760 }
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1761 return 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
1762 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1763
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1764 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
1765 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
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 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
1768
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
1769 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
1770
3685
64ce267332c6 Switched from SDL_WindowID 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 /* 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
1772 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
1773
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
1774 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
1775 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
1776 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
1777 }
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
1778 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
1779 _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
1780 }
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1781 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
1782 _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
1783 }
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1784 if (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
1785 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
1786 }
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1787
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
1788 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
1789 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
1790 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
1791 }
58265e606e4e Window coordinates are in the global space and windows are not tied to a particular display.
Sam Lantinga <slouken@libsdl.org>
parents: 5249
diff changeset
1792
4901
deadc1219bea Minor cleanup in patches from Coursoud
Sam Lantinga <slouken@libsdl.org>
parents: 4900
diff changeset
1793 /* Now invalidate magic */
4897
c3eb55210a90 SDL_DestroyWindow is setting window->magic to NULL too early. -
Sam Lantinga <slouken@libsdl.org>
parents: 4872
diff changeset
1794 window->magic = NULL;
c3eb55210a90 SDL_DestroyWindow is setting window->magic to NULL too early. -
Sam Lantinga <slouken@libsdl.org>
parents: 4872
diff changeset
1795
5168
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1796 /* Free memory associated with the window */
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1797 if (window->title) {
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1798 SDL_free(window->title);
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1799 }
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1800 while (window->data) {
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1801 SDL_WindowUserData *data = window->data;
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1802
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1803 window->data = data->next;
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1804 SDL_free(data->name);
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1805 SDL_free(data);
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1806 }
2b1989f59674 Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents: 5157
diff changeset
1807
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1808 /* Unlink the window from the list */
3693
d3f330fc2009 update window prev links
Sam Lantinga <slouken@libsdl.org>
parents: 3692
diff changeset
1809 if (window->next) {
d3f330fc2009 update window prev links
Sam Lantinga <slouken@libsdl.org>
parents: 3692
diff changeset
1810 window->next->prev = window->prev;
d3f330fc2009 update window prev links
Sam Lantinga <slouken@libsdl.org>
parents: 3692
diff changeset
1811 }
3685
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1812 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
1813 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
1814 } 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
1815 _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
1816 }
64ce267332c6 Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents: 3683
diff changeset
1817
64ce267332c6 Switched from SDL_WindowID 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 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
1819 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1820
3025
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1821 SDL_bool
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1822 SDL_IsScreenSaverEnabled()
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1823 {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1824 if (!_this) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1825 return SDL_TRUE;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1826 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1827 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
1828 }
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 void
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1831 SDL_EnableScreenSaver()
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 if (!_this) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1834 return;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1835 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1836 if (!_this->suspend_screensaver) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1837 return;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1838 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1839 _this->suspend_screensaver = SDL_FALSE;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1840 if (_this->SuspendScreenSaver) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1841 _this->SuspendScreenSaver(_this);
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1842 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1843 }
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 void
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1846 SDL_DisableScreenSaver()
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1847 {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1848 if (!_this) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1849 return;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1850 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1851 if (_this->suspend_screensaver) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1852 return;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1853 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1854 _this->suspend_screensaver = SDL_TRUE;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1855 if (_this->SuspendScreenSaver) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1856 _this->SuspendScreenSaver(_this);
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1857 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1858 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
1859
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1860 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
1861 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
1862 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1863 int i, j;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1864
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1865 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1866 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1867 }
5125
dc0dfdd58f27 Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents: 5105
diff changeset
1868
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1869 /* 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
1870 SDL_QuitQuit();
dc0dfdd58f27 Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents: 5105
diff changeset
1871 SDL_MouseQuit();
dc0dfdd58f27 Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents: 5105
diff changeset
1872 SDL_KeyboardQuit();
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1873 SDL_StopEventLoop();
5125
dc0dfdd58f27 Removed completely non-portable event thread hack.
Sam Lantinga <slouken@libsdl.org>
parents: 5105
diff changeset
1874
3029
89f8a72e1ee9 Re-enable the screensaver at exit, just in case it's needed...
Sam Lantinga <slouken@libsdl.org>
parents: 3025
diff changeset
1875 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
1876
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1877 /* 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
1878 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
1879 SDL_DestroyWindow(_this->windows);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1880 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1881 _this->VideoQuit(_this);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1882
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1883 for (i = _this->num_displays; i--;) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1884 SDL_VideoDisplay *display = &_this->displays[i];
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1885 for (j = display->num_display_modes; j--;) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1886 if (display->display_modes[j].driverdata) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1887 SDL_free(display->display_modes[j].driverdata);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1888 display->display_modes[j].driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1889 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1890 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1891 if (display->display_modes) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1892 SDL_free(display->display_modes);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1893 display->display_modes = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1894 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1895 if (display->desktop_mode.driverdata) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1896 SDL_free(display->desktop_mode.driverdata);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1897 display->desktop_mode.driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1898 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1899 if (display->driverdata) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1900 SDL_free(display->driverdata);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1901 display->driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1902 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1903 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1904 if (_this->displays) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1905 SDL_free(_this->displays);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1906 _this->displays = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1907 }
4495
dbbfdb9ea716 Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents: 4472
diff changeset
1908 if (_this->clipboard_text) {
dbbfdb9ea716 Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents: 4472
diff changeset
1909 SDL_free(_this->clipboard_text);
dbbfdb9ea716 Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents: 4472
diff changeset
1910 _this->clipboard_text = NULL;
dbbfdb9ea716 Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents: 4472
diff changeset
1911 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1912 _this->free(_this);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1913 _this = NULL;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1914 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1915
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1916 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
1917 SDL_GL_LoadLibrary(const char *path)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1918 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1919 int retval;
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
1920
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1921 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1922 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1923 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1924 }
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1925 if (_this->gl_config.driver_loaded) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1926 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
1927 SDL_SetError("OpenGL library already loaded");
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1928 return -1;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1929 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1930 retval = 0;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1931 } else {
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1932 if (!_this->GL_LoadLibrary) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1933 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
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 = _this->GL_LoadLibrary(_this, path);
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1937 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1938 if (retval == 0) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1939 ++_this->gl_config.driver_loaded;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1940 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1941 return (retval);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1942 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1943
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1944 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
1945 SDL_GL_GetProcAddress(const char *proc)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1946 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1947 void *func;
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
1948
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1949 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1950 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1951 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1952 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1953 func = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1954 if (_this->GL_GetProcAddress) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1955 if (_this->gl_config.driver_loaded) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1956 func = _this->GL_GetProcAddress(_this, proc);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1957 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1958 SDL_SetError("No GL driver has been loaded");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1959 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1960 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1961 SDL_SetError("No dynamic GL support in video driver");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1962 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1963 return func;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1964 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1965
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1966 void
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1967 SDL_GL_UnloadLibrary(void)
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1968 {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1969 if (!_this) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1970 SDL_UninitializedVideo();
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1971 return;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1972 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1973 if (_this->gl_config.driver_loaded > 0) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1974 if (--_this->gl_config.driver_loaded > 0) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1975 return;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1976 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1977 if (_this->GL_UnloadLibrary) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1978 _this->GL_UnloadLibrary(_this);
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1979 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1980 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1981 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1982
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
1983 SDL_bool
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
1984 SDL_GL_ExtensionSupported(const char *extension)
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
1985 {
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
1986 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1987 const GLubyte *(APIENTRY * glGetStringFunc) (GLenum);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1988 const char *extensions;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1989 const char *start;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1990 const char *where, *terminator;
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
1991
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1992 /* Extension names should not have spaces. */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1993 where = SDL_strchr(extension, ' ');
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1994 if (where || *extension == '\0') {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1995 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1996 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1997 /* See if there's an environment variable override */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1998 start = SDL_getenv(extension);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1999 if (start && *start == '0') {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2000 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2001 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2002 /* Lookup the available extensions */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2003 glGetStringFunc = SDL_GL_GetProcAddress("glGetString");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2004 if (glGetStringFunc) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2005 extensions = (const char *) glGetStringFunc(GL_EXTENSIONS);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2006 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2007 extensions = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2008 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2009 if (!extensions) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2010 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2011 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2012 /*
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2013 * It takes a bit of care to be fool-proof about parsing the OpenGL
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2014 * extensions string. Don't be fooled by sub-strings, etc.
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2015 */
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2016
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2017 start = extensions;
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2018
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2019 for (;;) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2020 where = SDL_strstr(start, extension);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2021 if (!where)
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2022 break;
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2023
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2024 terminator = where + SDL_strlen(extension);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2025 if (where == start || *(where - 1) == ' ')
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2026 if (*terminator == ' ' || *terminator == '\0')
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2027 return SDL_TRUE;
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2028
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2029 start = terminator;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2030 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2031 return SDL_FALSE;
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2032 #else
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2033 return SDL_FALSE;
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2034 #endif
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2035 }
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2036
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2037 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
2038 SDL_GL_SetAttribute(SDL_GLattr attr, int value)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2039 {
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
2040 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2041 int retval;
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2042
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2043 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2044 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2045 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2046 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2047 retval = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2048 switch (attr) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2049 case SDL_GL_RED_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2050 _this->gl_config.red_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2051 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2052 case SDL_GL_GREEN_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2053 _this->gl_config.green_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2054 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2055 case SDL_GL_BLUE_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2056 _this->gl_config.blue_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2057 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2058 case SDL_GL_ALPHA_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2059 _this->gl_config.alpha_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2060 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2061 case SDL_GL_DOUBLEBUFFER:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2062 _this->gl_config.double_buffer = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2063 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2064 case SDL_GL_BUFFER_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2065 _this->gl_config.buffer_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2066 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2067 case SDL_GL_DEPTH_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2068 _this->gl_config.depth_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2069 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2070 case SDL_GL_STENCIL_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2071 _this->gl_config.stencil_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2072 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2073 case SDL_GL_ACCUM_RED_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2074 _this->gl_config.accum_red_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2075 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2076 case SDL_GL_ACCUM_GREEN_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2077 _this->gl_config.accum_green_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2078 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2079 case SDL_GL_ACCUM_BLUE_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2080 _this->gl_config.accum_blue_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2081 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2082 case SDL_GL_ACCUM_ALPHA_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2083 _this->gl_config.accum_alpha_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2084 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2085 case SDL_GL_STEREO:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2086 _this->gl_config.stereo = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2087 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2088 case SDL_GL_MULTISAMPLEBUFFERS:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2089 _this->gl_config.multisamplebuffers = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2090 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2091 case SDL_GL_MULTISAMPLESAMPLES:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2092 _this->gl_config.multisamplesamples = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2093 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2094 case SDL_GL_ACCELERATED_VISUAL:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2095 _this->gl_config.accelerated = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2096 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2097 case SDL_GL_RETAINED_BACKING:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2098 _this->gl_config.retained_backing = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2099 break;
3100
7dc982143c06 Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents: 3099
diff changeset
2100 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
2101 _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
2102 break;
7dc982143c06 Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents: 3099
diff changeset
2103 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
2104 _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
2105 break;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2106 default:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2107 SDL_SetError("Unknown OpenGL attribute");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2108 retval = -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2109 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2110 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2111 return retval;
1936
83946ee0ff1f Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 1933
diff changeset
2112 #else
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2113 SDL_Unsupported();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2114 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2115 #endif /* SDL_VIDEO_OPENGL */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2116 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2117
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2118 int
1936
83946ee0ff1f Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 1933
diff changeset
2119 SDL_GL_GetAttribute(SDL_GLattr attr, int *value)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2120 {
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
2121 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2122 void (APIENTRY * glGetIntegervFunc) (GLenum pname, GLint * params);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2123 GLenum(APIENTRY * glGetErrorFunc) (void);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2124 GLenum attrib = 0;
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2125 GLenum error = 0;
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2126
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2127 glGetIntegervFunc = SDL_GL_GetProcAddress("glGetIntegerv");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2128 if (!glGetIntegervFunc) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2129 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2130 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2131
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2132 glGetErrorFunc = SDL_GL_GetProcAddress("glGetError");
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2133 if (!glGetErrorFunc) {
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2134 return -1;
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2135 }
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2136
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2137 /* Clear value in any case */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2138 *value = 0;
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2139
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2140 switch (attr) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2141 case SDL_GL_RED_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2142 attrib = GL_RED_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2143 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2144 case SDL_GL_BLUE_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2145 attrib = GL_BLUE_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2146 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2147 case SDL_GL_GREEN_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2148 attrib = GL_GREEN_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2149 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2150 case SDL_GL_ALPHA_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2151 attrib = GL_ALPHA_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2152 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2153 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
2154 #if SDL_VIDEO_OPENGL
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2155 attrib = GL_DOUBLEBUFFER;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2156 break;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2157 #else
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2158 /* 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
2159 /* 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
2160 /* 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
2161 *value = _this->gl_config.double_buffer;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2162 return 0;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2163 #endif
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2164 case SDL_GL_DEPTH_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2165 attrib = GL_DEPTH_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2166 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2167 case SDL_GL_STENCIL_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2168 attrib = GL_STENCIL_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2169 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
2170 #if SDL_VIDEO_OPENGL
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2171 case SDL_GL_ACCUM_RED_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2172 attrib = GL_ACCUM_RED_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2173 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2174 case SDL_GL_ACCUM_GREEN_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2175 attrib = GL_ACCUM_GREEN_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2176 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2177 case SDL_GL_ACCUM_BLUE_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2178 attrib = GL_ACCUM_BLUE_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2179 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2180 case SDL_GL_ACCUM_ALPHA_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2181 attrib = GL_ACCUM_ALPHA_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2182 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2183 case SDL_GL_STEREO:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2184 attrib = GL_STEREO;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2185 break;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2186 #else
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2187 case SDL_GL_ACCUM_RED_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2188 case SDL_GL_ACCUM_GREEN_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2189 case SDL_GL_ACCUM_BLUE_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2190 case SDL_GL_ACCUM_ALPHA_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2191 case SDL_GL_STEREO:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2192 /* none of these are supported in OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2193 *value = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2194 return 0;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2195 #endif
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2196 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
2197 #if SDL_VIDEO_OPENGL
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2198 attrib = GL_SAMPLE_BUFFERS_ARB;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2199 #else
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2200 attrib = GL_SAMPLE_BUFFERS;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2201 #endif
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2202 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2203 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
2204 #if SDL_VIDEO_OPENGL
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2205 attrib = GL_SAMPLES_ARB;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2206 #else
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2207 attrib = GL_SAMPLES;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2208 #endif
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2209 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2210 case SDL_GL_BUFFER_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2211 {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2212 GLint bits = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2213 GLint component;
1936
83946ee0ff1f Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 1933
diff changeset
2214
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2215 /*
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2216 * there doesn't seem to be a single flag in OpenGL
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2217 * for this!
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2218 */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2219 glGetIntegervFunc(GL_RED_BITS, &component);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2220 bits += component;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2221 glGetIntegervFunc(GL_GREEN_BITS, &component);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2222 bits += component;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2223 glGetIntegervFunc(GL_BLUE_BITS, &component);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2224 bits += component;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2225 glGetIntegervFunc(GL_ALPHA_BITS, &component);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2226 bits += component;
1936
83946ee0ff1f Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 1933
diff changeset
2227
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2228 *value = bits;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2229 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2230 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2231 case SDL_GL_ACCELERATED_VISUAL:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2232 {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2233 /* 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
2234 *value = (_this->gl_config.accelerated != 0);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2235 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2236 }
5213
1be088cec098 At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents: 5212
diff changeset
2237 case SDL_GL_RETAINED_BACKING:
1be088cec098 At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents: 5212
diff changeset
2238 {
1be088cec098 At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents: 5212
diff changeset
2239 *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
2240 return 0;
1be088cec098 At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents: 5212
diff changeset
2241 }
1be088cec098 At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents: 5212
diff changeset
2242 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
2243 {
1be088cec098 At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents: 5212
diff changeset
2244 *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
2245 return 0;
1be088cec098 At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents: 5212
diff changeset
2246 }
1be088cec098 At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents: 5212
diff changeset
2247 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
2248 {
1be088cec098 At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents: 5212
diff changeset
2249 *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
2250 return 0;
1be088cec098 At least allow returning the values that were set.
Sam Lantinga <slouken@libsdl.org>
parents: 5212
diff changeset
2251 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2252 default:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2253 SDL_SetError("Unknown OpenGL attribute");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2254 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2255 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2256
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2257 glGetIntegervFunc(attrib, (GLint *) value);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2258 error = glGetErrorFunc();
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2259 if (error != GL_NO_ERROR) {
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2260 switch (error) {
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2261 case GL_INVALID_ENUM:
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2262 {
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2263 SDL_SetError("OpenGL error: GL_INVALID_ENUM");
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2264 }
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2265 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2266 case GL_INVALID_VALUE:
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2267 {
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2268 SDL_SetError("OpenGL error: GL_INVALID_VALUE");
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2269 }
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2270 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2271 default:
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2272 {
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2273 SDL_SetError("OpenGL error: %08X", error);
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2274 }
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2275 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2276 }
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2277 return -1;
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2278 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2279 return 0;
1936
83946ee0ff1f Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 1933
diff changeset
2280 #else
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2281 SDL_Unsupported();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2282 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2283 #endif /* SDL_VIDEO_OPENGL */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2284 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2285
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2286 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
2287 SDL_GL_CreateContext(SDL_Window * window)
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2288 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
2289 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
2290
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2291 if (!(window->flags & SDL_WINDOW_OPENGL)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2292 SDL_SetError("The specified window isn't an OpenGL window");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2293 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2294 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2295 return _this->GL_CreateContext(_this, window);
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2296 }
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2297
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2298 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
2299 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
2300 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
2301 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
2302
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
2303 if (!(window->flags & SDL_WINDOW_OPENGL)) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2304 SDL_SetError("The specified window isn't an OpenGL window");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2305 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2306 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2307 if (!context) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2308 window = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2309 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2310 return _this->GL_MakeCurrent(_this, window, context);
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2311 }
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2312
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2313 int
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2314 SDL_GL_SetSwapInterval(int interval)
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2315 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2316 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2317 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2318 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2319 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2320 if (_this->GL_SetSwapInterval) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2321 return _this->GL_SetSwapInterval(_this, interval);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2322 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2323 SDL_SetError("Setting the swap interval is not supported");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2324 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2325 }
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2326 }
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2327
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2328 int
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2329 SDL_GL_GetSwapInterval(void)
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2330 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2331 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2332 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2333 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2334 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2335 if (_this->GL_GetSwapInterval) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2336 return _this->GL_GetSwapInterval(_this);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2337 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2338 SDL_SetError("Getting the swap interval is not supported");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2339 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2340 }
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2341 }
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2342
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2343 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
2344 SDL_GL_SwapWindow(SDL_Window * window)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2345 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
2346 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
2347
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2348 if (!(window->flags & SDL_WINDOW_OPENGL)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2349 SDL_SetError("The specified window isn't an OpenGL window");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2350 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2351 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2352 _this->GL_SwapWindow(_this, window);
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2353 }
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2354
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2355 void
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2356 SDL_GL_DeleteContext(SDL_GLContext context)
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2357 {
4526
c04dd942610d Fixed bug #1000
Sam Lantinga <slouken@libsdl.org>
parents: 4495
diff changeset
2358 if (!_this || !_this->gl_data || !context) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2359 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2360 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2361 _this->GL_MakeCurrent(_this, NULL, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2362 _this->GL_DeleteContext(_this, context);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2363 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2364
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2365 #if 0 // FIXME
2744
1aede15771d0 Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2743
diff changeset
2366 /*
1aede15771d0 Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2743
diff changeset
2367 * 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
2368 * & 2 for alpha channel.
1aede15771d0 Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2743
diff changeset
2369 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2370 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
2371 CreateMaskFromColorKeyOrAlpha(SDL_Surface * icon, Uint8 * mask, int flags)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2372 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2373 int x, y;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2374 Uint32 colorkey;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2375 #define SET_MASKBIT(icon, x, y, mask) \
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2376 mask[(y*((icon->w+7)/8))+(x/8)] &= ~(0x01<<(7-(x%8)))
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2377
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2378 colorkey = icon->format->colorkey;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2379 switch (icon->format->BytesPerPixel) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2380 case 1:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2381 {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2382 Uint8 *pixels;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2383 for (y = 0; y < icon->h; ++y) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2384 pixels = (Uint8 *) icon->pixels + y * icon->pitch;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2385 for (x = 0; x < icon->w; ++x) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2386 if (*pixels++ == colorkey) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2387 SET_MASKBIT(icon, x, y, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2388 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2389 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2390 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2391 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2392 break;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2393
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2394 case 2:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2395 {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2396 Uint16 *pixels;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2397 for (y = 0; y < icon->h; ++y) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2398 pixels = (Uint16 *) icon->pixels + y * icon->pitch / 2;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2399 for (x = 0; x < icon->w; ++x) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2400 if ((flags & 1) && *pixels == colorkey) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2401 SET_MASKBIT(icon, x, y, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2402 } else if ((flags & 2)
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2403 && (*pixels & icon->format->Amask) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2404 SET_MASKBIT(icon, x, y, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2405 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2406 pixels++;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2407 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2408 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2409 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2410 break;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2411
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2412 case 4:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2413 {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2414 Uint32 *pixels;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2415 for (y = 0; y < icon->h; ++y) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2416 pixels = (Uint32 *) icon->pixels + y * icon->pitch / 4;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2417 for (x = 0; x < icon->w; ++x) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2418 if ((flags & 1) && *pixels == colorkey) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2419 SET_MASKBIT(icon, x, y, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2420 } else if ((flags & 2)
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2421 && (*pixels & icon->format->Amask) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2422 SET_MASKBIT(icon, x, y, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2423 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2424 pixels++;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2425 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2426 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2427 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2428 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2429 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2430 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2431
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2432 /*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2433 * Sets the window manager icon for the display window.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2434 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2435 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
2436 SDL_WM_SetIcon(SDL_Surface * icon, Uint8 * mask)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2437 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2438 if (icon && _this->SetIcon) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2439 /* Generate a mask if necessary, and create the icon! */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2440 if (mask == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2441 int mask_len = icon->h * (icon->w + 7) / 8;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2442 int flags = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2443 mask = (Uint8 *) SDL_malloc(mask_len);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2444 if (mask == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2445 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2446 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2447 SDL_memset(mask, ~0, mask_len);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2448 if (icon->flags & SDL_SRCCOLORKEY)
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2449 flags |= 1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2450 if (icon->flags & SDL_SRCALPHA)
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2451 flags |= 2;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2452 if (flags) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2453 CreateMaskFromColorKeyOrAlpha(icon, mask, flags);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2454 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2455 _this->SetIcon(_this, icon, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2456 SDL_free(mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2457 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2458 _this->SetIcon(_this, icon, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2459 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2460 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2461 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2462 #endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2463
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2464 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
2465 SDL_GetWindowWMInfo(SDL_Window * window, struct SDL_SysWMinfo *info)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2466 {
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
2467 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
2468
4900
69d9db65f248 Merged the Windows custom window system hooks into the union used by X11.
Sam Lantinga <slouken@libsdl.org>
parents: 4897
diff changeset
2469 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
2470 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
2471 }
69d9db65f248 Merged the Windows custom window system hooks into the union used by X11.
Sam Lantinga <slouken@libsdl.org>
parents: 4897
diff changeset
2472 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
2473
3695
f6a8be3fefa0 Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents: 3694
diff changeset
2474 if (!_this->GetWindowWMInfo) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2475 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2476 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2477 return (_this->GetWindowWMInfo(_this, window, info));
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2478 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2479
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
2480 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
2481 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
2482 {
3683
4c5ab6841fdc From: Jjgod Jiang
Sam Lantinga <slouken@libsdl.org>
parents: 3678
diff changeset
2483 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
2484 _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
2485 }
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 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
2487 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
2488 }
00cace2d9080 Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents: 3276
diff changeset
2489
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 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
2491 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
2492 {
3683
4c5ab6841fdc From: Jjgod Jiang
Sam Lantinga <slouken@libsdl.org>
parents: 3678
diff changeset
2493 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
2494 _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
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 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
2497 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
2498 }
00cace2d9080 Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents: 3276
diff changeset
2499
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 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
2501 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
2502 {
3683
4c5ab6841fdc From: Jjgod Jiang
Sam Lantinga <slouken@libsdl.org>
parents: 3678
diff changeset
2503 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
2504 _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
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 }
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
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2508 /* vi: set ts=4 sw=4 expandtab: */