annotate src/video/SDL_video.c @ 3164:c5b2884c26b4

Added an ifdef so that if you #define SDL_NO_COMPAT before you include SDL.h then SDL_compat.h will never be included in your code. This is useful for making sure that your code uses only SDL 1.3 features. It is also handy for finding things that are in SDL_compat.h that belong elsewhere.
author Bob Pendleton <bob@pendleton.com>
date Thu, 04 Jun 2009 21:00:45 +0000
parents dc1eb82ffdaa
children 3a63a5824557
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
2859
99210400e8b9 Updated copyright date
Sam Lantinga <slouken@libsdl.org>
parents: 2849
diff changeset
3 Copyright (C) 1997-2009 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"
1918
092bd3a019c5 Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents: 1913
diff changeset
31 #include "SDL_renderer_gl.h"
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
32 #include "SDL_renderer_gles.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
33 #include "SDL_renderer_sw.h"
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
34 #include "../events/SDL_sysevents.h"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
35 #include "../events/SDL_events_c.h"
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
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
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
41 #if SDL_VIDEO_OPENGL
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
42 #include "SDL_opengl.h"
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
43
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
44 /* On Windows, windows.h defines CreateWindow */
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
45 #ifdef CreateWindow
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
46 #undef CreateWindow
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
47 #endif
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
48 #endif /* SDL_VIDEO_OPENGL */
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
49
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
50 /* Available video drivers */
3162
dc1eb82ffdaa Von: Thomas Zimmermann
Sam Lantinga <slouken@libsdl.org>
parents: 3161
diff changeset
51 static const VideoBootStrap *const bootstrap[] = {
1931
103c6fec2a60 The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents: 1930
diff changeset
52 #if SDL_VIDEO_DRIVER_COCOA
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
53 &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
54 #endif
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
55 #if SDL_VIDEO_DRIVER_X11
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
56 &X11_bootstrap,
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
57 #endif
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
58 #if SDL_VIDEO_DRIVER_NANOX
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
59 &NX_bootstrap,
30
57bf11a5efd7 Added initial support for Nano-X (thanks Hsieh-Fu!)
Sam Lantinga <slouken@lokigames.com>
parents: 19
diff changeset
60 #endif
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
61 #if SDL_VIDEO_DRIVER_IPOD
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
62 &iPod_bootstrap,
1140
af8b0f9ac2f4 iPod Linux framebuffer support.
Ryan C. Gordon <icculus@icculus.org>
parents: 1133
diff changeset
63 #endif
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
64 #if SDL_VIDEO_DRIVER_WSCONS
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
65 &WSCONS_bootstrap,
1187
19d8949b4584 To: sdl@libsdl.org
Ryan C. Gordon <icculus@icculus.org>
parents: 1141
diff changeset
66 #endif
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
67 #if SDL_VIDEO_DRIVER_FBCON
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
68 &FBCON_bootstrap,
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
69 #endif
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
70 #if SDL_VIDEO_DRIVER_DIRECTFB
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
71 &DirectFB_bootstrap,
167
cb384ef627f6 Added support for DirectFB video on Linux (thanks Denis!)
Sam Lantinga <slouken@libsdl.org>
parents: 125
diff changeset
72 #endif
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
73 #if SDL_VIDEO_DRIVER_PS2GS
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
74 &PS2GS_bootstrap,
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
75 #endif
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
76 #if SDL_VIDEO_DRIVER_VGL
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
77 &VGL_bootstrap,
75
b0ae59d0f3ee Added patches from FreeBSD ports
Sam Lantinga <slouken@lokigames.com>
parents: 58
diff changeset
78 #endif
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
79 #if SDL_VIDEO_DRIVER_SVGALIB
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
80 &SVGALIB_bootstrap,
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
81 #endif
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
82 #if SDL_VIDEO_DRIVER_GAPI
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
83 &GAPI_bootstrap,
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
84 #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
85 #if SDL_VIDEO_DRIVER_WIN32
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
86 &WIN32_bootstrap,
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
87 #endif
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
88 #if SDL_VIDEO_DRIVER_BWINDOW
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
89 &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
90 #endif
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
91 #if SDL_VIDEO_DRIVER_PHOTON
3083
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3058
diff changeset
92 &photon_bootstrap,
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3058
diff changeset
93 #endif
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3058
diff changeset
94 #if SDL_VIDEO_DRIVER_QNXGF
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3058
diff changeset
95 &qnxgf_bootstrap,
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
96 #endif
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
97 #if SDL_VIDEO_DRIVER_EPOC
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
98 &EPOC_bootstrap,
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
99 #endif
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
100 #if SDL_VIDEO_DRIVER_XBIOS
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
101 &XBIOS_bootstrap,
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
102 #endif
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
103 #if SDL_VIDEO_DRIVER_GEM
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
104 &GEM_bootstrap,
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
105 #endif
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
106 #if SDL_VIDEO_DRIVER_DC
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
107 &DC_bootstrap,
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
108 #endif
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
109 #if SDL_VIDEO_DRIVER_RISCOS
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
110 &RISCOS_bootstrap,
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
111 #endif
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
112 #if SDL_VIDEO_DRIVER_OS2FS
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
113 &OS2FSLib_bootstrap,
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
114 #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
115 #if SDL_VIDEO_DRIVER_NDS
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
116 &NDS_bootstrap,
2735
204be4fc2726 Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents: 2702
diff changeset
117 #endif
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
118 #if SDL_VIDEO_DRIVER_UIKIT
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
119 &UIKIT_bootstrap,
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
120 #endif
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
121 #if SDL_VIDEO_DRIVER_DUMMY
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
122 &DUMMY_bootstrap,
610
95433459fbd2 Date: Mon, 14 Apr 2003 22:08:27 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 580
diff changeset
123 #endif
3161
494559cc723b OpenPandora support added by David Carré
Sam Lantinga <slouken@libsdl.org>
parents: 3139
diff changeset
124 #if SDL_VIDEO_DRIVER_PANDORA
494559cc723b OpenPandora support added by David Carré
Sam Lantinga <slouken@libsdl.org>
parents: 3139
diff changeset
125 &PND_bootstrap,
494559cc723b OpenPandora support added by David Carré
Sam Lantinga <slouken@libsdl.org>
parents: 3139
diff changeset
126 #endif
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
127 NULL
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
128 };
173
83018110dce8 Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents: 167
diff changeset
129
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
130 static SDL_VideoDevice *_this = NULL;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
131
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
132 /* Various local functions */
2876
Sam Lantinga <slouken@libsdl.org>
parents: 2875
diff changeset
133 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
134
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
135 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
136 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
137 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
138 SDL_DisplayMode a = *(const SDL_DisplayMode *) A;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
139 SDL_DisplayMode b = *(const SDL_DisplayMode *) B;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
140
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
141 if (a.w != b.w) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
142 return b.w - a.w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
143 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
144 if (a.h != b.h) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
145 return b.h - a.h;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
146 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
147 if (SDL_BITSPERPIXEL(a.format) != SDL_BITSPERPIXEL(b.format)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
148 return SDL_BITSPERPIXEL(b.format) - SDL_BITSPERPIXEL(a.format);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
149 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
150 if (a.refresh_rate != b.refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
151 return b.refresh_rate - a.refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
152 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
153 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
154 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
155
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
156 static void
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
157 SDL_UninitializedVideo()
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
158 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
159 SDL_SetError("Video subsystem has not been initialized");
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
160 }
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
161
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
162 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
163 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
164 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
165 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
166 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
167
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
168 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
169 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
170 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
171 if (index >= 0 && index < SDL_GetNumVideoDrivers()) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
172 return bootstrap[index]->name;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
173 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
174 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
175 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
176
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
177 /*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
178 * Initialize the video and event subsystems -- determine native pixel format
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
179 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
180 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
181 SDL_VideoInit(const char *driver_name, Uint32 flags)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
182 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
183 SDL_VideoDevice *video;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
184 int index;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
185 int i;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
186
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
187 /* Toggle the event thread flags, based on OS requirements */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
188 #if defined(MUST_THREAD_EVENTS)
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
189 flags |= SDL_INIT_EVENTTHREAD;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
190 #elif defined(CANT_THREAD_EVENTS)
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
191 if ((flags & SDL_INIT_EVENTTHREAD) == SDL_INIT_EVENTTHREAD) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
192 SDL_SetError("OS doesn't support threaded events");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
193 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
194 }
1190
173c063d4f55 OS/2 port!
Ryan C. Gordon <icculus@icculus.org>
parents: 1187
diff changeset
195 #endif
229
4d24d5a660a8 Fix a crash if an OpenGL video mode can't be set.
Sam Lantinga <slouken@libsdl.org>
parents: 216
diff changeset
196
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
197 /* Start the event loop */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
198 if (SDL_StartEventLoop(flags) < 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
199 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
200 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
201 /* Check to make sure we don't overwrite '_this' */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
202 if (_this != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
203 SDL_VideoQuit();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
204 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
205 /* Select the proper video driver */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
206 index = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
207 video = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
208 if (driver_name == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
209 driver_name = SDL_getenv("SDL_VIDEODRIVER");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
210 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
211 if (driver_name != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
212 for (i = 0; bootstrap[i]; ++i) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
213 if (SDL_strcasecmp(bootstrap[i]->name, driver_name) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
214 if (bootstrap[i]->available()) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
215 video = bootstrap[i]->create(index);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
216 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
217 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
218 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
219 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
220 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
221 for (i = 0; bootstrap[i]; ++i) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
222 if (bootstrap[i]->available()) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
223 video = bootstrap[i]->create(index);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
224 if (video != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
225 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
226 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
227 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
228 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
229 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
230 if (video == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
231 if (driver_name) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
232 SDL_SetError("%s not available", driver_name);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
233 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
234 SDL_SetError("No available video device");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
235 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
236 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
237 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
238 _this = video;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
239 _this->name = bootstrap[i]->name;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
240 _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
241
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
242
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
243 /* Set some very sane GL defaults */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
244 _this->gl_config.driver_loaded = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
245 _this->gl_config.dll_handle = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
246 _this->gl_config.red_size = 3;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
247 _this->gl_config.green_size = 3;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
248 _this->gl_config.blue_size = 2;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
249 _this->gl_config.alpha_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
250 _this->gl_config.buffer_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
251 _this->gl_config.depth_size = 16;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
252 _this->gl_config.stencil_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
253 _this->gl_config.double_buffer = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
254 _this->gl_config.accum_red_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
255 _this->gl_config.accum_green_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
256 _this->gl_config.accum_blue_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
257 _this->gl_config.accum_alpha_size = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
258 _this->gl_config.stereo = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
259 _this->gl_config.multisamplebuffers = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
260 _this->gl_config.multisamplesamples = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
261 _this->gl_config.retained_backing = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
262 _this->gl_config.accelerated = -1; /* not known, don't set */
3100
7dc982143c06 Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents: 3099
diff changeset
263 _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
264 _this->gl_config.minor_version = 1;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
265
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
266 /* Initialize the video subsystem */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
267 if (_this->VideoInit(_this) < 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
268 SDL_VideoQuit();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
269 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
270 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
271 /* Make sure some displays were added */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
272 if (_this->num_displays == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
273 SDL_SetError("The video driver did not add any displays");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
274 SDL_VideoQuit();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
275 return (-1);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
276 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
277 /* The software renderer is always available */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
278 for (i = 0; i < _this->num_displays; ++i) {
2744
1aede15771d0 Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2743
diff changeset
279 #if SDL_VIDEO_RENDER_OGL
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
280 SDL_AddRenderDriver(i, &GL_RenderDriver);
2744
1aede15771d0 Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2743
diff changeset
281 #endif
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
282
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
283 #if SDL_VIDEO_RENDER_OGL_ES
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
284 SDL_AddRenderDriver(i, &GL_ES_RenderDriver);
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
285 #endif
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
286 if (_this->displays[i].num_render_drivers > 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
287 SDL_AddRenderDriver(i, &SW_RenderDriver);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
288 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
289 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
290
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
291 /* We're ready to go! */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
292 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
293 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
294
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
295 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
296 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
297 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
298 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
299 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
300 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
301 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
302 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
303 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
304
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
305 SDL_VideoDevice *
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
306 SDL_GetVideoDevice()
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
307 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
308 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
309 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
310
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
311 int
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
312 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
313 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
314 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
315
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
316 SDL_zero(display);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
317 if (desktop_mode) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
318 display.desktop_mode = *desktop_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
319 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
320 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
321
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
322 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
323 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
324
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
325 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
326 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
327 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
328 SDL_VideoDisplay *displays;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
329 int index = -1;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
330
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
331 displays =
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
332 SDL_realloc(_this->displays,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
333 (_this->num_displays + 1) * sizeof(*displays));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
334 if (displays) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
335 index = _this->num_displays++;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
336 displays[index] = *display;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
337 displays[index].device = _this;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
338 _this->displays = displays;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
339 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
340 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
341 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
342 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
343 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
344
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
345 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
346 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
347 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
348 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
349 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
350 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
351 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
352 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
353 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
354
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
355 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
356 SDL_SelectVideoDisplay(int index)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
357 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
358 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
359 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
360 return (-1);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
361 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
362 if (index < 0 || index >= _this->num_displays) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
363 SDL_SetError("index must be in the range 0 - %d",
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
364 _this->num_displays - 1);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
365 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
366 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
367 _this->current_display = index;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
368 return 0;
1963
2590b68531ef Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents: 1956
diff changeset
369 }
2590b68531ef Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents: 1956
diff changeset
370
2590b68531ef Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents: 1956
diff changeset
371 int
2590b68531ef Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents: 1956
diff changeset
372 SDL_GetCurrentVideoDisplay(void)
2590b68531ef Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents: 1956
diff changeset
373 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
374 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
375 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
376 return (-1);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
377 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
378 return _this->current_display;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
379 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
380
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
381 SDL_bool
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
382 SDL_AddDisplayMode(int displayIndex, const SDL_DisplayMode * 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
383 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
384 SDL_VideoDisplay *display = &_this->displays[displayIndex];
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
385 SDL_DisplayMode *modes;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
386 int i, nmodes;
910
4ab6d1fd028f Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents: 883
diff changeset
387
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
388 /* Make sure we don't already have the mode in the list */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
389 modes = display->display_modes;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
390 nmodes = display->num_display_modes;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
391 for (i = nmodes; i--;) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
392 if (SDL_memcmp(mode, &modes[i], sizeof(*mode)) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
393 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
394 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
395 }
910
4ab6d1fd028f Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents: 883
diff changeset
396
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
397 /* Go ahead and add the new mode */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
398 if (nmodes == display->max_display_modes) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
399 modes =
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
400 SDL_realloc(modes,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
401 (display->max_display_modes + 32) * sizeof(*modes));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
402 if (!modes) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
403 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
404 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
405 display->display_modes = modes;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
406 display->max_display_modes += 32;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
407 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
408 modes[nmodes] = *mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
409 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
410
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
411 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
412 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
413
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
414 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
415 SDL_GetNumDisplayModes()
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
416 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
417 if (_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
418 SDL_VideoDisplay *display = &SDL_CurrentDisplay;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
419 if (!display->num_display_modes && _this->GetDisplayModes) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
420 _this->GetDisplayModes(_this);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
421 SDL_qsort(display->display_modes, display->num_display_modes,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
422 sizeof(SDL_DisplayMode), cmpmodes);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
423 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
424 return display->num_display_modes;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
425 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
426 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
427 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
428
1967
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1965
diff changeset
429 int
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1965
diff changeset
430 SDL_GetDisplayMode(int index, SDL_DisplayMode * mode)
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
431 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
432 if (index < 0 || index >= SDL_GetNumDisplayModes()) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
433 SDL_SetError("index must be in the range of 0 - %d",
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
434 SDL_GetNumDisplayModes() - 1);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
435 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
436 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
437 if (mode) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
438 *mode = SDL_CurrentDisplay.display_modes[index];
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
439 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
440 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
441 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
442
1967
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1965
diff changeset
443 int
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1965
diff changeset
444 SDL_GetDesktopDisplayMode(SDL_DisplayMode * mode)
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
445 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
446 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
447 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
448 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
449 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
450 if (mode) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
451 *mode = SDL_CurrentDisplay.desktop_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
452 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
453 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
454 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
455
1967
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1965
diff changeset
456 int
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1965
diff changeset
457 SDL_GetCurrentDisplayMode(SDL_DisplayMode * mode)
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
458 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
459 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
460 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
461 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
462 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
463 if (mode) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
464 *mode = SDL_CurrentDisplay.current_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
465 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
466 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
467 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
468
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
469 SDL_DisplayMode *
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
470 SDL_GetClosestDisplayMode(const SDL_DisplayMode * mode,
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
471 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
472 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
473 Uint32 target_format;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
474 int target_refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
475 int i;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
476 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
477
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
478 if (!_this || !mode || !closest) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
479 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
480 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
481 /* Default to the desktop format */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
482 if (mode->format) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
483 target_format = mode->format;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
484 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
485 target_format = SDL_CurrentDisplay.desktop_mode.format;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
486 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
487
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
488 /* Default to the desktop refresh rate */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
489 if (mode->refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
490 target_refresh_rate = mode->refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
491 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
492 target_refresh_rate = SDL_CurrentDisplay.desktop_mode.refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
493 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
494
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
495 match = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
496 for (i = 0; i < SDL_GetNumDisplayModes(); ++i) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
497 current = &SDL_CurrentDisplay.display_modes[i];
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
498
2789
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
499 if (current->w && (current->w < mode->w)) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
500 /* Out of sorted modes large enough here */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
501 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
502 }
2789
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
503 if (current->h && (current->h < mode->h)) {
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
504 if (current->w && (current->w == mode->w)) {
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
505 /* Out of sorted modes large enough here */
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
506 break;
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
507 }
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
508 /* 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
509 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
510 modes may still follow. */
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
511 continue;
985001797115 Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents: 2787
diff changeset
512 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
513 if (!match || current->w < match->w || current->h < match->h) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
514 match = current;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
515 continue;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
516 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
517 if (current->format != match->format) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
518 /* Sorted highest depth to lowest */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
519 if (current->format == target_format ||
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
520 (SDL_BITSPERPIXEL(current->format) >=
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
521 SDL_BITSPERPIXEL(target_format)
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
522 && SDL_PIXELTYPE(current->format) ==
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
523 SDL_PIXELTYPE(target_format))) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
524 match = current;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
525 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
526 continue;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
527 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
528 if (current->refresh_rate != match->refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
529 /* Sorted highest refresh to lowest */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
530 if (current->refresh_rate >= target_refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
531 match = current;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
532 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
533 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
534 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
535 if (match) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
536 if (match->format) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
537 closest->format = match->format;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
538 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
539 closest->format = mode->format;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
540 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
541 if (match->w && match->h) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
542 closest->w = match->w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
543 closest->h = match->h;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
544 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
545 closest->w = mode->w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
546 closest->h = mode->h;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
547 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
548 if (match->refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
549 closest->refresh_rate = match->refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
550 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
551 closest->refresh_rate = mode->refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
552 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
553 closest->driverdata = match->driverdata;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
554
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
555 /*
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
556 * Pick some reasonable defaults if the app and driver don't
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
557 * care
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
558 */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
559 if (!closest->format) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
560 closest->format = SDL_PIXELFORMAT_RGB888;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
561 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
562 if (!closest->w) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
563 closest->w = 640;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
564 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
565 if (!closest->h) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
566 closest->h = 480;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
567 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
568 return closest;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
569 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
570 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
571 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
572
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
573 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
574 SDL_SetDisplayMode(const SDL_DisplayMode * 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
575 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
576 SDL_VideoDisplay *display;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
577 SDL_DisplayMode display_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
578 SDL_DisplayMode current_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
579 int i, ncolors;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
580
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
581 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
582 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
583 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
584 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
585 display = &SDL_CurrentDisplay;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
586 if (!mode) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
587 mode = &display->desktop_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
588 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
589 display_mode = *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
590
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
591 /* Default to the current mode */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
592 if (!display_mode.format) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
593 display_mode.format = display->current_mode.format;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
594 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
595 if (!display_mode.w) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
596 display_mode.w = display->current_mode.w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
597 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
598 if (!display_mode.h) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
599 display_mode.h = display->current_mode.h;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
600 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
601 if (!display_mode.refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
602 display_mode.refresh_rate = display->current_mode.refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
603 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
604 /* Get a good video mode, the closest one possible */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
605 if (!SDL_GetClosestDisplayMode(&display_mode, &display_mode)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
606 SDL_SetError("No video mode large enough for %dx%d",
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
607 display_mode.w, display_mode.h);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
608 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
609 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
610 /* See if there's anything left to do */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
611 SDL_GetCurrentDisplayMode(&current_mode);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
612 if (SDL_memcmp(&display_mode, &current_mode, sizeof(display_mode)) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
613 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
614 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
615 /* Actually change the display mode */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
616 if (_this->SetDisplayMode(_this, &display_mode) < 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
617 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
618 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
619 display->current_mode = display_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
620
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
621 /* Set up a palette, if necessary */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
622 if (SDL_ISPIXELFORMAT_INDEXED(display_mode.format)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
623 ncolors = (1 << SDL_BITSPERPIXEL(display_mode.format));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
624 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
625 ncolors = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
626 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
627 if ((!ncolors && display->palette) || (ncolors && !display->palette)
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
628 || (ncolors && ncolors != display->palette->ncolors)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
629 if (display->palette) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
630 SDL_FreePalette(display->palette);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
631 display->palette = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
632 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
633 if (ncolors) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
634 display->palette = SDL_AllocPalette(ncolors);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
635 if (!display->palette) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
636 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
637 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
638 SDL_DitherColors(display->palette->colors,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
639 SDL_BITSPERPIXEL(display_mode.format));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
640 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
641 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
642 /* Move any fullscreen windows into position */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
643 for (i = 0; i < display->num_windows; ++i) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
644 SDL_Window *window = &display->windows[i];
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
645 if (FULLSCREEN_VISIBLE(window)) {
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
646 SDL_SetWindowPosition(window->id, window->x, window->y);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
647 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
648 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
649
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
650 return 0;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
651 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
652
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
653 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
654 SDL_SetFullscreenDisplayMode(const SDL_DisplayMode * 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
655 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
656 SDL_VideoDisplay *display;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
657 SDL_DisplayMode fullscreen_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
658 int i;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
659
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
660 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
661 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
662 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
663 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
664 display = &SDL_CurrentDisplay;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
665 if (!mode) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
666 mode = &display->desktop_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
667 }
2869
2fe507a2ef7d Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents: 2860
diff changeset
668 if (!SDL_GetClosestDisplayMode(mode, &fullscreen_mode)) {
2fe507a2ef7d Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents: 2860
diff changeset
669 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
670 return -1;
2fe507a2ef7d Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents: 2860
diff changeset
671 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3091
diff changeset
672
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
673 if (SDL_memcmp
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
674 (&fullscreen_mode, &display->fullscreen_mode,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
675 sizeof(fullscreen_mode)) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
676 /* Nothing to do... */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
677 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
678 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
679 display->fullscreen_mode = fullscreen_mode;
1970
db3ba6c0d0df Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents: 1969
diff changeset
680
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
681 /* Actually set the mode if we have a fullscreen window visible */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
682 for (i = 0; i < display->num_windows; ++i) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
683 SDL_Window *window = &display->windows[i];
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
684 if (FULLSCREEN_VISIBLE(window)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
685 if (SDL_SetDisplayMode(&display->fullscreen_mode) < 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
686 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
687 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
688 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
689 if (window->flags & SDL_WINDOW_FULLSCREEN) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
690 SDL_OnWindowResized(window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
691 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
692 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
693 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
694 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
695
1967
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1965
diff changeset
696 int
01e29c3e9a29 In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents: 1965
diff changeset
697 SDL_GetFullscreenDisplayMode(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
698 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
699 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
700 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
701 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
702 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
703 if (mode) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
704 *mode = SDL_CurrentDisplay.fullscreen_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
705 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
706 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
707 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
708
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
709 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
710 SDL_SetDisplayPalette(const SDL_Color * colors, int firstcolor, int ncolors)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
711 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
712 SDL_Palette *palette;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
713 int status = 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
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
715 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
716 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
717 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
718 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
719 palette = SDL_CurrentDisplay.palette;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
720 if (!palette) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
721 SDL_SetError("Display mode does not have a palette");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
722 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
723 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
724 status = SDL_SetPaletteColors(palette, colors, firstcolor, ncolors);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
725
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
726 if (_this->SetDisplayPalette) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
727 if (_this->SetDisplayPalette(_this, palette) < 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
728 status = -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
729 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
730 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
731 return status;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
732 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
733
c121d94672cb SDL 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 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
735 SDL_GetDisplayPalette(SDL_Color * colors, int firstcolor, int ncolors)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
736 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
737 SDL_Palette *palette;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
738
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
739 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
740 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
741 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
742 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
743 palette = SDL_CurrentDisplay.palette;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
744 if (!palette->ncolors) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
745 SDL_SetError("Display mode does not have a palette");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
746 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
747 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
748 if (firstcolor < 0 || (firstcolor + ncolors) > palette->ncolors) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
749 SDL_SetError("Palette indices are out of range");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
750 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
751 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
752 SDL_memcpy(colors, &palette->colors[firstcolor],
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
753 ncolors * sizeof(*colors));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
754 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
755 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
756
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
757 SDL_WindowID
c121d94672cb SDL 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 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
759 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
760 const Uint32 allowed_flags = (SDL_WINDOW_FULLSCREEN |
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
761 SDL_WINDOW_OPENGL |
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
762 SDL_WINDOW_BORDERLESS |
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
763 SDL_WINDOW_RESIZABLE |
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
764 SDL_WINDOW_INPUT_GRABBED);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
765 SDL_VideoDisplay *display;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
766 SDL_Window window;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
767 int num_windows;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
768 SDL_Window *windows;
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
769
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
770 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
771 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
772 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
773 }
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
774 if (flags & SDL_WINDOW_OPENGL) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
775 if (!_this->GL_CreateContext) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
776 SDL_SetError("No OpenGL support in video driver");
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
777 return 0;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
778 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
779 SDL_GL_LoadLibrary(NULL);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
780 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
781 SDL_zero(window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
782 window.id = _this->next_object_id++;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
783 window.x = x;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
784 window.y = y;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
785 window.w = w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
786 window.h = h;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
787 window.flags = (flags & allowed_flags);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
788 window.display = _this->current_display;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
789
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
790 if (_this->CreateWindow && _this->CreateWindow(_this, &window) < 0) {
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
791 if (flags & SDL_WINDOW_OPENGL) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
792 SDL_GL_UnloadLibrary();
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
793 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
794 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
795 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
796 display = &SDL_CurrentDisplay;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
797 num_windows = display->num_windows;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
798 windows =
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
799 SDL_realloc(display->windows, (num_windows + 1) * sizeof(*windows));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
800 if (!windows) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
801 if (_this->DestroyWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
802 _this->DestroyWindow(_this, &window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
803 }
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
804 if (flags & SDL_WINDOW_OPENGL) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
805 SDL_GL_UnloadLibrary();
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
806 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
807 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
808 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
809 windows[num_windows] = window;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
810 display->windows = windows;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
811 display->num_windows++;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
812
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
813 if (title) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
814 SDL_SetWindowTitle(window.id, title);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
815 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
816 if (flags & SDL_WINDOW_MAXIMIZED) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
817 SDL_MaximizeWindow(window.id);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
818 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
819 if (flags & SDL_WINDOW_MINIMIZED) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
820 SDL_MinimizeWindow(window.id);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
821 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
822 if (flags & SDL_WINDOW_SHOWN) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
823 SDL_ShowWindow(window.id);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
824 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
825 SDL_UpdateWindowGrab(&window);
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
826
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
827 return window.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
828 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
829
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
830 SDL_WindowID
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
831 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
832 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
833 SDL_VideoDisplay *display;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
834 SDL_Window window;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
835 int num_windows;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
836 SDL_Window *windows;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
837
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
838 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
839 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
840 return (0);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
841 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
842 SDL_zero(window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
843 window.id = _this->next_object_id++;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
844 window.display = _this->current_display;
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
845 window.flags = SDL_WINDOW_FOREIGN;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
846
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
847 if (!_this->CreateWindowFrom ||
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
848 _this->CreateWindowFrom(_this, &window, data) < 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
849 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
850 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
851 display = &SDL_CurrentDisplay;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
852 num_windows = display->num_windows;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
853 windows =
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
854 SDL_realloc(display->windows, (num_windows + 1) * sizeof(*windows));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
855 if (!windows) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
856 if (_this->DestroyWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
857 _this->DestroyWindow(_this, &window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
858 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
859 if (window.title) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
860 SDL_free(window.title);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
861 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
862 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
863 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
864 windows[num_windows] = window;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
865 display->windows = windows;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
866 display->num_windows++;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
867
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
868 return window.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
869 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
870
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
871 int
1928
861bc36f0ab3 Fixed crash with multiple windows
Sam Lantinga <slouken@libsdl.org>
parents: 1926
diff changeset
872 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
873 {
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
874 const Uint32 allowed_flags = (SDL_WINDOW_FULLSCREEN |
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
875 SDL_WINDOW_OPENGL |
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
876 SDL_WINDOW_BORDERLESS |
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
877 SDL_WINDOW_RESIZABLE |
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
878 SDL_WINDOW_INPUT_GRABBED);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
879 char *title = window->title;
1956
ba0d62354872 Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents: 1952
diff changeset
880
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
881 if ((flags & SDL_WINDOW_OPENGL) && !_this->GL_CreateContext) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
882 SDL_SetError("No OpenGL support in video driver");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
883 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
884 }
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
885 if ((window->flags & SDL_WINDOW_OPENGL) != (flags & SDL_WINDOW_OPENGL)) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
886 if (flags & SDL_WINDOW_OPENGL) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
887 SDL_GL_LoadLibrary(NULL);
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
888 } else {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
889 SDL_GL_UnloadLibrary();
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
890 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
891 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
892
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
893 if (window->flags & SDL_WINDOW_FOREIGN) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
894 /* 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
895 flags |= SDL_WINDOW_FOREIGN;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
896 } else {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
897 flags &= ~SDL_WINDOW_FOREIGN;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
898 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
899
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
900 if (_this->DestroyWindow && !(flags & SDL_WINDOW_FOREIGN)) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
901 _this->DestroyWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
902 }
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
903
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
904 window->title = NULL;
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
905 window->flags = (flags & allowed_flags);
1956
ba0d62354872 Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents: 1952
diff changeset
906
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
907 if (_this->CreateWindow && !(flags & SDL_WINDOW_FOREIGN)) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
908 if (_this->CreateWindow(_this, window) < 0) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
909 if (flags & SDL_WINDOW_OPENGL) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
910 SDL_GL_UnloadLibrary();
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
911 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
912 return -1;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
913 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
914 }
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
915
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
916 if (title) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
917 SDL_SetWindowTitle(window->id, title);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
918 SDL_free(title);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
919 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
920 if (flags & SDL_WINDOW_MAXIMIZED) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
921 SDL_MaximizeWindow(window->id);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
922 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
923 if (flags & SDL_WINDOW_MINIMIZED) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
924 SDL_MinimizeWindow(window->id);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
925 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
926 if (flags & SDL_WINDOW_SHOWN) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
927 SDL_ShowWindow(window->id);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
928 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
929 SDL_UpdateWindowGrab(window);
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
930
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
931 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
932 }
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
933
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
934 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
935 SDL_GetWindowFromID(SDL_WindowID windowID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
936 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
937 int i, j;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
938
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
939 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
940 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
941 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
942 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
943 for (i = 0; i < _this->num_displays; ++i) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
944 SDL_VideoDisplay *display = &_this->displays[i];
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
945 for (j = 0; j < display->num_windows; ++j) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
946 SDL_Window *window = &display->windows[j];
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
947 if (window->id == windowID) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
948 return window;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
949 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
950 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
951 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
952 return NULL;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
953 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
954
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
955 SDL_VideoDisplay *
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
956 SDL_GetDisplayFromWindow(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
957 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
958 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
959 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
960 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
961 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
962 if (!window) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
963 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
964 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
965 return &_this->displays[window->display];
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
966 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
967
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
968 Uint32
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
969 SDL_GetWindowFlags(SDL_WindowID windowID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
970 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
971 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
972
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
973 if (!window) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
974 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
975 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
976 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
977 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
978
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
979 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
980 SDL_SetWindowTitle(SDL_WindowID windowID, const char *title)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
981 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
982 SDL_Window *window = SDL_GetWindowFromID(windowID);
1956
ba0d62354872 Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents: 1952
diff changeset
983
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
984 if (!window || title == window->title) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
985 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
986 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
987 if (window->title) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
988 SDL_free(window->title);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
989 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
990 if (title) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
991 window->title = SDL_strdup(title);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
992 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
993 window->title = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
994 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
995
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
996 if (_this->SetWindowTitle) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
997 _this->SetWindowTitle(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
998 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
999 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1000
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1001 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
1002 SDL_GetWindowTitle(SDL_WindowID windowID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1003 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1004 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1005
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1006 if (!window) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1007 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1008 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1009 return 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
1010 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1011
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1012 void
2967
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1013 SDL_SetWindowIcon(SDL_WindowID windowID, SDL_Surface * icon)
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1014 {
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1015 SDL_Window *window = SDL_GetWindowFromID(windowID);
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1016
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1017 if (!window) {
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1018 return;
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1019 }
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1020 if (_this->SetWindowIcon) {
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1021 _this->SetWindowIcon(_this, window, icon);
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1022 }
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1023 }
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1024
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1025 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
1026 SDL_SetWindowData(SDL_WindowID windowID, void *userdata)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1027 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1028 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1029
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1030 if (!window) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1031 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1032 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1033 window->userdata = userdata;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1034 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1035
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1036 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
1037 SDL_GetWindowData(SDL_WindowID windowID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1038 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1039 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1040
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1041 if (!window) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1042 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1043 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1044 return window->userdata;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1045 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1046
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1047 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
1048 SDL_SetWindowPosition(SDL_WindowID windowID, int x, int y)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1049 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1050 SDL_Window *window = SDL_GetWindowFromID(windowID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1051 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1052
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1053 if (!window) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1054 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1055 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1056 if (x != SDL_WINDOWPOS_UNDEFINED) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1057 window->x = x;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1058 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1059 if (y != SDL_WINDOWPOS_UNDEFINED) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1060 window->y = y;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1061 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1062 if (_this->SetWindowPosition) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1063 _this->SetWindowPosition(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1064 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1065 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_MOVED, x, y);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1066 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1067
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1068 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
1069 SDL_GetWindowPosition(SDL_WindowID windowID, int *x, int *y)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1070 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1071 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1072
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1073 if (!window) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1074 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1075 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1076 if (x) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1077 *x = window->x;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1078 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1079 if (y) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1080 *y = window->y;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1081 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1082 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1083
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1084 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
1085 SDL_SetWindowSize(SDL_WindowID windowID, int w, int h)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1086 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1087 SDL_Window *window = SDL_GetWindowFromID(windowID);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1088
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1089 if (!window) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1090 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1091 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1092 window->w = w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1093 window->h = h;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1094
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1095 if (_this->SetWindowSize) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1096 _this->SetWindowSize(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1097 }
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
1098 SDL_OnWindowResized(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
1099 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1100
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1101 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
1102 SDL_GetWindowSize(SDL_WindowID windowID, int *w, int *h)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1103 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1104 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1105
2860
6ce28e5287e9 Date: Sun, 07 Dec 2008 13:35:23 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
1106 if (window) {
2849
523b10db69f8 There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents: 2814
diff changeset
1107 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
1108 *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
1109 }
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
1110 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
1111 *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
1112 }
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
1113 } 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
1114 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
1115 *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
1116 }
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
1117 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
1118 *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
1119 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1120 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1121 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1122
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1123 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
1124 SDL_ShowWindow(SDL_WindowID windowID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1125 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1126 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1127
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1128 if (!window || (window->flags & SDL_WINDOW_SHOWN)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1129 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1130 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1131
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1132 if (_this->ShowWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1133 _this->ShowWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1134 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1135 SDL_SendWindowEvent(window->id, 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
1136 }
c121d94672cb SDL 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
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1138 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
1139 SDL_HideWindow(SDL_WindowID windowID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1140 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1141 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1142
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1143 if (!window || !(window->flags & SDL_WINDOW_SHOWN)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1144 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1145 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1146
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1147 if (_this->HideWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1148 _this->HideWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1149 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1150 SDL_SendWindowEvent(window->id, 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
1151 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1152
1895
c121d94672cb SDL 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 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
1154 SDL_RaiseWindow(SDL_WindowID windowID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1155 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1156 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 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
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1158 if (!window || !(window->flags & SDL_WINDOW_SHOWN)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1159 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1160 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1161 if (_this->RaiseWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1162 _this->RaiseWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1163 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1164 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1165
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1166 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
1167 SDL_MaximizeWindow(SDL_WindowID windowID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1168 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1169 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1170
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1171 if (!window || (window->flags & SDL_WINDOW_MAXIMIZED)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1172 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1173 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1174
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1175 if (_this->MaximizeWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1176 _this->MaximizeWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1177 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1178 SDL_SendWindowEvent(window->id, 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
1179 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1180
1895
c121d94672cb SDL 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 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
1182 SDL_MinimizeWindow(SDL_WindowID windowID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1183 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1184 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1185
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1186 if (!window || (window->flags & SDL_WINDOW_MINIMIZED)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1187 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1188 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1189
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1190 if (_this->MinimizeWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1191 _this->MinimizeWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1192 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1193 SDL_SendWindowEvent(window->id, 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
1194 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1195
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1196 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
1197 SDL_RestoreWindow(SDL_WindowID windowID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1198 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1199 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1200
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1201 if (!window
2934
1fcc36adc73d Fixed logic problem with SDL_RestoreWindow()
Sam Lantinga <slouken@libsdl.org>
parents: 2928
diff changeset
1202 || !(window->flags & (SDL_WINDOW_MAXIMIZED | SDL_WINDOW_MINIMIZED))) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1203 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1204 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1205
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1206 if (_this->RestoreWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1207 _this->RestoreWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1208 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1209 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_RESTORED, 0, 0);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1210 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1211
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1212 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
1213 SDL_SetWindowFullscreen(SDL_WindowID windowID, int fullscreen)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1214 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1215 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1216
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1217 if (!window) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1218 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1219 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1220 if (fullscreen) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1221 fullscreen = SDL_WINDOW_FULLSCREEN;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1222 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1223 if ((window->flags & SDL_WINDOW_FULLSCREEN) == fullscreen) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1224 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1225 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1226 if (fullscreen) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1227 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
1228
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1229 if (FULLSCREEN_VISIBLE(window)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1230 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(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
1231
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1232 /* Hide any other fullscreen windows */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1233 int i;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1234 for (i = 0; i < display->num_windows; ++i) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1235 SDL_Window *other = &display->windows[i];
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1236 if (other->id != windowID && FULLSCREEN_VISIBLE(other)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1237 SDL_MinimizeWindow(other->id);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1238 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1239 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1240
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1241 SDL_SetDisplayMode(&display->fullscreen_mode);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1242 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1243 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1244 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
1245
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1246 if (FULLSCREEN_VISIBLE(window)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1247 SDL_SetDisplayMode(NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1248 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1249 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1250 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
1251 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1252
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1253 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
1254 SDL_SetWindowGrab(SDL_WindowID windowID, int 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
1255 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1256 SDL_Window *window = SDL_GetWindowFromID(windowID);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1257
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1258 if (!window || (!!mode == !!(window->flags & SDL_WINDOW_INPUT_GRABBED))) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1259 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1260 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1261 if (mode) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1262 window->flags |= SDL_WINDOW_INPUT_GRABBED;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1263 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1264 window->flags &= ~SDL_WINDOW_INPUT_GRABBED;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1265 }
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1266 SDL_UpdateWindowGrab(window);
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1267 }
1895
c121d94672cb SDL 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
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1269 static void
2876
Sam Lantinga <slouken@libsdl.org>
parents: 2875
diff changeset
1270 SDL_UpdateWindowGrab(SDL_Window * window)
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1271 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1272 if ((window->flags & SDL_WINDOW_INPUT_FOCUS) && _this->SetWindowGrab) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1273 _this->SetWindowGrab(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1274 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1275 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1276
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1277 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
1278 SDL_GetWindowGrab(SDL_WindowID windowID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1279 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1280 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1281
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1282 if (!window) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1283 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1284 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1285 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
1286 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1287
1895
c121d94672cb SDL 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 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
1289 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
1290 {
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1291 if (window->flags & SDL_WINDOW_FULLSCREEN) {
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1292 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0);
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1293 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1294 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1295
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1296 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
1297 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
1298 {
2875
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1299 if (window->flags & SDL_WINDOW_FULLSCREEN) {
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1300 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_FOCUS_LOST, 0, 0);
91a7e08cd238 * Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents: 2869
diff changeset
1301 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1302 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1303
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1304 void
1970
db3ba6c0d0df Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents: 1969
diff changeset
1305 SDL_OnWindowResized(SDL_Window * window)
db3ba6c0d0df Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents: 1969
diff changeset
1306 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1307 SDL_Renderer *renderer = window->renderer;
1970
db3ba6c0d0df Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents: 1969
diff changeset
1308
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1309 if (renderer && renderer->DisplayModeChanged) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1310 renderer->DisplayModeChanged(renderer);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1311 }
1970
db3ba6c0d0df Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents: 1969
diff changeset
1312 }
db3ba6c0d0df Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents: 1969
diff changeset
1313
db3ba6c0d0df Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents: 1969
diff changeset
1314 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
1315 SDL_OnWindowFocusGained(SDL_Window * window)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1316 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1317 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(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
1318
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1319 if (window->flags & SDL_WINDOW_FULLSCREEN) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1320 SDL_SetDisplayMode(&display->fullscreen_mode);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1321 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1322 if (display->gamma && _this->SetDisplayGammaRamp) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1323 _this->SetDisplayGammaRamp(_this, display->gamma);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1324 }
2876
Sam Lantinga <slouken@libsdl.org>
parents: 2875
diff changeset
1325 if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN))
Sam Lantinga <slouken@libsdl.org>
parents: 2875
diff changeset
1326 && _this->SetWindowGrab) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1327 _this->SetWindowGrab(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1328 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1329 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1330
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1331 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
1332 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
1333 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1334 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1335
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1336 if (window->flags & SDL_WINDOW_FULLSCREEN) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1337 SDL_MinimizeWindow(window->id);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1338 SDL_SetDisplayMode(NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1339 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1340 if (display->gamma && _this->SetDisplayGammaRamp) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1341 _this->SetDisplayGammaRamp(_this, display->saved_gamma);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1342 }
2876
Sam Lantinga <slouken@libsdl.org>
parents: 2875
diff changeset
1343 if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN))
Sam Lantinga <slouken@libsdl.org>
parents: 2875
diff changeset
1344 && _this->SetWindowGrab) {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1345 _this->SetWindowGrab(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1346 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1347 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1348
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1349 SDL_WindowID
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1350 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
1351 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1352 SDL_VideoDisplay *display;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1353 int i;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1354
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1355 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1356 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1357 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1358 display = &SDL_CurrentDisplay;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1359 for (i = 0; i < display->num_windows; ++i) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1360 SDL_Window *window = &display->windows[i];
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1361
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1362 if (window->flags & SDL_WINDOW_INPUT_FOCUS) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1363 return window->id;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1364 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1365 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1366 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
1367 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1368
c121d94672cb SDL 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 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
1370 SDL_DestroyWindow(SDL_WindowID windowID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1371 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1372 int i, j;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1373
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1374 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1375 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1376 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1377 /* Restore video mode, etc. */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1378 SDL_SendWindowEvent(windowID, SDL_WINDOWEVENT_FOCUS_LOST, 0, 0);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1379
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1380 for (i = 0; i < _this->num_displays; ++i) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1381 SDL_VideoDisplay *display = &_this->displays[i];
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1382 for (j = 0; j < display->num_windows; ++j) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1383 SDL_Window *window = &display->windows[j];
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1384 if (window->id != windowID) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1385 continue;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1386 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1387 if (window->title) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1388 SDL_free(window->title);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1389 window->title = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1390 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1391 if (window->renderer) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1392 SDL_DestroyRenderer(window->id);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1393 window->renderer = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1394 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1395 if (_this->DestroyWindow) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1396 _this->DestroyWindow(_this, window);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1397 }
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1398 if (window->flags & SDL_WINDOW_OPENGL) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1399 SDL_GL_UnloadLibrary();
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1400 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1401 if (j != display->num_windows - 1) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1402 SDL_memcpy(&display->windows[i],
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1403 &display->windows[i + 1],
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1404 (display->num_windows - i - 1) * sizeof(*window));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1405 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1406 --display->num_windows;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1407 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1408 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1409 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1410 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1411
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1412 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
1413 SDL_AddRenderDriver(int displayIndex, const SDL_RenderDriver * driver)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1414 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1415 SDL_VideoDisplay *display;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1416 SDL_RenderDriver *render_drivers;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1417
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1418 if (displayIndex >= _this->num_displays) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1419 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1420 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1421 display = &_this->displays[displayIndex];
2119
9341a884a4d9 Fixed running on Windows under VMware
Sam Lantinga <slouken@libsdl.org>
parents: 2075
diff changeset
1422
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1423 render_drivers =
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1424 SDL_realloc(display->render_drivers,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1425 (display->num_render_drivers +
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1426 1) * sizeof(*render_drivers));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1427 if (render_drivers) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1428 render_drivers[display->num_render_drivers] = *driver;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1429 display->render_drivers = render_drivers;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1430 display->num_render_drivers++;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1431 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1432 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1433
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1434 int
1969
5d3724f64f2b Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents: 1967
diff changeset
1435 SDL_GetNumRenderDrivers(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
1436 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1437 if (_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1438 return SDL_CurrentDisplay.num_render_drivers;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1439 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1440 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
1441 }
c121d94672cb SDL 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 int
1969
5d3724f64f2b Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents: 1967
diff changeset
1444 SDL_GetRenderDriverInfo(int index, SDL_RendererInfo * info)
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1445 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1446 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1447 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1448 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1449 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1450 if (index < 0 || index >= SDL_GetNumRenderDrivers()) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1451 SDL_SetError("index must be in the range of 0 - %d",
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1452 SDL_GetNumRenderDrivers() - 1);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1453 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1454 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1455 *info = SDL_CurrentDisplay.render_drivers[index].info;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1456 return 0;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1457 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1458
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1459 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
1460 SDL_CreateRenderer(SDL_WindowID windowID, int index, Uint32 flags)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1461 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1462 SDL_Window *window = SDL_GetWindowFromID(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1463
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1464 if (!window) {
3091
32efcc94b3da Fixed return value for SDL_CreateRenderer()
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
1465 SDL_SetError("Invalid window ID");
32efcc94b3da Fixed return value for SDL_CreateRenderer()
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
1466 return -1;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1467 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1468 if (index < 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1469 const char *override = SDL_getenv("SDL_VIDEO_RENDERER");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1470 int n = SDL_GetNumRenderDrivers();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1471 for (index = 0; index < n; ++index) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1472 SDL_RenderDriver *driver =
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1473 &SDL_CurrentDisplay.render_drivers[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
1474
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1475 if (override) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1476 if (SDL_strcasecmp(override, driver->info.name) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1477 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1478 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1479 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1480 if ((driver->info.flags & flags) == flags) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1481 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1482 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1483 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1484 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1485 if (index == n) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1486 SDL_SetError("Couldn't find matching render driver");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1487 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1488 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1489 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1490 if (index >= SDL_GetNumRenderDrivers()) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1491 SDL_SetError("index must be -1 or in the range of 0 - %d",
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1492 SDL_GetNumRenderDrivers() - 1);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1493 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1494 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1495 /* Free any existing renderer */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1496 SDL_DestroyRenderer(windowID);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1497
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1498 /* Create a new renderer instance */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1499 window->renderer = SDL_CurrentDisplay.render_drivers[index]
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1500 .CreateRenderer(window, flags);
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3091
diff changeset
1501
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
1502 if (window->renderer == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
1503 /* Assuming renderer set its error */
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
1504 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3091
diff changeset
1505 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3091
diff changeset
1506
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1507 SDL_SelectRenderer(window->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
1508
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1509 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
1510 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1511
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1512 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
1513 SDL_SelectRenderer(SDL_WindowID windowID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1514 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1515 SDL_Window *window = SDL_GetWindowFromID(windowID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1516 SDL_Renderer *renderer;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1517
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1518 if (!window || !window->renderer) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1519 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1520 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1521 renderer = window->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1522 if (renderer && renderer->ActivateRenderer) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1523 if (renderer->ActivateRenderer(renderer) < 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1524 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1525 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1526 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1527 SDL_CurrentDisplay.current_renderer = renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1528 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
1529 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1530
1969
5d3724f64f2b Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents: 1967
diff changeset
1531 int
5d3724f64f2b Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents: 1967
diff changeset
1532 SDL_GetRendererInfo(SDL_RendererInfo * info)
5d3724f64f2b Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents: 1967
diff changeset
1533 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1534 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1535 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1536 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1537 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1538 if (!SDL_CurrentDisplay.current_renderer) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1539 SDL_SetError("There is no current renderer");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1540 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1541 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1542 *info = SDL_CurrentDisplay.current_renderer->info;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1543 return 0;
1969
5d3724f64f2b Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents: 1967
diff changeset
1544 }
5d3724f64f2b Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents: 1967
diff changeset
1545
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1546 SDL_TextureID
c121d94672cb SDL 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 SDL_CreateTexture(Uint32 format, int access, int w, int h)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1548 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1549 int hash;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1550 SDL_Renderer *renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1551 SDL_Texture *texture;
1895
c121d94672cb SDL 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
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1553 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1554 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1555 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1556 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1557 renderer = SDL_CurrentDisplay.current_renderer;
2810
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
1558 if (!renderer) {
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
1559 return 0;
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
1560 }
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
1561 if (!renderer->CreateTexture) {
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
1562 SDL_Unsupported();
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1563 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1564 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1565 texture = (SDL_Texture *) SDL_calloc(1, sizeof(*texture));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1566 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1567 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1568 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1569 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1570 texture->id = _this->next_object_id++;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1571 texture->format = format;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1572 texture->access = access;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1573 texture->w = w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1574 texture->h = h;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1575 texture->r = 255;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1576 texture->g = 255;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1577 texture->b = 255;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1578 texture->a = 255;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1579 texture->renderer = renderer;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1580
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1581 if (renderer->CreateTexture(renderer, texture) < 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1582 if (renderer->DestroyTexture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1583 renderer->DestroyTexture(renderer, texture);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1584 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1585 SDL_free(texture);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1586 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1587 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1588 hash = (texture->id % SDL_arraysize(SDL_CurrentDisplay.textures));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1589 texture->next = SDL_CurrentDisplay.textures[hash];
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1590 SDL_CurrentDisplay.textures[hash] = texture;
1895
c121d94672cb SDL 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
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1592 return texture->id;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1593 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1594
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1595 SDL_TextureID
2222
926294b2bb4e Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents: 2130
diff changeset
1596 SDL_CreateTextureFromSurface(Uint32 format, SDL_Surface * surface)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1597 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1598 SDL_TextureID textureID;
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1599 Uint32 requested_format = format;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1600 SDL_PixelFormat *fmt;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1601 int bpp;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1602 Uint32 Rmask, Gmask, Bmask, Amask;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1603
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1604 if (!surface) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1605 SDL_SetError("SDL_CreateTextureFromSurface() passed NULL surface");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1606 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1607 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1608 fmt = surface->format;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1609
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1610 if (format) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1611 if (!SDL_PixelFormatEnumToMasks
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1612 (format, &bpp, &Rmask, &Gmask, &Bmask, &Amask)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1613 SDL_SetError("Unknown pixel format");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1614 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1615 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1616 } else {
3058
17c5930f498e Throw a FIXME in there, we'll need to take care of this later.
Sam Lantinga <slouken@libsdl.org>
parents: 3057
diff changeset
1617 /* FIXME: Get the best supported texture format */
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1618 if (surface->format->Amask
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1619 || !(surface->map->info.flags &
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1620 (SDL_COPY_COLORKEY | SDL_COPY_MASK | SDL_COPY_BLEND))) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1621 bpp = fmt->BitsPerPixel;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1622 Rmask = fmt->Rmask;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1623 Gmask = fmt->Gmask;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1624 Bmask = fmt->Bmask;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1625 Amask = fmt->Amask;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1626 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1627 /* Need a format with alpha */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1628 bpp = 32;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1629 Rmask = 0x00FF0000;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1630 Gmask = 0x0000FF00;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1631 Bmask = 0x000000FF;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1632 Amask = 0xFF000000;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1633 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1634 format = SDL_MasksToPixelFormatEnum(bpp, Rmask, Gmask, Bmask, Amask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1635 if (!format) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1636 SDL_SetError("Unknown pixel format");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1637 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1638 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1639 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1640
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1641 textureID =
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1642 SDL_CreateTexture(format, SDL_TEXTUREACCESS_STATIC, surface->w,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1643 surface->h);
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1644 if (!textureID && !requested_format) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1645 SDL_DisplayMode desktop_mode;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1646 SDL_GetDesktopDisplayMode(&desktop_mode);
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1647 format = desktop_mode.format;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1648 textureID =
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1649 SDL_CreateTexture(format, SDL_TEXTUREACCESS_STATIC, surface->w,
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1650 surface->h);
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
1651 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1652 if (!textureID) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1653 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1654 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1655 if (bpp == fmt->BitsPerPixel && Rmask == fmt->Rmask && Gmask == fmt->Gmask
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1656 && Bmask == fmt->Bmask && Amask == fmt->Amask) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1657 if (SDL_MUSTLOCK(surface)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1658 if (SDL_LockSurface(surface) < 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1659 SDL_DestroyTexture(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1660 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1661 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1662 SDL_UpdateTexture(textureID, NULL, surface->pixels,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1663 surface->pitch);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1664 SDL_UnlockSurface(surface);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1665 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1666 SDL_UpdateTexture(textureID, NULL, surface->pixels,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1667 surface->pitch);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1668 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1669 } else {
2967
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1670 SDL_PixelFormat dst_fmt;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1671 SDL_Surface *dst = NULL;
2222
926294b2bb4e Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents: 2130
diff changeset
1672
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1673 /* Set up a destination surface for the texture update */
2967
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1674 SDL_InitFormat(&dst_fmt, bpp, Rmask, Gmask, Bmask, Amask);
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1675 if (SDL_ISPIXELFORMAT_INDEXED(format)) {
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1676 dst_fmt.palette =
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1677 SDL_AllocPalette((1 << SDL_BITSPERPIXEL(format)));
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1678 if (dst_fmt.palette) {
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1679 /*
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1680 * FIXME: Should we try to copy
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1681 * fmt->palette?
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1682 */
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1683 SDL_DitherColors(dst_fmt.palette->colors,
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1684 SDL_BITSPERPIXEL(format));
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1685 }
2967
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1686 }
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1687 dst = SDL_ConvertSurface(surface, &dst_fmt, 0);
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1688 if (dst) {
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1689 SDL_UpdateTexture(textureID, NULL, dst->pixels, dst->pitch);
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1690 SDL_FreeSurface(dst);
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1691 }
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1692 if (dst_fmt.palette) {
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2934
diff changeset
1693 SDL_FreePalette(dst_fmt.palette);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1694 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1695 if (!dst) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1696 SDL_DestroyTexture(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1697 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1698 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1699 }
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
1700
3053
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1701 {
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1702 Uint8 r, g, b, a;
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1703 int blendMode;
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1704 int scaleMode;
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1705
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1706 SDL_GetSurfaceColorMod(surface, &r, &g, &b);
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1707 SDL_SetTextureColorMod(textureID, r, g, b);
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1708
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1709 SDL_GetSurfaceAlphaMod(surface, &a);
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1710 SDL_SetTextureAlphaMod(textureID, a);
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1711
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1712 SDL_GetSurfaceBlendMode(surface, &blendMode);
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1713 SDL_SetTextureBlendMode(textureID, blendMode);
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1714
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1715 SDL_GetSurfaceScaleMode(surface, &scaleMode);
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1716 SDL_SetTextureScaleMode(textureID, scaleMode);
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1717 }
aa34d1180d30 When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents: 3029
diff changeset
1718
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1719 if (SDL_ISPIXELFORMAT_INDEXED(format) && fmt->palette) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1720 SDL_SetTexturePalette(textureID, fmt->palette->colors, 0,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1721 fmt->palette->ncolors);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1722 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1723 return textureID;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1724 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1725
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1726 static __inline__ SDL_Texture *
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1727 SDL_GetTextureFromID(SDL_TextureID textureID)
c121d94672cb SDL 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 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1729 int hash;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1730 SDL_Texture *texture;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1731
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1732 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1733 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1734 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1735 hash = (textureID % SDL_arraysize(SDL_CurrentDisplay.textures));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1736 for (texture = SDL_CurrentDisplay.textures[hash]; texture;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1737 texture = texture->next) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1738 if (texture->id == textureID) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1739 return texture;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1740 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1741 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1742 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
1743 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1744
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1745 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
1746 SDL_QueryTexture(SDL_TextureID textureID, Uint32 * format, int *access,
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1747 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
1748 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1749 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
1895
c121d94672cb SDL 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
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1751 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1752 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1753 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1754 if (format) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1755 *format = texture->format;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1756 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1757 if (access) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1758 *access = texture->access;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1759 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1760 if (w) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1761 *w = texture->w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1762 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1763 if (h) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1764 *h = texture->h;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1765 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1766 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
1767 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1768
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1769 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
1770 SDL_QueryTexturePixels(SDL_TextureID textureID, void **pixels, int *pitch)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1771 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1772 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1773 SDL_Renderer *renderer;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1774
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1775 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1776 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1777 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1778 renderer = texture->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1779 if (!renderer->QueryTexturePixels) {
2810
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
1780 SDL_Unsupported();
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1781 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1782 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1783 return renderer->QueryTexturePixels(renderer, texture, pixels, pitch);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1784 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1785
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1786 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
1787 SDL_SetTexturePalette(SDL_TextureID textureID, const SDL_Color * colors,
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1788 int firstcolor, int ncolors)
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1789 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1790 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1791 SDL_Renderer *renderer;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1792
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1793 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1794 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1795 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1796 renderer = texture->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1797 if (!renderer->SetTexturePalette) {
2810
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
1798 SDL_Unsupported();
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1799 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1800 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1801 return renderer->SetTexturePalette(renderer, texture, colors, firstcolor,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1802 ncolors);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1803 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1804
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1805 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
1806 SDL_GetTexturePalette(SDL_TextureID textureID, SDL_Color * colors,
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1807 int firstcolor, int ncolors)
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1808 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1809 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1810 SDL_Renderer *renderer;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1811
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1812 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1813 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1814 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1815 renderer = texture->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1816 if (!renderer->GetTexturePalette) {
2810
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
1817 SDL_Unsupported();
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1818 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1819 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1820 return renderer->GetTexturePalette(renderer, texture, colors, firstcolor,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1821 ncolors);
1895
c121d94672cb SDL 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
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1824 int
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1825 SDL_SetTextureColorMod(SDL_TextureID textureID, Uint8 r, Uint8 g, Uint8 b)
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1826 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1827 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1828 SDL_Renderer *renderer;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1829
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1830 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1831 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1832 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1833 renderer = texture->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1834 if (!renderer->SetTextureColorMod) {
2810
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
1835 SDL_Unsupported();
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1836 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1837 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1838 if (r < 255 || g < 255 || b < 255) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1839 texture->modMode |= SDL_TEXTUREMODULATE_COLOR;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1840 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1841 texture->modMode &= ~SDL_TEXTUREMODULATE_COLOR;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1842 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1843 texture->r = r;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1844 texture->g = g;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1845 texture->b = b;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1846 return renderer->SetTextureColorMod(renderer, texture);
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1847 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1848
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1849 int
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1850 SDL_GetTextureColorMod(SDL_TextureID textureID, Uint8 * r, Uint8 * g,
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1851 Uint8 * b)
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1852 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1853 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1854 SDL_Renderer *renderer;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1855
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1856 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1857 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1858 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1859 renderer = texture->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1860 if (r) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1861 *r = texture->r;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1862 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1863 if (g) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1864 *g = texture->g;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1865 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1866 if (b) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1867 *b = texture->b;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1868 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1869 return 0;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1870 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1871
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1872 int
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1873 SDL_SetTextureAlphaMod(SDL_TextureID textureID, Uint8 alpha)
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1874 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1875 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1876 SDL_Renderer *renderer;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1877
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1878 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1879 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1880 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1881 renderer = texture->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1882 if (!renderer->SetTextureAlphaMod) {
2810
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
1883 SDL_Unsupported();
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1884 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1885 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1886 if (alpha < 255) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1887 texture->modMode |= SDL_TEXTUREMODULATE_ALPHA;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1888 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1889 texture->modMode &= ~SDL_TEXTUREMODULATE_ALPHA;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1890 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1891 texture->a = alpha;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1892 return renderer->SetTextureAlphaMod(renderer, texture);
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1893 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1894
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1895 int
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1896 SDL_GetTextureAlphaMod(SDL_TextureID textureID, Uint8 * alpha)
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1897 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1898 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1899
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1900 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1901 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1902 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1903 if (alpha) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1904 *alpha = texture->a;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1905 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1906 return 0;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1907 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1908
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1909 int
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1910 SDL_SetTextureBlendMode(SDL_TextureID textureID, int blendMode)
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1911 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1912 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1913 SDL_Renderer *renderer;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1914
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1915 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1916 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1917 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1918 renderer = texture->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1919 if (!renderer->SetTextureBlendMode) {
2810
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
1920 SDL_Unsupported();
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1921 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1922 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1923 texture->blendMode = blendMode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1924 return renderer->SetTextureBlendMode(renderer, texture);
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1925 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1926
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1927 int
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1928 SDL_GetTextureBlendMode(SDL_TextureID textureID, int *blendMode)
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1929 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1930 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1931
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1932 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1933 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1934 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1935 if (blendMode) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1936 *blendMode = texture->blendMode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1937 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1938 return 0;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1939 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1940
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1941 int
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1942 SDL_SetTextureScaleMode(SDL_TextureID textureID, int scaleMode)
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1943 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1944 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1945 SDL_Renderer *renderer;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1946
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1947 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1948 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1949 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1950 renderer = texture->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1951 if (!renderer->SetTextureScaleMode) {
2810
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
1952 SDL_Unsupported();
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1953 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1954 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1955 texture->scaleMode = scaleMode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1956 return renderer->SetTextureScaleMode(renderer, texture);
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1957 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1958
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1959 int
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1960 SDL_GetTextureScaleMode(SDL_TextureID textureID, int *scaleMode)
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1961 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1962 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1963
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1964 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1965 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1966 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1967 if (scaleMode) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1968 *scaleMode = texture->scaleMode;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1969 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1970 return 0;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1971 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1972
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents: 1981
diff changeset
1973 int
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1974 SDL_UpdateTexture(SDL_TextureID textureID, const SDL_Rect * rect,
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1975 const void *pixels, int pitch)
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1976 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1977 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1978 SDL_Renderer *renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1979 SDL_Rect full_rect;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1980
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1981 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1982 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1983 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1984 renderer = texture->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1985 if (!renderer->UpdateTexture) {
2810
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
1986 SDL_Unsupported();
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1987 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1988 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1989 if (!rect) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1990 full_rect.x = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1991 full_rect.y = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1992 full_rect.w = texture->w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1993 full_rect.h = texture->h;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1994 rect = &full_rect;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1995 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
1996 return renderer->UpdateTexture(renderer, texture, rect, pixels, pitch);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1997 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1998
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
1999 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
2000 SDL_LockTexture(SDL_TextureID textureID, const SDL_Rect * rect, int markDirty,
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2001 void **pixels, int *pitch)
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2002 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2003 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2004 SDL_Renderer *renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2005 SDL_Rect full_rect;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2006
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2007 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2008 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2009 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2010 if (texture->access != SDL_TEXTUREACCESS_STREAMING) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2011 SDL_SetError("SDL_LockTexture(): texture must be streaming");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2012 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2013 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2014 renderer = texture->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2015 if (!renderer->LockTexture) {
2810
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
2016 SDL_Unsupported();
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2017 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2018 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2019 if (!rect) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2020 full_rect.x = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2021 full_rect.y = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2022 full_rect.w = texture->w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2023 full_rect.h = texture->h;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2024 rect = &full_rect;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2025 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2026 return renderer->LockTexture(renderer, texture, rect, markDirty, pixels,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2027 pitch);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2028 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2029
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2030 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
2031 SDL_UnlockTexture(SDL_TextureID textureID)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2032 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2033 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2034 SDL_Renderer *renderer;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2035
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2036 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2037 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2038 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2039 if (texture->access != SDL_TEXTUREACCESS_STREAMING) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2040 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2041 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2042 renderer = texture->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2043 if (!renderer->UnlockTexture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2044 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2045 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2046 renderer->UnlockTexture(renderer, texture);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2047 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2048
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2049 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
2050 SDL_DirtyTexture(SDL_TextureID textureID, int numrects,
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2051 const SDL_Rect * rects)
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2052 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2053 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2054 SDL_Renderer *renderer;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2055
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2056 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2057 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2058 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2059 if (texture->access != SDL_TEXTUREACCESS_STREAMING) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2060 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2061 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2062 renderer = texture->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2063 if (!renderer->DirtyTexture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2064 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2065 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2066 renderer->DirtyTexture(renderer, texture, numrects, rects);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2067 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2068
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2069 int
2884
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2070 SDL_SetRenderDrawColor(Uint8 r, Uint8 g, Uint8 b, Uint8 a)
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2071 {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2072 SDL_Renderer *renderer;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2073
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2074 if (!_this) {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2075 SDL_UninitializedVideo();
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2076 return -1;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2077 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2078 renderer = SDL_CurrentDisplay.current_renderer;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2079 if (!renderer) {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2080 return -1;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2081 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2082 renderer->r = r;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2083 renderer->g = g;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2084 renderer->b = b;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2085 renderer->a = a;
2927
2133d2d300fd SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents: 2918
diff changeset
2086 if (renderer->SetDrawColor) {
2133d2d300fd SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents: 2918
diff changeset
2087 return renderer->SetDrawColor(renderer);
2133d2d300fd SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents: 2918
diff changeset
2088 } else {
2133d2d300fd SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents: 2918
diff changeset
2089 return 0;
2133d2d300fd SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents: 2918
diff changeset
2090 }
2884
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2091 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2092
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2093 int
2885
Sam Lantinga <slouken@libsdl.org>
parents: 2884
diff changeset
2094 SDL_GetRenderDrawColor(Uint8 * r, Uint8 * g, Uint8 * b, Uint8 * a)
2884
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2095 {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2096 SDL_Renderer *renderer;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2097
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2098 if (!_this) {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2099 SDL_UninitializedVideo();
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2100 return -1;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2101 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2102 renderer = SDL_CurrentDisplay.current_renderer;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2103 if (!renderer) {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2104 return -1;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2105 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2106 if (r) {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2107 *r = renderer->r;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2108 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2109 if (g) {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2110 *g = renderer->g;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2111 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2112 if (b) {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2113 *b = renderer->b;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2114 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2115 if (a) {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2116 *a = renderer->a;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2117 }
2928
e171ce9bdbad Fixed missing return value
Sam Lantinga <slouken@libsdl.org>
parents: 2927
diff changeset
2118 return 0;
2884
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2119 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2120
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2121 int
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2122 SDL_SetRenderDrawBlendMode(int blendMode)
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2123 {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2124 SDL_Renderer *renderer;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2125
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2126 if (!_this) {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2127 SDL_UninitializedVideo();
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2128 return -1;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2129 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2130 renderer = SDL_CurrentDisplay.current_renderer;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2131 if (!renderer) {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2132 return -1;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2133 }
2927
2133d2d300fd SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents: 2918
diff changeset
2134 renderer->blendMode = blendMode;
2133d2d300fd SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents: 2918
diff changeset
2135 if (renderer->SetDrawBlendMode) {
2133d2d300fd SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents: 2918
diff changeset
2136 return renderer->SetDrawBlendMode(renderer);
2133d2d300fd SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents: 2918
diff changeset
2137 } else {
2133d2d300fd SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents: 2918
diff changeset
2138 return 0;
2884
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2139 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2140 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2141
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2142 int
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2143 SDL_GetRenderDrawBlendMode(int *blendMode)
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2144 {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2145 SDL_Renderer *renderer;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2146
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2147 if (!_this) {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2148 SDL_UninitializedVideo();
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2149 return -1;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2150 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2151 renderer = SDL_CurrentDisplay.current_renderer;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2152 if (!renderer) {
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2153 return -1;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2154 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2155 *blendMode = renderer->blendMode;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2156 return 0;
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2157 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2158
2901
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2159 int
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2160 SDL_RenderPoint(int x, int y)
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2161 {
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2162 SDL_Renderer *renderer;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2163 SDL_Window *window;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2164
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2165 if (!_this) {
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2166 SDL_UninitializedVideo();
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2167 return -1;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2168 }
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2169 renderer = SDL_CurrentDisplay.current_renderer;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2170 if (!renderer) {
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2171 return -1;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2172 }
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2173 if (!renderer->RenderPoint) {
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2174 SDL_Unsupported();
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2175 return -1;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2176 }
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2177 window = SDL_GetWindowFromID(renderer->window);
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2178 if (x < 0 || y < 0 || x >= window->w || y >= window->h) {
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2179 return 0;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2180 }
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2181 return renderer->RenderPoint(renderer, x, y);
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2182 }
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2183
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2184 int
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2185 SDL_RenderLine(int x1, int y1, int x2, int y2)
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2186 {
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2187 SDL_Renderer *renderer;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2188 SDL_Window *window;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2189 SDL_Rect real_rect;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2190
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2191 if (x1 == x2 && y1 == y2) {
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2192 return SDL_RenderPoint(x1, y1);
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2193 }
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2194
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2195 if (!_this) {
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2196 SDL_UninitializedVideo();
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2197 return -1;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2198 }
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2199 renderer = SDL_CurrentDisplay.current_renderer;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2200 if (!renderer) {
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2201 return -1;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2202 }
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2203 if (!renderer->RenderLine) {
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2204 SDL_Unsupported();
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2205 return -1;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2206 }
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2207 window = SDL_GetWindowFromID(renderer->window);
2909
3da0bb421d83 Added line clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2908
diff changeset
2208
2901
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2209 real_rect.x = 0;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2210 real_rect.y = 0;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2211 real_rect.w = window->w;
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2212 real_rect.h = window->h;
2910
27d8b12e0e8e Fixed argument order to the line clipping routine
Sam Lantinga <slouken@libsdl.org>
parents: 2909
diff changeset
2213 if (!SDL_IntersectRectAndLine(&real_rect, &x1, &y1, &x2, &y2)) {
2909
3da0bb421d83 Added line clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2908
diff changeset
2214 return (0);
2901
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2215 }
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2216 return renderer->RenderLine(renderer, x1, y1, x2, y2);
133601e3b255 Added RenderPiont() API
Sam Lantinga <slouken@libsdl.org>
parents: 2885
diff changeset
2217 }
2884
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2218
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2219 int
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2220 SDL_RenderFill(const SDL_Rect * rect)
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2221 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2222 SDL_Renderer *renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2223 SDL_Window *window;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2224 SDL_Rect real_rect;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2225
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2226 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2227 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2228 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2229 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2230 renderer = SDL_CurrentDisplay.current_renderer;
2810
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
2231 if (!renderer) {
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
2232 return -1;
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
2233 }
2814
Sam Lantinga <slouken@libsdl.org>
parents: 2810
diff changeset
2234 if (!renderer->RenderFill) {
2810
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
2235 SDL_Unsupported();
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2236 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2237 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2238 window = SDL_GetWindowFromID(renderer->window);
2908
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2239
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2240 real_rect.x = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2241 real_rect.y = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2242 real_rect.w = window->w;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2243 real_rect.h = window->h;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2244 if (rect) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2245 if (!SDL_IntersectRect(rect, &real_rect, &real_rect)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2246 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2247 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2248 }
2884
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2249 return renderer->RenderFill(renderer, &real_rect);
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2250 }
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2251
9dde605c7540 Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents: 2876
diff changeset
2252 int
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2253 SDL_RenderCopy(SDL_TextureID textureID, const SDL_Rect * srcrect,
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2254 const SDL_Rect * dstrect)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2255 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2256 SDL_Texture *texture = SDL_GetTextureFromID(textureID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2257 SDL_Renderer *renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2258 SDL_Window *window;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2259 SDL_Rect real_srcrect;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2260 SDL_Rect real_dstrect;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2261
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2262 if (!texture || texture->renderer != SDL_CurrentDisplay.current_renderer) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2263 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2264 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2265 renderer = SDL_CurrentDisplay.current_renderer;
2810
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
2266 if (!renderer) {
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
2267 return -1;
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
2268 }
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
2269 if (!renderer->RenderCopy) {
27cb878a278e Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents: 2789
diff changeset
2270 SDL_Unsupported();
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2271 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2272 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2273 window = SDL_GetWindowFromID(renderer->window);
2908
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2274
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2275 real_srcrect.x = 0;
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2276 real_srcrect.y = 0;
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2277 real_srcrect.w = texture->w;
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2278 real_srcrect.h = texture->h;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2279 if (srcrect) {
2908
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2280 if (!SDL_IntersectRect(srcrect, &real_srcrect, &real_srcrect)) {
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2281 return 0;
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2282 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2283 }
2908
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2284
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2285 real_dstrect.x = 0;
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2286 real_dstrect.y = 0;
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2287 real_dstrect.w = window->w;
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2288 real_dstrect.h = window->h;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2289 if (dstrect) {
2908
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2290 if (!SDL_IntersectRect(dstrect, &real_dstrect, &real_dstrect)) {
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2291 return 0;
aa6ba38c1714 Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents: 2901
diff changeset
2292 }
2912
1d50666ed3d5 Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2910
diff changeset
2293 /* Clip srcrect by the same amount as dstrect was clipped */
1d50666ed3d5 Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2910
diff changeset
2294 if (dstrect->w != real_dstrect.w) {
1d50666ed3d5 Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2910
diff changeset
2295 int deltax = (real_dstrect.x - dstrect->x);
1d50666ed3d5 Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2910
diff changeset
2296 int deltaw = (real_dstrect.w - dstrect->w);
1d50666ed3d5 Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2910
diff changeset
2297 real_srcrect.x += (deltax * dstrect->w) / real_srcrect.w;
1d50666ed3d5 Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2910
diff changeset
2298 real_srcrect.w += (deltaw * dstrect->w) / real_srcrect.w;
1d50666ed3d5 Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2910
diff changeset
2299 }
1d50666ed3d5 Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2910
diff changeset
2300 if (dstrect->h != real_dstrect.h) {
1d50666ed3d5 Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2910
diff changeset
2301 int deltay = (real_dstrect.y - dstrect->y);
1d50666ed3d5 Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2910
diff changeset
2302 int deltah = (real_dstrect.h - dstrect->h);
1d50666ed3d5 Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2910
diff changeset
2303 real_srcrect.y += (deltay * dstrect->h) / real_srcrect.h;
1d50666ed3d5 Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2910
diff changeset
2304 real_srcrect.h += (deltah * dstrect->h) / real_srcrect.h;
1d50666ed3d5 Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents: 2910
diff changeset
2305 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2306 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2307
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2308 return renderer->RenderCopy(renderer, texture, &real_srcrect,
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2309 &real_dstrect);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2310 }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2311
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2312 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
2313 SDL_RenderPresent(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
2314 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2315 SDL_Renderer *renderer;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2316
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2317 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2318 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2319 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2320 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2321 renderer = SDL_CurrentDisplay.current_renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2322 if (!renderer || !renderer->RenderPresent) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2323 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2324 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2325 renderer->RenderPresent(renderer);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2326 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2327
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2328 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
2329 SDL_DestroyTexture(SDL_TextureID textureID)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2330 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2331 int hash;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2332 SDL_Texture *prev, *texture;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2333 SDL_Renderer *renderer;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2334
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2335 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2336 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2337 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2338 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2339 /* Look up the texture in the hash table */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2340 hash = (textureID % SDL_arraysize(SDL_CurrentDisplay.textures));
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2341 prev = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2342 for (texture = SDL_CurrentDisplay.textures[hash]; texture;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2343 prev = texture, texture = texture->next) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2344 if (texture->id == textureID) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2345 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2346 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2347 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2348 if (!texture) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2349 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2350 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2351 /* Unlink the texture from the list */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2352 if (prev) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2353 prev->next = texture->next;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2354 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2355 SDL_CurrentDisplay.textures[hash] = texture->next;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2356 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2357
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2358 /* Free the texture */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2359 renderer = texture->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2360 renderer->DestroyTexture(renderer, texture);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2361 SDL_free(texture);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2362 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2363
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2364 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
2365 SDL_DestroyRenderer(SDL_WindowID windowID)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2366 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2367 SDL_Window *window = SDL_GetWindowFromID(windowID);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2368 SDL_Renderer *renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2369 int i;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2370
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2371 if (!window) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2372 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2373 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2374 renderer = window->renderer;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2375 if (!renderer) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2376 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2377 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2378 /* Free existing textures for this renderer */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2379 for (i = 0; i < SDL_arraysize(SDL_CurrentDisplay.textures); ++i) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2380 SDL_Texture *texture;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2381 SDL_Texture *prev = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2382 SDL_Texture *next;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2383 for (texture = SDL_CurrentDisplay.textures[i]; texture;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2384 texture = next) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2385 next = texture->next;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2386 if (texture->renderer == renderer) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2387 if (prev) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2388 prev->next = next;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2389 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2390 SDL_CurrentDisplay.textures[i] = next;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2391 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2392 renderer->DestroyTexture(renderer, texture);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2393 SDL_free(texture);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2394 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2395 prev = texture;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2396 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2397 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2398 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2399
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2400 /* Free the renderer instance */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2401 renderer->DestroyRenderer(renderer);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2402
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2403 /* Clear references */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2404 window->renderer = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2405 if (SDL_CurrentDisplay.current_renderer == renderer) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2406 SDL_CurrentDisplay.current_renderer = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2407 }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2408 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2409
3025
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2410 SDL_bool
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2411 SDL_IsScreenSaverEnabled()
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2412 {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2413 if (!_this) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2414 return SDL_TRUE;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2415 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2416 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
2417 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2418
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2419 void
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2420 SDL_EnableScreenSaver()
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2421 {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2422 if (!_this) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2423 return;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2424 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2425 if (!_this->suspend_screensaver) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2426 return;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2427 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2428 _this->suspend_screensaver = SDL_FALSE;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2429 if (_this->SuspendScreenSaver) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2430 _this->SuspendScreenSaver(_this);
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2431 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2432 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2433
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2434 void
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2435 SDL_DisableScreenSaver()
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2436 {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2437 if (!_this) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2438 return;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2439 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2440 if (_this->suspend_screensaver) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2441 return;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2442 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2443 _this->suspend_screensaver = SDL_TRUE;
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2444 if (_this->SuspendScreenSaver) {
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2445 _this->SuspendScreenSaver(_this);
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2446 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2447 }
54fac87e1f34 Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents: 2999
diff changeset
2448
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2449 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
2450 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
2451 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2452 int i, j;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2453
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2454 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2455 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2456 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2457 /* Halt event processing before doing anything else */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2458 SDL_StopEventLoop();
3029
89f8a72e1ee9 Re-enable the screensaver at exit, just in case it's needed...
Sam Lantinga <slouken@libsdl.org>
parents: 3025
diff changeset
2459 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
2460
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2461 /* Clean up the system video */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2462 for (i = _this->num_displays; i--;) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2463 SDL_VideoDisplay *display = &_this->displays[i];
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2464 for (j = display->num_windows; j--;) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2465 SDL_DestroyWindow(display->windows[i].id);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2466 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2467 if (display->windows) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2468 SDL_free(display->windows);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2469 display->windows = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2470 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2471 display->num_windows = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2472 if (display->render_drivers) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2473 SDL_free(display->render_drivers);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2474 display->render_drivers = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2475 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2476 display->num_render_drivers = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2477 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2478 _this->VideoQuit(_this);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2479
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2480 for (i = _this->num_displays; i--;) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2481 SDL_VideoDisplay *display = &_this->displays[i];
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2482 for (j = display->num_display_modes; j--;) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2483 if (display->display_modes[j].driverdata) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2484 SDL_free(display->display_modes[j].driverdata);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2485 display->display_modes[j].driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2486 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2487 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2488 if (display->display_modes) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2489 SDL_free(display->display_modes);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2490 display->display_modes = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2491 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2492 if (display->desktop_mode.driverdata) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2493 SDL_free(display->desktop_mode.driverdata);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2494 display->desktop_mode.driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2495 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2496 if (display->palette) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2497 SDL_FreePalette(display->palette);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2498 display->palette = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2499 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2500 if (display->gamma) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2501 SDL_free(display->gamma);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2502 display->gamma = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2503 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2504 if (display->driverdata) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2505 SDL_free(display->driverdata);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2506 display->driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2507 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2508 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2509 if (_this->displays) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2510 SDL_free(_this->displays);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2511 _this->displays = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2512 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2513 _this->free(_this);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2514 _this = NULL;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2515 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2516
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2517 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
2518 SDL_GL_LoadLibrary(const char *path)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2519 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2520 int retval;
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2521
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2522 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2523 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2524 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2525 }
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2526 if (_this->gl_config.driver_loaded) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2527 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
2528 SDL_SetError("OpenGL library already loaded");
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2529 return -1;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2530 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2531 retval = 0;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2532 } else {
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2533 if (!_this->GL_LoadLibrary) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2534 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
2535 return -1;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2536 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2537 retval = _this->GL_LoadLibrary(_this, path);
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2538 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2539 if (retval == 0) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2540 ++_this->gl_config.driver_loaded;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2541 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2542 return (retval);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2543 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2544
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2545 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
2546 SDL_GL_GetProcAddress(const char *proc)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2547 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2548 void *func;
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2549
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2550 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2551 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2552 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2553 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2554 func = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2555 if (_this->GL_GetProcAddress) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2556 if (_this->gl_config.driver_loaded) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2557 func = _this->GL_GetProcAddress(_this, proc);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2558 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2559 SDL_SetError("No GL driver has been loaded");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2560 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2561 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2562 SDL_SetError("No dynamic GL support in video driver");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2563 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2564 return func;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2565 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2566
3057
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2567 void
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2568 SDL_GL_UnloadLibrary(void)
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2569 {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2570 if (!_this) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2571 SDL_UninitializedVideo();
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2572 return;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2573 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2574 if (_this->gl_config.driver_loaded > 0) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2575 if (--_this->gl_config.driver_loaded > 0) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2576 return;
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2577 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2578 if (_this->GL_UnloadLibrary) {
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2579 _this->GL_UnloadLibrary(_this);
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2580 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2581 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2582 }
089a77aebb7d Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents: 3053
diff changeset
2583
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2584 SDL_bool
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2585 SDL_GL_ExtensionSupported(const char *extension)
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2586 {
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2587 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2588 const GLubyte *(APIENTRY * glGetStringFunc) (GLenum);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2589 const char *extensions;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2590 const char *start;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2591 const char *where, *terminator;
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2592
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2593 /* Extension names should not have spaces. */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2594 where = SDL_strchr(extension, ' ');
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2595 if (where || *extension == '\0') {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2596 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2597 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2598 /* See if there's an environment variable override */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2599 start = SDL_getenv(extension);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2600 if (start && *start == '0') {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2601 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2602 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2603 /* Lookup the available extensions */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2604 glGetStringFunc = SDL_GL_GetProcAddress("glGetString");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2605 if (glGetStringFunc) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2606 extensions = (const char *) glGetStringFunc(GL_EXTENSIONS);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2607 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2608 extensions = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2609 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2610 if (!extensions) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2611 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2612 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2613 /*
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2614 * It takes a bit of care to be fool-proof about parsing the OpenGL
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2615 * extensions string. Don't be fooled by sub-strings, etc.
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2616 */
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2617
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2618 start = extensions;
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2619
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2620 for (;;) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2621 where = SDL_strstr(start, extension);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2622 if (!where)
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2623 break;
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2624
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2625 terminator = where + SDL_strlen(extension);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2626 if (where == start || *(where - 1) == ' ')
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2627 if (*terminator == ' ' || *terminator == '\0')
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2628 return SDL_TRUE;
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2629
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2630 start = terminator;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2631 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2632 return SDL_FALSE;
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2633 #else
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2634 return SDL_FALSE;
1926
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2635 #endif
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2636 }
307355678142 Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents: 1924
diff changeset
2637
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2638 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
2639 SDL_GL_SetAttribute(SDL_GLattr attr, int value)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2640 {
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2641 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2642 int retval;
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2643
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2644 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2645 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2646 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2647 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2648 retval = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2649 switch (attr) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2650 case SDL_GL_RED_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2651 _this->gl_config.red_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2652 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2653 case SDL_GL_GREEN_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2654 _this->gl_config.green_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2655 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2656 case SDL_GL_BLUE_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2657 _this->gl_config.blue_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2658 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2659 case SDL_GL_ALPHA_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2660 _this->gl_config.alpha_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2661 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2662 case SDL_GL_DOUBLEBUFFER:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2663 _this->gl_config.double_buffer = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2664 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2665 case SDL_GL_BUFFER_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2666 _this->gl_config.buffer_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2667 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2668 case SDL_GL_DEPTH_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2669 _this->gl_config.depth_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2670 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2671 case SDL_GL_STENCIL_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2672 _this->gl_config.stencil_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2673 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2674 case SDL_GL_ACCUM_RED_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2675 _this->gl_config.accum_red_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2676 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2677 case SDL_GL_ACCUM_GREEN_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2678 _this->gl_config.accum_green_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2679 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2680 case SDL_GL_ACCUM_BLUE_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2681 _this->gl_config.accum_blue_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2682 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2683 case SDL_GL_ACCUM_ALPHA_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2684 _this->gl_config.accum_alpha_size = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2685 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2686 case SDL_GL_STEREO:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2687 _this->gl_config.stereo = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2688 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2689 case SDL_GL_MULTISAMPLEBUFFERS:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2690 _this->gl_config.multisamplebuffers = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2691 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2692 case SDL_GL_MULTISAMPLESAMPLES:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2693 _this->gl_config.multisamplesamples = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2694 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2695 case SDL_GL_ACCELERATED_VISUAL:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2696 _this->gl_config.accelerated = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2697 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2698 case SDL_GL_RETAINED_BACKING:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2699 _this->gl_config.retained_backing = value;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2700 break;
3100
7dc982143c06 Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents: 3099
diff changeset
2701 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
2702 _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
2703 break;
7dc982143c06 Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents: 3099
diff changeset
2704 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
2705 _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
2706 break;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2707 default:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2708 SDL_SetError("Unknown OpenGL attribute");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2709 retval = -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2710 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2711 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2712 return retval;
1936
83946ee0ff1f Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 1933
diff changeset
2713 #else
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2714 SDL_Unsupported();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2715 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2716 #endif /* SDL_VIDEO_OPENGL */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2717 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2718
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2719 int
1936
83946ee0ff1f Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 1933
diff changeset
2720 SDL_GL_GetAttribute(SDL_GLattr attr, int *value)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2721 {
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2722 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2723 void (APIENTRY * glGetIntegervFunc) (GLenum pname, GLint * params);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2724 GLenum(APIENTRY * glGetErrorFunc) (void);
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2725 GLenum attrib = 0;
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2726 GLenum error = 0;
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2727
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2728 glGetIntegervFunc = SDL_GL_GetProcAddress("glGetIntegerv");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2729 if (!glGetIntegervFunc) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2730 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2731 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2732
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2733 glGetErrorFunc = SDL_GL_GetProcAddress("glGetError");
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2734 if (!glGetErrorFunc) {
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2735 return -1;
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2736 }
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2737
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2738 /* Clear value in any case */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2739 *value = 0;
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2740
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2741 switch (attr) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2742 case SDL_GL_RETAINED_BACKING:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2743 *value = _this->gl_config.retained_backing;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2744 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2745 case SDL_GL_RED_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2746 attrib = GL_RED_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2747 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2748 case SDL_GL_BLUE_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2749 attrib = GL_BLUE_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2750 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2751 case SDL_GL_GREEN_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2752 attrib = GL_GREEN_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2753 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2754 case SDL_GL_ALPHA_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2755 attrib = GL_ALPHA_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2756 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2757 case SDL_GL_DOUBLEBUFFER:
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2758 #ifndef SDL_VIDEO_OPENGL_ES
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2759 attrib = GL_DOUBLEBUFFER;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2760 break;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2761 #else
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2762 /* 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
2763 /* 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
2764 /* 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
2765 *value = _this->gl_config.double_buffer;
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2766 return 0;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2767 #endif
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2768 case SDL_GL_DEPTH_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2769 attrib = GL_DEPTH_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2770 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2771 case SDL_GL_STENCIL_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2772 attrib = GL_STENCIL_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2773 break;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2774 #ifndef SDL_VIDEO_OPENGL_ES
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2775 case SDL_GL_ACCUM_RED_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2776 attrib = GL_ACCUM_RED_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2777 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2778 case SDL_GL_ACCUM_GREEN_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2779 attrib = GL_ACCUM_GREEN_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2780 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2781 case SDL_GL_ACCUM_BLUE_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2782 attrib = GL_ACCUM_BLUE_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2783 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2784 case SDL_GL_ACCUM_ALPHA_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2785 attrib = GL_ACCUM_ALPHA_BITS;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2786 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2787 case SDL_GL_STEREO:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2788 attrib = GL_STEREO;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2789 break;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2790 #else
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2791 case SDL_GL_ACCUM_RED_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2792 case SDL_GL_ACCUM_GREEN_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2793 case SDL_GL_ACCUM_BLUE_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2794 case SDL_GL_ACCUM_ALPHA_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2795 case SDL_GL_STEREO:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2796 /* none of these are supported in OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2797 *value = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2798 return 0;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2799 #endif
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2800 case SDL_GL_MULTISAMPLEBUFFERS:
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2801 #ifndef SDL_VIDEO_OPENGL_ES
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2802 attrib = GL_SAMPLE_BUFFERS_ARB;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2803 #else
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2804 attrib = GL_SAMPLE_BUFFERS;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2805 #endif
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2806 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2807 case SDL_GL_MULTISAMPLESAMPLES:
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2808 #ifndef SDL_VIDEO_OPENGL_ES
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2809 attrib = GL_SAMPLES_ARB;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2810 #else
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2811 attrib = GL_SAMPLES;
2745
587d2b5fb805 Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2744
diff changeset
2812 #endif
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2813 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2814 case SDL_GL_BUFFER_SIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2815 {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2816 GLint bits = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2817 GLint component;
1936
83946ee0ff1f Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 1933
diff changeset
2818
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2819 /*
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2820 * there doesn't seem to be a single flag in OpenGL
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2821 * for this!
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2822 */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2823 glGetIntegervFunc(GL_RED_BITS, &component);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2824 bits += component;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2825 glGetIntegervFunc(GL_GREEN_BITS, &component);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2826 bits += component;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2827 glGetIntegervFunc(GL_BLUE_BITS, &component);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2828 bits += component;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2829 glGetIntegervFunc(GL_ALPHA_BITS, &component);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2830 bits += component;
1936
83946ee0ff1f Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 1933
diff changeset
2831
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2832 *value = bits;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2833 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2834 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2835 case SDL_GL_ACCELERATED_VISUAL:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2836 {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2837 /* FIXME: How do we get this information? */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2838 *value = (_this->gl_config.accelerated != 0);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2839 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2840 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2841 default:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2842 SDL_SetError("Unknown OpenGL attribute");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2843 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2844 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2845
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2846 glGetIntegervFunc(attrib, (GLint *) value);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2847 error = glGetErrorFunc();
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2848 if (error != GL_NO_ERROR) {
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2849 switch (error) {
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2850 case GL_INVALID_ENUM:
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2851 {
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2852 SDL_SetError("OpenGL error: GL_INVALID_ENUM");
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2853 }
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2854 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2855 case GL_INVALID_VALUE:
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2856 {
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2857 SDL_SetError("OpenGL error: GL_INVALID_VALUE");
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2858 }
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2859 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2860 default:
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2861 {
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2862 SDL_SetError("OpenGL error: %08X", error);
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2863 }
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2864 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2865 }
Sam Lantinga <slouken@libsdl.org>
parents: 3100
diff changeset
2866 return -1;
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
2867 }
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2868 return 0;
1936
83946ee0ff1f Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 1933
diff changeset
2869 #else
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2870 SDL_Unsupported();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2871 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2872 #endif /* SDL_VIDEO_OPENGL */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2873 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2874
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2875 SDL_GLContext
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2876 SDL_GL_CreateContext(SDL_WindowID windowID)
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2877 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2878 SDL_Window *window = SDL_GetWindowFromID(windowID);
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2879
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2880 if (!window) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2881 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2882 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2883 if (!(window->flags & SDL_WINDOW_OPENGL)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2884 SDL_SetError("The specified window isn't an OpenGL window");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2885 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2886 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2887 return _this->GL_CreateContext(_this, window);
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2888 }
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2889
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2890 int
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2891 SDL_GL_MakeCurrent(SDL_WindowID windowID, SDL_GLContext context)
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2892 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2893 SDL_Window *window = SDL_GetWindowFromID(windowID);
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2894
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2895 if (window && !(window->flags & SDL_WINDOW_OPENGL)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2896 SDL_SetError("The specified window isn't an OpenGL window");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2897 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2898 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2899 if (!context) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2900 window = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2901 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2902 return _this->GL_MakeCurrent(_this, window, context);
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2903 }
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2904
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2905 int
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2906 SDL_GL_SetSwapInterval(int interval)
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2907 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2908 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2909 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2910 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2911 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2912 if (_this->GL_SetSwapInterval) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2913 return _this->GL_SetSwapInterval(_this, interval);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2914 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2915 SDL_SetError("Setting the swap interval is not supported");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2916 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2917 }
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2918 }
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2919
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2920 int
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2921 SDL_GL_GetSwapInterval(void)
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2922 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2923 if (!_this) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2924 SDL_UninitializedVideo();
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2925 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2926 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2927 if (_this->GL_GetSwapInterval) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2928 return _this->GL_GetSwapInterval(_this);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2929 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2930 SDL_SetError("Getting the swap interval is not supported");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2931 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2932 }
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2933 }
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2934
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2935 void
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2936 SDL_GL_SwapWindow(SDL_WindowID windowID)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2937 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2938 SDL_Window *window = SDL_GetWindowFromID(windowID);
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2939
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2940 if (!window) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2941 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2942 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2943 if (!(window->flags & SDL_WINDOW_OPENGL)) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2944 SDL_SetError("The specified window isn't an OpenGL window");
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2945 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2946 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2947 _this->GL_SwapWindow(_this, window);
1912
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2948 }
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2949
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2950 void
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2951 SDL_GL_DeleteContext(SDL_GLContext context)
8d384b647307 Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents: 1909
diff changeset
2952 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2953 if (!_this || !context) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2954 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2955 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2956 _this->GL_MakeCurrent(_this, NULL, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2957 _this->GL_DeleteContext(_this, context);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2958 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2959
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2960 #if 0 // FIXME
2744
1aede15771d0 Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2743
diff changeset
2961 /*
1aede15771d0 Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2743
diff changeset
2962 * 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
2963 * & 2 for alpha channel.
1aede15771d0 Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents: 2743
diff changeset
2964 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
2965 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
2966 CreateMaskFromColorKeyOrAlpha(SDL_Surface * icon, Uint8 * mask, int flags)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2967 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2968 int x, y;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2969 Uint32 colorkey;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2970 #define SET_MASKBIT(icon, x, y, mask) \
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2971 mask[(y*((icon->w+7)/8))+(x/8)] &= ~(0x01<<(7-(x%8)))
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2972
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2973 colorkey = icon->format->colorkey;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2974 switch (icon->format->BytesPerPixel) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2975 case 1:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2976 {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2977 Uint8 *pixels;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2978 for (y = 0; y < icon->h; ++y) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2979 pixels = (Uint8 *) icon->pixels + y * icon->pitch;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2980 for (x = 0; x < icon->w; ++x) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2981 if (*pixels++ == colorkey) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2982 SET_MASKBIT(icon, x, y, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2983 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2984 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2985 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2986 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2987 break;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2988
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2989 case 2:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2990 {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2991 Uint16 *pixels;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2992 for (y = 0; y < icon->h; ++y) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2993 pixels = (Uint16 *) icon->pixels + y * icon->pitch / 2;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2994 for (x = 0; x < icon->w; ++x) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2995 if ((flags & 1) && *pixels == colorkey) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2996 SET_MASKBIT(icon, x, y, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2997 } else if ((flags & 2)
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2998 && (*pixels & icon->format->Amask) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
2999 SET_MASKBIT(icon, x, y, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3000 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3001 pixels++;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3002 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3003 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3004 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3005 break;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3006
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3007 case 4:
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3008 {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3009 Uint32 *pixels;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3010 for (y = 0; y < icon->h; ++y) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3011 pixels = (Uint32 *) icon->pixels + y * icon->pitch / 4;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3012 for (x = 0; x < icon->w; ++x) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3013 if ((flags & 1) && *pixels == colorkey) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3014 SET_MASKBIT(icon, x, y, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3015 } else if ((flags & 2)
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3016 && (*pixels & icon->format->Amask) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3017 SET_MASKBIT(icon, x, y, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3018 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3019 pixels++;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3020 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3021 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3022 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3023 break;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3024 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3025 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3026
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3027 /*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3028 * Sets the window manager icon for the display window.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3029 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
3030 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
3031 SDL_WM_SetIcon(SDL_Surface * icon, Uint8 * mask)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3032 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3033 if (icon && _this->SetIcon) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3034 /* Generate a mask if necessary, and create the icon! */
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3035 if (mask == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3036 int mask_len = icon->h * (icon->w + 7) / 8;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3037 int flags = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3038 mask = (Uint8 *) SDL_malloc(mask_len);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3039 if (mask == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3040 return;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3041 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3042 SDL_memset(mask, ~0, mask_len);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3043 if (icon->flags & SDL_SRCCOLORKEY)
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3044 flags |= 1;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3045 if (icon->flags & SDL_SRCALPHA)
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3046 flags |= 2;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3047 if (flags) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3048 CreateMaskFromColorKeyOrAlpha(icon, mask, flags);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3049 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3050 _this->SetIcon(_this, icon, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3051 SDL_free(mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3052 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3053 _this->SetIcon(_this, icon, mask);
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3054 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3055 }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3056 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3057 #endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3058
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
3059 SDL_bool
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3060 SDL_GetWindowWMInfo(SDL_WindowID windowID, struct SDL_SysWMinfo *info)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3061 {
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3062 SDL_Window *window = SDL_GetWindowFromID(windowID);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3063
2753
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3064 if (!window || !_this->GetWindowWMInfo) {
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3065 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3066 }
Sam Lantinga <slouken@libsdl.org>
parents: 2745
diff changeset
3067 return (_this->GetWindowWMInfo(_this, window, info));
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3068 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
3069
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1737
diff changeset
3070 /* vi: set ts=4 sw=4 expandtab: */