annotate src/video/SDL_video.c @ 5262:956d42855c92

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