annotate src/video/SDL_video.c @ 3502:98a819296cdc

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