Mercurial > sdl-ios-xcode
annotate src/video/qnxgf/SDL_qnxgf.c @ 3749:1e277c40babe gsoc2009_unit_tests
Added placeholder for manual tests.
author | Edgar Simo <bobbens@gmail.com> |
---|---|
date | Tue, 04 Aug 2009 18:07:11 +0000 |
parents | 7f684f249ec9 |
children | 44d5474c2c8a |
rev | line source |
---|---|
3083
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 /* |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 SDL - Simple DirectMedia Layer |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
3 Copyright (C) 1997-2009 Sam Lantinga |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 This library is free software; you can redistribute it and/or |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 License as published by the Free Software Foundation; either |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 This library is distributed in the hope that it will be useful, |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
13 Lesser General Public License for more details. |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 Sam Lantinga |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 slouken@libsdl.org |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
21 |
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
22 QNX Graphics Framework SDL driver |
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
23 Copyright (C) 2009 Mike Gorchak |
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
24 (mike@malva.ua, lestat@i.com.ua) |
3083
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
25 */ |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
26 |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
27 #include "SDL_config.h" |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
28 |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
29 #include "../SDL_sysvideo.h" |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
30 #include "SDL_version.h" |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
31 #include "SDL_syswm.h" |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
32 #include "SDL_loadso.h" |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
33 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
34 /* Include QNX Graphics Framework declarations */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
35 #include <gf/gf.h> |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
36 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
37 #include "SDL_qnxgf.h" |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
38 #include "SDL_gf_render.h" |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
39 #include "SDL_gf_pixelfmt.h" |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
40 #include "SDL_gf_opengles.h" |
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
41 #include "SDL_gf_input.h" |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
42 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
43 /******************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
44 /* SDL Generic video modes, which could provide GF */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
45 /* This is real pain in the ass. GF is just wrapper around a selected driver */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
46 /* some drivers could support double scan modes, like 320x200, 512x384, etc */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
47 /* but some drivers are not. Later we can distinguish one driver from another */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
48 /* Feel free to add any new custom graphics mode */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
49 /******************************************************************************/ |
3139 | 50 static SDL_DisplayMode generic_mode[] = { |
51 {0, 320, 200, 70, NULL}, /* 320x200 modes are 70Hz and 85Hz */ | |
52 {0, 320, 200, 85, NULL}, | |
53 {0, 320, 240, 70, NULL}, /* 320x240 modes are 70Hz and 85Hz */ | |
54 {0, 320, 240, 85, NULL}, | |
55 {0, 400, 300, 60, NULL}, /* 400x300 mode is 60Hz only */ | |
56 {0, 480, 360, 60, NULL}, /* 480x360 mode is 60Hz only */ | |
57 {0, 512, 384, 60, NULL}, /* 512x384 modes are 60Hz and 70Hz */ | |
58 {0, 512, 384, 70, NULL}, | |
59 {0, 640, 480, 60, NULL}, /* 640x480 modes are 60Hz, 75Hz, 85Hz */ | |
60 {0, 640, 480, 75, NULL}, | |
61 {0, 640, 480, 85, NULL}, | |
62 {0, 800, 600, 60, NULL}, /* 800x600 modes are 60Hz, 75Hz, 85Hz */ | |
63 {0, 800, 600, 75, NULL}, | |
64 {0, 800, 600, 85, NULL}, | |
65 {0, 800, 480, 60, NULL}, /* 800x480 mode is 60Hz only */ | |
66 {0, 848, 480, 60, NULL}, /* 848x480 mode is 60Hz only */ | |
67 {0, 960, 600, 60, NULL}, /* 960x600 mode is 60Hz only */ | |
68 {0, 1024, 640, 60, NULL}, /* 1024x640 mode is 60Hz only */ | |
69 {0, 1024, 768, 60, NULL}, /* 1024x768 modes are 60Hz, 70Hz, 75Hz */ | |
70 {0, 1024, 768, 70, NULL}, | |
71 {0, 1024, 768, 75, NULL}, | |
72 {0, 1088, 612, 60, NULL}, /* 1088x612 mode is 60Hz only */ | |
73 {0, 1152, 864, 60, NULL}, /* 1152x864 modes are 60Hz, 70Hz, 72Hz */ | |
74 {0, 1152, 864, 70, NULL}, /* 75Hz and 85Hz */ | |
75 {0, 1152, 864, 72, NULL}, | |
76 {0, 1152, 864, 75, NULL}, | |
77 {0, 1152, 864, 85, NULL}, | |
78 {0, 1280, 720, 60, NULL}, /* 1280x720 mode is 60Hz only */ | |
79 {0, 1280, 768, 60, NULL}, /* 1280x768 mode is 60Hz only */ | |
80 {0, 1280, 800, 60, NULL}, /* 1280x800 mode is 60Hz only */ | |
81 {0, 1280, 960, 60, NULL}, /* 1280x960 mode is 60Hz only */ | |
82 {0, 1280, 1024, 60, NULL}, /* 1280x1024 modes are 60Hz, 75Hz, 85Hz and */ | |
83 {0, 1280, 1024, 75, NULL}, /* 100 Hz */ | |
84 {0, 1280, 1024, 85, NULL}, /* */ | |
85 {0, 1280, 1024, 100, NULL}, /* */ | |
86 {0, 1360, 768, 60, NULL}, /* 1360x768 mode is 60Hz only */ | |
87 {0, 1400, 1050, 60, NULL}, /* 1400x1050 mode is 60Hz only */ | |
88 {0, 1440, 900, 60, NULL}, /* 1440x900 mode is 60Hz only */ | |
89 {0, 1440, 960, 60, NULL}, /* 1440x960 mode is 60Hz only */ | |
90 {0, 1600, 900, 60, NULL}, /* 1600x900 mode is 60Hz only */ | |
91 {0, 1600, 1024, 60, NULL}, /* 1600x1024 mode is 60Hz only */ | |
92 {0, 1600, 1200, 60, NULL}, /* 1600x1200 mode is 60Hz only */ | |
93 {0, 1680, 1050, 60, NULL}, /* 1680x1050 mode is 60Hz only */ | |
94 {0, 1920, 1080, 60, NULL}, /* 1920x1080 mode is 60Hz only */ | |
95 {0, 1920, 1200, 60, NULL}, /* 1920x1200 mode is 60Hz only */ | |
96 {0, 1920, 1440, 60, NULL}, /* 1920x1440 mode is 60Hz only */ | |
97 {0, 2048, 1536, 60, NULL}, /* 2048x1536 mode is 60Hz only */ | |
98 {0, 2048, 1080, 60, NULL}, /* 2048x1080 mode is 60Hz only */ | |
99 {0, 0, 0, 0, NULL} /* End of generic mode list */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
100 }; |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
101 |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
102 /* Low level device graphics driver names, which they are reporting */ |
3139 | 103 GF_DeviceCaps gf_devicename[] = { |
104 /* ATI Rage 128 graphics driver (devg-ati_rage128) */ | |
105 {"ati_rage128", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
106 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
107 /* Fujitsu Carmine graphics driver (devg-carmine.so) */ | |
108 {"carmine", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
109 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
110 /* C&T graphics driver (devg-chips.so) */ | |
111 {"chips", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
112 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
113 /* Fujitsu Coral graphics driver (devg-coral.so) */ | |
114 {"coral", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
115 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
116 /* Intel integrated graphics driver (devg-extreme2.so) */ | |
117 {"extreme2", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
118 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
119 /* Unaccelerated FB driver (devg-flat.so) */ | |
120 {"flat", SDL_GF_UNACCELERATED | SDL_GF_LOWRESOLUTION | | |
121 SDL_GF_UNACCELERATED_3D | SDL_GF_NOVIDEOMEMORY}, | |
122 /* NS Geode graphics driver (devg-geode.so) */ | |
123 {"geode", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
124 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
125 /* Geode LX graphics driver (devg-geodelx.so) */ | |
126 {"geodelx", SDL_GF_ACCELERATED | SDL_GF_LOWRESOLUTION | | |
127 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
128 /* Intel integrated graphics driver (devg-gma9xx.so) */ | |
129 {"gma", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
130 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
131 /* Intel integrated graphics driver (devg-i810.so) */ | |
132 {"i810", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
133 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
134 /* Intel integrated graphics driver (devg-i830.so) */ | |
135 {"i830", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
136 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
137 /* Geode LX graphics driver (devg-lx800.so) */ | |
138 {"lx800", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
139 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
140 /* Matrox Gxx graphics driver (devg-matroxg.so) */ | |
141 {"matroxg", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
142 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
143 /* Intel Poulsbo graphics driver (devg-poulsbo.so) */ | |
144 {"poulsbo", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
145 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
146 /* ATI Radeon driver (devg-radeon.so) */ | |
147 {"radeon", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
148 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
149 /* ATI Rage driver (devg-rage.so) */ | |
150 {"rage", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
151 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
152 /* S3 Savage graphics driver (devg-s3_savage.so) */ | |
153 {"s3_savage", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
154 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
155 /* SiS630 integrated graphics driver (devg-sis630.so) */ | |
156 {"sis630", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
157 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
158 /* PowerVR SGX 535 graphics driver (devg-poulsbo.so) */ | |
159 {"sgx", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
160 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
161 /* SM Voyager GX graphics driver (devg-smi5xx.so) */ | |
162 {"smi5xx", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
163 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
164 /* Silicon Motion graphics driver (devg-smi7xx.so) */ | |
165 {"smi7xx", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
166 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
167 /* SVGA unaccelerated gfx driver (devg-svga.so) */ | |
168 {"svga", SDL_GF_UNACCELERATED | SDL_GF_LOWRESOLUTION | | |
169 SDL_GF_UNACCELERATED_3D | SDL_GF_NOVIDEOMEMORY}, | |
170 /* nVidia TNT graphics driver (devg-tnt.so) */ | |
171 {"tnt", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
172 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
173 /* VIA integrated graphics driver (devg-tvia.so) */ | |
174 {"tvia", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
175 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
176 /* VIA UniChrome graphics driver (devg-unichrome.so) */ | |
177 {"unichrome", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
178 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
179 /* VESA unaccelerated gfx driver (devg-vesa.so) */ | |
180 {"vesa", SDL_GF_UNACCELERATED | SDL_GF_LOWRESOLUTION | | |
181 SDL_GF_UNACCELERATED_3D | SDL_GF_NOVIDEOMEMORY}, | |
182 /* VmWare graphics driver (devg-volari.so) */ | |
183 {"vmware", SDL_GF_ACCELERATED | SDL_GF_LOWRESOLUTION | | |
184 SDL_GF_UNACCELERATED_3D | SDL_GF_NOVIDEOMEMORY}, | |
185 /* XGI XP10 graphics driver (devg-volari.so) */ | |
186 {"volari", SDL_GF_ACCELERATED | SDL_GF_LOWRESOLUTION | | |
187 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
188 /* End of list */ | |
189 {NULL, 0x00000000} | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
190 }; |
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
191 |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
192 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
193 /* SDL Video Device initialization functions */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
194 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
195 |
3139 | 196 static int |
197 qnxgf_available(void) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
198 { |
3139 | 199 gf_dev_t gfdev; |
200 gf_dev_info_t gfdev_info; | |
201 int status; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
202 |
3139 | 203 /* Try to attach to graphics device driver */ |
204 status = gf_dev_attach(&gfdev, GF_DEVICE_INDEX(0), &gfdev_info); | |
205 if (status != GF_ERR_OK) { | |
206 return 0; | |
207 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
208 |
3139 | 209 /* Detach from graphics device driver for now */ |
210 gf_dev_detach(gfdev); | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
211 |
3139 | 212 return 1; |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
213 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
214 |
3139 | 215 static void |
216 qnxgf_destroy(SDL_VideoDevice * device) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
217 { |
3139 | 218 SDL_VideoData *gfdata = (SDL_VideoData *) device->driverdata; |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
219 |
3139 | 220 /* Detach from graphics device driver, if it was initialized */ |
221 if (gfdata->gfinitialized != SDL_FALSE) { | |
222 gf_dev_detach(gfdata->gfdev); | |
223 gfdata->gfdev = NULL; | |
224 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
225 |
3139 | 226 if (device->driverdata != NULL) { |
227 device->driverdata = NULL; | |
228 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
229 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
230 |
3139 | 231 static SDL_VideoDevice * |
232 qnxgf_create(int devindex) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
233 { |
3139 | 234 SDL_VideoDevice *device; |
235 SDL_VideoData *gfdata; | |
236 int status; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
237 |
3139 | 238 /* Initialize SDL_VideoDevice structure */ |
239 device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice)); | |
240 if (device == NULL) { | |
241 SDL_OutOfMemory(); | |
242 return NULL; | |
243 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
244 |
3139 | 245 /* Initialize internal GF specific data */ |
246 gfdata = (SDL_VideoData *) SDL_calloc(1, sizeof(SDL_VideoData)); | |
247 if (gfdata == NULL) { | |
248 SDL_OutOfMemory(); | |
249 SDL_free(device); | |
250 return NULL; | |
251 } | |
252 device->driverdata = gfdata; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
253 |
3139 | 254 /* Try to attach to graphics device driver */ |
255 status = | |
256 gf_dev_attach(&gfdata->gfdev, GF_DEVICE_INDEX(devindex), | |
257 &gfdata->gfdev_info); | |
258 if (status != GF_ERR_OK) { | |
259 SDL_OutOfMemory(); | |
260 SDL_free(gfdata); | |
261 SDL_free(device); | |
262 return NULL; | |
263 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
264 |
3139 | 265 if (gfdata->gfdev_info.description == NULL) { |
266 gf_dev_detach(gfdata->gfdev); | |
267 SDL_SetError("GF: Failed to initialize graphics driver"); | |
268 return NULL; | |
269 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
270 |
3139 | 271 /* Setup amount of available displays and current display */ |
272 device->num_displays = 0; | |
273 device->current_display = 0; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
274 |
3139 | 275 /* Setup device shutdown function */ |
276 gfdata->gfinitialized = SDL_TRUE; | |
277 device->free = qnxgf_destroy; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
278 |
3139 | 279 /* Setup all functions which we can handle */ |
280 device->VideoInit = qnxgf_videoinit; | |
281 device->VideoQuit = qnxgf_videoquit; | |
282 device->GetDisplayModes = qnxgf_getdisplaymodes; | |
283 device->SetDisplayMode = qnxgf_setdisplaymode; | |
284 device->SetDisplayPalette = qnxgf_setdisplaypalette; | |
285 device->GetDisplayPalette = qnxgf_getdisplaypalette; | |
286 device->SetDisplayGammaRamp = qnxgf_setdisplaygammaramp; | |
287 device->GetDisplayGammaRamp = qnxgf_getdisplaygammaramp; | |
288 device->CreateWindow = qnxgf_createwindow; | |
289 device->CreateWindowFrom = qnxgf_createwindowfrom; | |
290 device->SetWindowTitle = qnxgf_setwindowtitle; | |
291 device->SetWindowIcon = qnxgf_setwindowicon; | |
292 device->SetWindowPosition = qnxgf_setwindowposition; | |
293 device->SetWindowSize = qnxgf_setwindowsize; | |
294 device->ShowWindow = qnxgf_showwindow; | |
295 device->HideWindow = qnxgf_hidewindow; | |
296 device->RaiseWindow = qnxgf_raisewindow; | |
297 device->MaximizeWindow = qnxgf_maximizewindow; | |
298 device->MinimizeWindow = qnxgf_minimizewindow; | |
299 device->RestoreWindow = qnxgf_restorewindow; | |
300 device->SetWindowGrab = qnxgf_setwindowgrab; | |
301 device->DestroyWindow = qnxgf_destroywindow; | |
302 device->GetWindowWMInfo = qnxgf_getwindowwminfo; | |
303 device->GL_LoadLibrary = qnxgf_gl_loadlibrary; | |
304 device->GL_GetProcAddress = qnxgf_gl_getprocaddres; | |
305 device->GL_UnloadLibrary = qnxgf_gl_unloadlibrary; | |
306 device->GL_CreateContext = qnxgf_gl_createcontext; | |
307 device->GL_MakeCurrent = qnxgf_gl_makecurrent; | |
308 device->GL_SetSwapInterval = qnxgf_gl_setswapinterval; | |
309 device->GL_GetSwapInterval = qnxgf_gl_getswapinterval; | |
310 device->GL_SwapWindow = qnxgf_gl_swapwindow; | |
311 device->GL_DeleteContext = qnxgf_gl_deletecontext; | |
312 device->PumpEvents = qnxgf_pumpevents; | |
313 device->SuspendScreenSaver = qnxgf_suspendscreensaver; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
314 |
3139 | 315 return device; |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
316 } |
3083
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
317 |
3139 | 318 VideoBootStrap qnxgf_bootstrap = { |
319 "qnxgf", | |
320 "SDL QNX Graphics Framework (GF) video driver", | |
321 qnxgf_available, | |
322 qnxgf_create | |
3083
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
323 }; |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
324 |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
325 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
326 /* SDL Video and Display initialization/handling functions */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
327 /*****************************************************************************/ |
3139 | 328 int |
329 qnxgf_videoinit(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
330 { |
3139 | 331 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; |
332 uint32_t it; | |
333 uint32_t jt; | |
334 char *override; | |
335 int32_t status; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
336 |
3139 | 337 /* By default GF uses buffer swap on vsync */ |
338 gfdata->swapinterval = 1; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
339 |
3139 | 340 /* Add each detected output to SDL */ |
341 for (it = 0; it < gfdata->gfdev_info.ndisplays; it++) { | |
342 SDL_VideoDisplay display; | |
343 SDL_DisplayMode current_mode; | |
344 SDL_DisplayData *didata; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
345 |
3139 | 346 didata = (SDL_DisplayData *) SDL_calloc(1, sizeof(SDL_DisplayData)); |
347 if (didata == NULL) { | |
348 /* memory allocation problem */ | |
349 SDL_OutOfMemory(); | |
350 return -1; | |
351 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
352 |
3139 | 353 /* Set default cursor settings, maximum 128x128 cursor */ |
354 didata->cursor_visible = SDL_FALSE; | |
355 didata->cursor.type = GF_CURSOR_BITMAP; | |
356 didata->cursor.hotspot.x = 0; | |
357 didata->cursor.hotspot.y = 0; | |
358 didata->cursor.cursor.bitmap.w = SDL_VIDEO_GF_MAX_CURSOR_SIZE; | |
359 didata->cursor.cursor.bitmap.h = SDL_VIDEO_GF_MAX_CURSOR_SIZE; | |
360 didata->cursor.cursor.bitmap.stride = | |
361 (didata->cursor.cursor.bitmap.w + 7) / (sizeof(uint8_t) * 8); | |
362 didata->cursor.cursor.bitmap.color0 = 0x00000000; | |
363 didata->cursor.cursor.bitmap.color1 = 0x00000000; | |
364 didata->cursor.cursor.bitmap.image0 = | |
365 SDL_calloc(sizeof(uint8_t), | |
366 (didata->cursor.cursor.bitmap.w + | |
367 7) * didata->cursor.cursor.bitmap.h / | |
368 (sizeof(uint8_t) * 8)); | |
369 if (didata->cursor.cursor.bitmap.image0 == NULL) { | |
370 SDL_free(didata); | |
371 SDL_OutOfMemory(); | |
372 return -1; | |
373 } | |
374 didata->cursor.cursor.bitmap.image1 = | |
375 SDL_calloc(sizeof(uint8_t), | |
376 (didata->cursor.cursor.bitmap.w + | |
377 7) * didata->cursor.cursor.bitmap.h / | |
378 (sizeof(uint8_t) * 8)); | |
379 if (didata->cursor.cursor.bitmap.image1 == NULL) { | |
380 SDL_OutOfMemory(); | |
381 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
382 SDL_free(didata); | |
383 return -1; | |
384 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
385 |
3139 | 386 /* Query current display settings */ |
387 status = gf_display_query(gfdata->gfdev, it, &didata->display_info); | |
388 if (status == GF_ERR_OK) { | |
389 SDL_zero(current_mode); | |
390 current_mode.w = didata->display_info.xres; | |
391 current_mode.h = didata->display_info.yres; | |
392 current_mode.refresh_rate = didata->display_info.refresh; | |
393 current_mode.format = | |
394 qnxgf_gf_to_sdl_pixelformat(didata->display_info.format); | |
395 current_mode.driverdata = NULL; | |
396 } else { | |
397 /* video initialization problem */ | |
398 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
399 SDL_free((void *) didata->cursor.cursor.bitmap.image1); | |
400 SDL_free(didata); | |
401 SDL_SetError("GF: Display query failed"); | |
402 return -1; | |
403 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
404 |
3139 | 405 /* Attach GF to selected display */ |
406 status = gf_display_attach(&didata->display, gfdata->gfdev, it, NULL); | |
407 if (status != GF_ERR_OK) { | |
408 /* video initialization problem */ | |
409 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
410 SDL_free((void *) didata->cursor.cursor.bitmap.image1); | |
411 SDL_free(didata); | |
412 SDL_SetError("GF: Couldn't attach to display"); | |
413 return -1; | |
414 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
415 |
3139 | 416 /* Initialize status variables */ |
417 didata->layer_attached = SDL_FALSE; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
418 |
3139 | 419 /* Attach to main display layer */ |
420 status = | |
421 gf_layer_attach(&didata->layer, didata->display, | |
422 didata->display_info.main_layer_index, 0); | |
423 if (status != GF_ERR_OK) { | |
424 /* Failed to attach to main layer */ | |
425 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
426 SDL_free((void *) didata->cursor.cursor.bitmap.image1); | |
427 SDL_free(didata); | |
428 SDL_SetError | |
429 ("GF: Couldn't attach to main layer, it could be busy"); | |
430 return -1; | |
431 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
432 |
3139 | 433 /* Mark main display layer is attached */ |
434 didata->layer_attached = SDL_TRUE; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
435 |
3139 | 436 /* Set layer source and destination viewport */ |
437 gf_layer_set_src_viewport(didata->layer, 0, 0, current_mode.w - 1, | |
438 current_mode.h - 1); | |
439 gf_layer_set_dst_viewport(didata->layer, 0, 0, current_mode.w - 1, | |
440 current_mode.h - 1); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
441 |
3139 | 442 /* Create main visible on display surface */ |
443 status = gf_surface_create_layer(&didata->surface[0], &didata->layer, | |
444 1, 0, current_mode.w, current_mode.h, | |
445 qnxgf_sdl_to_gf_pixelformat | |
446 (current_mode.format), NULL, | |
447 GF_SURFACE_CREATE_2D_ACCESSIBLE | | |
448 GF_SURFACE_CREATE_3D_ACCESSIBLE | | |
449 GF_SURFACE_CREATE_SHAREABLE); | |
450 if (status != GF_ERR_OK) { | |
451 gf_layer_disable(didata->layer); | |
452 gf_layer_detach(didata->layer); | |
453 didata->layer_attached = SDL_FALSE; | |
454 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
455 SDL_free((void *) didata->cursor.cursor.bitmap.image1); | |
456 SDL_free(didata); | |
457 SDL_SetError("GF: Can't create main layer surface at init (%d)\n", | |
458 status); | |
459 return -1; | |
460 } | |
461 | |
462 /* Set just created surface as main visible on the layer */ | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
463 // gf_layer_set_surfaces(didata->layer, &didata->surface[0], 1); |
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
464 |
3139 | 465 /* Update layer parameters */ |
466 status = gf_layer_update(didata->layer, GF_LAYER_UPDATE_NO_WAIT_IDLE); | |
467 if (status != GF_ERR_OK) { | |
468 /* Free allocated surface */ | |
469 gf_surface_free(didata->surface[0]); | |
470 didata->surface[0] = NULL; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
471 |
3139 | 472 /* Disable and detach from layer */ |
473 gf_layer_disable(didata->layer); | |
474 gf_layer_detach(didata->layer); | |
475 didata->layer_attached = SDL_FALSE; | |
476 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
477 SDL_free((void *) didata->cursor.cursor.bitmap.image1); | |
478 SDL_free(didata); | |
479 SDL_SetError("GF: Can't update layer parameters\n"); | |
480 return -1; | |
481 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
482 |
3139 | 483 /* Enable layer in case if hardware supports layer enable/disable */ |
484 gf_layer_enable(didata->layer); | |
485 | |
486 /* Copy device name for each display */ | |
487 SDL_strlcpy(didata->description, gfdata->gfdev_info.description, | |
488 SDL_VIDEO_GF_DEVICENAME_MAX - 1); | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
489 |
3139 | 490 /* Search device capabilities and possible workarounds */ |
491 jt = 0; | |
492 do { | |
493 if (gf_devicename[jt].name == NULL) { | |
494 break; | |
495 } | |
496 if (SDL_strncmp | |
497 (gf_devicename[jt].name, didata->description, | |
498 SDL_strlen(gf_devicename[jt].name)) == 0) { | |
499 didata->caps = gf_devicename[jt].caps; | |
500 } | |
501 jt++; | |
502 } while (1); | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
503 |
3139 | 504 /* Initialize display structure */ |
505 SDL_zero(display); | |
506 display.desktop_mode = current_mode; | |
507 display.current_mode = current_mode; | |
508 display.driverdata = didata; | |
509 didata->current_mode = current_mode; | |
510 SDL_AddVideoDisplay(&display); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
511 |
3139 | 512 /* Check for environment variables which could override some SDL settings */ |
513 didata->custom_refresh = 0; | |
514 override = SDL_getenv("SDL_VIDEO_GF_REFRESH_RATE"); | |
515 if (override != NULL) { | |
516 if (SDL_sscanf(override, "%u", &didata->custom_refresh) != 1) { | |
517 didata->custom_refresh = 0; | |
518 } | |
519 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
520 |
3139 | 521 /* Get all display modes for this display */ |
522 _this->current_display = it; | |
523 qnxgf_getdisplaymodes(_this); | |
524 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
525 |
3139 | 526 /* Restore default display */ |
527 _this->current_display = 0; | |
528 | |
529 /* Add GF renderer to SDL */ | |
530 gf_addrenderdriver(_this); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
531 |
3139 | 532 /* Add GF input devices */ |
533 status = gf_addinputdevices(_this); | |
534 if (status != 0) { | |
535 /* SDL error is set by gf_addinputdevices() function */ | |
536 return -1; | |
537 } | |
538 | |
539 /* video has been initialized successfully */ | |
540 return 1; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
541 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
542 |
3139 | 543 void |
544 qnxgf_videoquit(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
545 { |
3139 | 546 SDL_DisplayData *didata = NULL; |
547 uint32_t it; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
548 |
3139 | 549 /* Stop collecting mouse events */ |
550 hiddi_disable_mouse(); | |
551 /* Delete GF input devices */ | |
552 gf_delinputdevices(_this); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
553 |
3139 | 554 /* SDL will restore old desktop mode on exit */ |
555 for (it = 0; it < _this->num_displays; it++) { | |
556 didata = _this->displays[it].driverdata; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
557 |
3139 | 558 /* Free cursor image */ |
559 if (didata->cursor.cursor.bitmap.image0 != NULL) { | |
560 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
561 didata->cursor.cursor.bitmap.image0 = NULL; | |
562 } | |
563 if (didata->cursor.cursor.bitmap.image1 != NULL) { | |
564 SDL_free((void *) didata->cursor.cursor.bitmap.image1); | |
565 didata->cursor.cursor.bitmap.image1 = NULL; | |
566 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
567 |
3139 | 568 /* Free main surface */ |
569 if (didata->surface[0] != NULL) { | |
570 gf_surface_free(didata->surface[0]); | |
571 didata->surface[0] = NULL; | |
572 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
573 |
3139 | 574 /* Free back surface */ |
575 if (didata->surface[1] != NULL) { | |
576 gf_surface_free(didata->surface[1]); | |
577 didata->surface[1] = NULL; | |
578 } | |
579 | |
580 /* Free second back surface */ | |
581 if (didata->surface[2] != NULL) { | |
582 gf_surface_free(didata->surface[2]); | |
583 didata->surface[2] = NULL; | |
584 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
585 |
3139 | 586 /* Detach layer before quit */ |
587 if (didata->layer_attached == SDL_TRUE) { | |
588 /* Disable layer if hardware supports this */ | |
589 gf_layer_disable(didata->layer); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
590 |
3139 | 591 /* Detach from layer, free it for others */ |
592 gf_layer_detach(didata->layer); | |
593 didata->layer = NULL; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
594 |
3139 | 595 /* Mark it as detached */ |
596 didata->layer_attached = SDL_FALSE; | |
597 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
598 |
3139 | 599 /* Detach from selected display */ |
600 gf_display_detach(didata->display); | |
601 didata->display = NULL; | |
602 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
603 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
604 |
3139 | 605 void |
606 qnxgf_getdisplaymodes(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
607 { |
3139 | 608 SDL_DisplayData *didata = |
609 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
610 SDL_DisplayMode mode; | |
611 gf_modeinfo_t modeinfo; | |
612 uint32_t it = 0; | |
613 uint32_t jt = 0; | |
614 uint32_t kt = 0; | |
615 int status; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
616 |
3139 | 617 do { |
618 status = gf_display_query_mode(didata->display, it, &modeinfo); | |
619 if (status == GF_ERR_OK) { | |
620 /* Parsing current mode */ | |
621 if ((modeinfo.flags & GF_MODE_GENERIC) == GF_MODE_GENERIC) { | |
622 /* This mode is generic, so we can add to SDL our resolutions */ | |
623 /* Only pixel format is fixed, refresh rate could be any */ | |
624 jt = 0; | |
625 do { | |
626 if (generic_mode[jt].w == 0) { | |
627 break; | |
628 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
629 |
3139 | 630 /* Check if driver do not supports doublescan video modes */ |
631 if ((didata->caps & SDL_GF_LOWRESOLUTION) != | |
632 SDL_GF_LOWRESOLUTION) { | |
633 if (generic_mode[jt].w < 640) { | |
634 jt++; | |
635 continue; | |
636 } | |
637 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
638 |
3139 | 639 mode.w = generic_mode[jt].w; |
640 mode.h = generic_mode[jt].h; | |
641 mode.refresh_rate = generic_mode[jt].refresh_rate; | |
642 mode.format = | |
643 qnxgf_gf_to_sdl_pixelformat(modeinfo.primary_format); | |
644 mode.driverdata = NULL; | |
645 SDL_AddDisplayMode(_this->current_display, &mode); | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
646 |
3139 | 647 jt++; |
648 } while (1); | |
649 } else { | |
650 /* Add this display mode as is in case if it is non-generic */ | |
651 /* But go through the each refresh rate, supported by gf */ | |
652 jt = 0; | |
653 do { | |
654 if (modeinfo.refresh[jt] != 0) { | |
655 mode.w = modeinfo.xres; | |
656 mode.h = modeinfo.yres; | |
657 mode.refresh_rate = modeinfo.refresh[jt]; | |
658 mode.format = | |
659 qnxgf_gf_to_sdl_pixelformat(modeinfo. | |
660 primary_format); | |
661 mode.driverdata = NULL; | |
662 SDL_AddDisplayMode(_this->current_display, &mode); | |
663 jt++; | |
664 } else { | |
665 break; | |
666 } | |
667 } while (1); | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
668 } |
3139 | 669 } else { |
670 if (status == GF_ERR_PARM) { | |
671 /* out of available modes, all are listed */ | |
672 break; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
673 } |
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
674 |
3139 | 675 /* Error occured during mode listing */ |
676 break; | |
677 } | |
678 it++; | |
679 } while (1); | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
680 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
681 |
3139 | 682 int |
683 qnxgf_setdisplaymode(_THIS, SDL_DisplayMode * mode) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
684 { |
3139 | 685 SDL_DisplayData *didata = |
686 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
687 uint32_t refresh_rate = 0; | |
688 int status; | |
689 | |
690 /* Current display dimensions and bpp are no more valid */ | |
691 didata->current_mode.format = SDL_PIXELFORMAT_UNKNOWN; | |
692 didata->current_mode.w = 0; | |
693 didata->current_mode.h = 0; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
694 |
3139 | 695 /* Check if custom refresh rate requested */ |
696 if (didata->custom_refresh != 0) { | |
697 refresh_rate = didata->custom_refresh; | |
698 } else { | |
699 refresh_rate = mode->refresh_rate; | |
700 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
701 |
3139 | 702 /* Check if SDL GF driver needs to find appropriate refresh rate itself */ |
703 if (refresh_rate == 0) { | |
704 uint32_t it; | |
705 SDL_DisplayMode tempmode; | |
706 | |
707 /* Clear display mode structure */ | |
708 SDL_memset(&tempmode, 0x00, sizeof(SDL_DisplayMode)); | |
709 tempmode.refresh_rate = 0x0000FFFF; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
710 |
3139 | 711 /* Check if window width and height matches one of our modes */ |
712 for (it = 0; it < SDL_CurrentDisplay.num_display_modes; it++) { | |
713 if ((SDL_CurrentDisplay.display_modes[it].w == mode->w) && | |
714 (SDL_CurrentDisplay.display_modes[it].h == mode->h) && | |
715 (SDL_CurrentDisplay.display_modes[it].format == mode->format)) | |
716 { | |
717 /* Find the lowest refresh rate available */ | |
718 if (tempmode.refresh_rate > | |
719 SDL_CurrentDisplay.display_modes[it].refresh_rate) { | |
720 tempmode = SDL_CurrentDisplay.display_modes[it]; | |
721 } | |
722 } | |
723 } | |
724 if (tempmode.refresh_rate != 0x0000FFFF) { | |
725 refresh_rate = tempmode.refresh_rate; | |
726 } else { | |
727 /* Let video driver decide what to do with this */ | |
728 refresh_rate = 0; | |
729 } | |
730 } | |
731 | |
732 /* Check if SDL GF driver needs to check custom refresh rate */ | |
733 if (didata->custom_refresh != 0) { | |
734 uint32_t it; | |
735 SDL_DisplayMode tempmode; | |
736 | |
737 /* Clear display mode structure */ | |
738 SDL_memset(&tempmode, 0x00, sizeof(SDL_DisplayMode)); | |
739 tempmode.refresh_rate = 0x0000FFFF; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
740 |
3139 | 741 /* Check if window width and height matches one of our modes */ |
742 for (it = 0; it < SDL_CurrentDisplay.num_display_modes; it++) { | |
743 if ((SDL_CurrentDisplay.display_modes[it].w == mode->w) && | |
744 (SDL_CurrentDisplay.display_modes[it].h == mode->h) && | |
745 (SDL_CurrentDisplay.display_modes[it].format == mode->format)) | |
746 { | |
747 /* Find the lowest refresh rate available */ | |
748 if (tempmode.refresh_rate > | |
749 SDL_CurrentDisplay.display_modes[it].refresh_rate) { | |
750 tempmode = SDL_CurrentDisplay.display_modes[it]; | |
751 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
752 |
3139 | 753 /* Check if requested refresh rate found */ |
754 if (refresh_rate == | |
755 SDL_CurrentDisplay.display_modes[it].refresh_rate) { | |
756 tempmode = SDL_CurrentDisplay.display_modes[it]; | |
757 break; | |
758 } | |
759 } | |
760 } | |
761 if (tempmode.refresh_rate != 0x0000FFFF) { | |
762 refresh_rate = tempmode.refresh_rate; | |
763 } else { | |
764 /* Let video driver decide what to do with this */ | |
765 refresh_rate = 0; | |
766 } | |
767 } | |
768 | |
769 /* Free main surface */ | |
770 if (didata->surface[0] != NULL) { | |
771 gf_surface_free(didata->surface[0]); | |
772 didata->surface[0] = NULL; | |
773 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
774 |
3139 | 775 /* Free back surface */ |
776 if (didata->surface[1] != NULL) { | |
777 gf_surface_free(didata->surface[1]); | |
778 didata->surface[1] = NULL; | |
779 } | |
780 | |
781 /* Free second back surface */ | |
782 if (didata->surface[2] != NULL) { | |
783 gf_surface_free(didata->surface[2]); | |
784 didata->surface[2] = NULL; | |
785 } | |
786 | |
787 /* Detach layer before switch to new graphics mode */ | |
788 if (didata->layer_attached == SDL_TRUE) { | |
789 /* Disable layer if hardware supports this */ | |
790 gf_layer_disable(didata->layer); | |
791 | |
792 /* Detach from layer, free it for others */ | |
793 gf_layer_detach(didata->layer); | |
794 | |
795 /* Mark it as detached */ | |
796 didata->layer_attached = SDL_FALSE; | |
797 } | |
798 | |
799 /* Set new display video mode */ | |
800 status = | |
801 gf_display_set_mode(didata->display, mode->w, mode->h, refresh_rate, | |
802 qnxgf_sdl_to_gf_pixelformat(mode->format), 0); | |
803 if (status != GF_ERR_OK) { | |
804 /* Display mode/resolution switch has been failed */ | |
805 SDL_SetError("GF: Mode is not supported by graphics driver"); | |
806 return -1; | |
807 } else { | |
808 didata->current_mode = *mode; | |
809 didata->current_mode.refresh_rate = refresh_rate; | |
810 } | |
811 | |
812 /* Attach to main display layer */ | |
813 status = | |
814 gf_layer_attach(&didata->layer, didata->display, | |
815 didata->display_info.main_layer_index, 0); | |
816 if (status != GF_ERR_OK) { | |
817 SDL_SetError("GF: Couldn't attach to main layer, it could be busy"); | |
818 | |
819 /* Failed to attach to main displayable layer */ | |
820 return -1; | |
821 } | |
822 | |
823 /* Mark main display layer is attached */ | |
824 didata->layer_attached = SDL_TRUE; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
825 |
3139 | 826 /* Set layer source and destination viewport */ |
827 gf_layer_set_src_viewport(didata->layer, 0, 0, mode->w - 1, mode->h - 1); | |
828 gf_layer_set_dst_viewport(didata->layer, 0, 0, mode->w - 1, mode->h - 1); | |
829 | |
830 /* Create main visible on display surface */ | |
831 status = | |
832 gf_surface_create_layer(&didata->surface[0], &didata->layer, 1, 0, | |
833 mode->w, mode->h, | |
834 qnxgf_sdl_to_gf_pixelformat(mode->format), | |
835 NULL, | |
836 GF_SURFACE_CREATE_2D_ACCESSIBLE | | |
837 GF_SURFACE_CREATE_3D_ACCESSIBLE | | |
838 GF_SURFACE_CREATE_SHAREABLE); | |
839 if (status != GF_ERR_OK) { | |
840 gf_layer_disable(didata->layer); | |
841 gf_layer_detach(didata->layer); | |
842 didata->layer_attached = SDL_FALSE; | |
843 SDL_SetError | |
844 ("GF: Can't create main layer surface at modeswitch (%d)\n", | |
845 status); | |
846 return -1; | |
847 } | |
848 | |
849 /* Set just created surface as main visible on the layer */ | |
850 gf_layer_set_surfaces(didata->layer, &didata->surface[0], 1); | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
851 |
3139 | 852 /* Update layer parameters */ |
853 status = gf_layer_update(didata->layer, GF_LAYER_UPDATE_NO_WAIT_IDLE); | |
854 if (status != GF_ERR_OK) { | |
855 /* Free main surface */ | |
856 gf_surface_free(didata->surface[0]); | |
857 didata->surface[0] = NULL; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
858 |
3139 | 859 /* Detach layer */ |
860 gf_layer_disable(didata->layer); | |
861 gf_layer_detach(didata->layer); | |
862 didata->layer_attached = SDL_FALSE; | |
863 SDL_SetError("GF: Can't update layer parameters\n"); | |
864 return -1; | |
865 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
866 |
3139 | 867 /* Restore cursor if it was visible */ |
868 if (didata->cursor_visible == SDL_TRUE) { | |
869 gf_cursor_set(didata->display, 0, &didata->cursor); | |
870 gf_cursor_enable(didata->display, 0); | |
871 } | |
872 | |
873 /* Enable layer in case if hardware supports layer enable/disable */ | |
874 gf_layer_enable(didata->layer); | |
875 | |
876 return 0; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
877 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
878 |
3139 | 879 int |
880 qnxgf_setdisplaypalette(_THIS, SDL_Palette * palette) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
881 { |
3139 | 882 SDL_DisplayData *didata = |
883 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
884 | |
885 /* QNX GF doesn't have support for global palette changing, but we */ | |
886 /* could store it for usage in future */ | |
887 | |
888 /* Setting display palette operation has been failed */ | |
889 return -1; | |
890 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
891 |
3139 | 892 int |
893 qnxgf_getdisplaypalette(_THIS, SDL_Palette * palette) | |
894 { | |
895 SDL_DisplayData *didata = | |
896 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
897 | |
898 /* We can't provide current palette settings and looks like SDL */ | |
899 /* do not call this function also, in such case this function returns -1 */ | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
900 |
3139 | 901 /* Getting display palette operation has been failed */ |
902 return -1; | |
903 } | |
904 | |
905 int | |
906 qnxgf_setdisplaygammaramp(_THIS, Uint16 * ramp) | |
907 { | |
908 SDL_DisplayData *didata = | |
909 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
910 int status; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
911 |
3139 | 912 /* Setup gamma ramp, for each color channel */ |
913 status = | |
914 gf_display_set_color_lut16(didata->display, (uint16_t *) ramp, | |
915 (uint16_t *) ramp + 256, | |
916 (uint16_t *) ramp + 512); | |
917 if (status != GF_ERR_OK) { | |
918 /* Setting display gamma ramp operation has been failed */ | |
919 return -1; | |
920 } | |
921 | |
922 return 0; | |
923 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
924 |
3139 | 925 int |
926 qnxgf_getdisplaygammaramp(_THIS, Uint16 * ramp) | |
927 { | |
928 /* TODO: We need to return previous gamma set */ | |
929 /* Also we need some initial fake gamma to return */ | |
930 | |
931 /* Getting display gamma ramp operation has been failed */ | |
932 return -1; | |
933 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
934 |
3139 | 935 int |
936 qnxgf_createwindow(_THIS, SDL_Window * window) | |
937 { | |
938 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
939 SDL_DisplayData *didata = | |
940 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
941 SDL_WindowData *wdata; | |
942 int32_t status; | |
943 | |
944 /* QNX GF supports fullscreen window modes only */ | |
945 if ((window->flags & SDL_WINDOW_FULLSCREEN) != SDL_WINDOW_FULLSCREEN) { | |
946 uint32_t it; | |
947 SDL_DisplayMode mode; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
948 |
3139 | 949 /* Clear display mode structure */ |
950 SDL_memset(&mode, 0x00, sizeof(SDL_DisplayMode)); | |
951 mode.refresh_rate = 0x0000FFFF; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
952 |
3139 | 953 /* Check if window width and height matches one of our modes */ |
954 for (it = 0; it < SDL_CurrentDisplay.num_display_modes; it++) { | |
955 if ((SDL_CurrentDisplay.display_modes[it].w == window->w) && | |
956 (SDL_CurrentDisplay.display_modes[it].h == window->h) && | |
957 (SDL_CurrentDisplay.display_modes[it].format == | |
958 SDL_CurrentDisplay.desktop_mode.format)) { | |
959 /* Find the lowest refresh rate available */ | |
960 if (mode.refresh_rate > | |
961 SDL_CurrentDisplay.display_modes[it].refresh_rate) { | |
962 mode = SDL_CurrentDisplay.display_modes[it]; | |
963 } | |
964 } | |
965 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
966 |
3139 | 967 /* Check if end of display list has been reached */ |
968 if (mode.refresh_rate == 0x0000FFFF) { | |
969 SDL_SetError("GF: Desired video mode is not supported"); | |
970 | |
971 /* Failed to create new window */ | |
972 return -1; | |
973 } else { | |
974 /* Tell to the caller that mode will be fullscreen */ | |
975 window->flags |= SDL_WINDOW_FULLSCREEN; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
976 |
3139 | 977 /* Setup fullscreen mode, bpp used from desktop mode in this case */ |
978 status = qnxgf_setdisplaymode(_this, &mode); | |
979 if (status != 0) { | |
980 /* Failed to swith fullscreen video mode */ | |
981 return -1; | |
982 } | |
983 } | |
984 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
985 |
3139 | 986 /* Setup our own window decorations and states, which are depend on fullscreen mode */ |
987 window->flags |= SDL_WINDOW_SHOWN | SDL_WINDOW_BORDERLESS | | |
988 SDL_WINDOW_MAXIMIZED | SDL_WINDOW_INPUT_GRABBED | | |
989 SDL_WINDOW_INPUT_FOCUS | SDL_WINDOW_MOUSE_FOCUS; | |
990 window->flags &= ~(SDL_WINDOW_RESIZABLE | SDL_WINDOW_MINIMIZED); | |
991 | |
992 /* Ignore any window position settings */ | |
993 window->x = SDL_WINDOWPOS_UNDEFINED; | |
994 window->y = SDL_WINDOWPOS_UNDEFINED; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
995 |
3139 | 996 /* Allocate window internal data */ |
997 wdata = (SDL_WindowData *) SDL_calloc(1, sizeof(SDL_WindowData)); | |
998 if (wdata == NULL) { | |
999 SDL_OutOfMemory(); | |
1000 return -1; | |
1001 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1002 |
3139 | 1003 /* Setup driver data for this window */ |
1004 window->driverdata = wdata; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1005 |
3139 | 1006 /* Check if window must support OpenGL ES rendering */ |
1007 if ((window->flags & SDL_WINDOW_OPENGL) == SDL_WINDOW_OPENGL) { | |
1008 #if defined(SDL_VIDEO_OPENGL_ES) | |
1009 EGLBoolean initstatus; | |
1010 | |
1011 /* Mark this window as OpenGL ES compatible */ | |
1012 wdata->uses_gles = SDL_TRUE; | |
1013 | |
1014 /* Create connection to OpenGL ES */ | |
1015 if (gfdata->egldisplay == EGL_NO_DISPLAY) { | |
1016 gfdata->egldisplay = eglGetDisplay(gfdata->gfdev); | |
1017 if (gfdata->egldisplay == EGL_NO_DISPLAY) { | |
1018 SDL_SetError("GF: Can't get connection to OpenGL ES"); | |
1019 return -1; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1020 } |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1021 |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1022 /* Initialize OpenGL ES library, ignore EGL version */ |
3139 | 1023 initstatus = eglInitialize(gfdata->egldisplay, NULL, NULL); |
1024 if (initstatus != EGL_TRUE) { | |
1025 SDL_SetError("GF: Can't init OpenGL ES library"); | |
1026 return -1; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1027 } |
3139 | 1028 } |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1029 |
3139 | 1030 /* Increment GL ES reference count usage */ |
1031 gfdata->egl_refcount++; | |
1032 #else | |
1033 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1034 return -1; | |
1035 #endif /* SDL_VIDEO_OPENGL_ES */ | |
1036 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
1037 |
3139 | 1038 /* Enable mouse event collecting */ |
1039 hiddi_enable_mouse(); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1040 |
3139 | 1041 /* By default last created window got a input focus */ |
1042 SDL_SetKeyboardFocus(0, window->id); | |
1043 SDL_SetMouseFocus(0, window->id); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1044 |
3139 | 1045 /* Window has been successfully created */ |
1046 return 0; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1047 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1048 |
3139 | 1049 int |
1050 qnxgf_createwindowfrom(_THIS, SDL_Window * window, const void *data) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1051 { |
3139 | 1052 /* Failed to create window from another window */ |
1053 return -1; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1054 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1055 |
3139 | 1056 void |
1057 qnxgf_setwindowtitle(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1058 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1059 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1060 |
3139 | 1061 void |
1062 qnxgf_setwindowicon(_THIS, SDL_Window * window, SDL_Surface * icon) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1063 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1064 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1065 |
3139 | 1066 void |
1067 qnxgf_setwindowposition(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1068 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1069 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1070 |
3139 | 1071 void |
1072 qnxgf_setwindowsize(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1073 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1074 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1075 |
3139 | 1076 void |
1077 qnxgf_showwindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1078 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1079 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1080 |
3139 | 1081 void |
1082 qnxgf_hidewindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1083 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1084 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1085 |
3139 | 1086 void |
1087 qnxgf_raisewindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1088 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1089 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1090 |
3139 | 1091 void |
1092 qnxgf_maximizewindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1093 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1094 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1095 |
3139 | 1096 void |
1097 qnxgf_minimizewindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1098 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1099 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1100 |
3139 | 1101 void |
1102 qnxgf_restorewindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1103 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1104 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1105 |
3139 | 1106 void |
1107 qnxgf_setwindowgrab(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1108 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1109 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1110 |
3139 | 1111 void |
1112 qnxgf_destroywindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1113 { |
3139 | 1114 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; |
1115 SDL_DisplayData *didata = | |
1116 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
1117 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
1118 |
3139 | 1119 if (wdata != NULL) { |
1120 #if defined(SDL_VIDEO_OPENGL_ES) | |
1121 /* Destroy OpenGL ES surface if it was created */ | |
1122 if (wdata->gles_surface != EGL_NO_SURFACE) { | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1123 eglDestroySurface(gfdata->egldisplay, wdata->gles_surface); |
3139 | 1124 } |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1125 |
3139 | 1126 /* Free any 3D target if it was created before */ |
1127 if (wdata->target_created == SDL_TRUE) { | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1128 gf_3d_target_free(wdata->target); |
3139 | 1129 wdata->target_created == SDL_FALSE; |
1130 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1131 |
3139 | 1132 gfdata->egl_refcount--; |
1133 if (gfdata->egl_refcount == 0) { | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1134 /* Terminate connection to OpenGL ES */ |
3139 | 1135 if (gfdata->egldisplay != EGL_NO_DISPLAY) { |
1136 eglTerminate(gfdata->egldisplay); | |
1137 gfdata->egldisplay = EGL_NO_DISPLAY; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1138 } |
3139 | 1139 } |
1140 #endif /* SDL_VIDEO_OPENGL_ES */ | |
1141 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1142 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1143 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1144 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1145 /* SDL Window Manager function */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1146 /*****************************************************************************/ |
3139 | 1147 SDL_bool |
1148 qnxgf_getwindowwminfo(_THIS, SDL_Window * window, struct SDL_SysWMinfo *info) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1149 { |
3139 | 1150 /* QNX GF do not operates at window level, this means we are have no */ |
1151 /* Window Manager available, no specific data in SDL_SysWMinfo too */ | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
1152 |
3139 | 1153 if (info->version.major <= SDL_MAJOR_VERSION) { |
1154 return SDL_TRUE; | |
1155 } else { | |
1156 SDL_SetError("Application not compiled with SDL %d.%d\n", | |
1157 SDL_MAJOR_VERSION, SDL_MINOR_VERSION); | |
1158 return SDL_FALSE; | |
1159 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1160 |
3139 | 1161 /* Failed to get window manager information */ |
1162 return SDL_FALSE; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1163 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1164 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1165 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1166 /* SDL OpenGL/OpenGL ES functions */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1167 /*****************************************************************************/ |
3139 | 1168 int |
1169 qnxgf_gl_loadlibrary(_THIS, const char *path) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1170 { |
3139 | 1171 #if defined(SDL_VIDEO_OPENGL_ES) |
1172 /* Check if OpenGL ES library is specified for GF driver */ | |
1173 if (path == NULL) { | |
1174 path = SDL_getenv("SDL_OPENGL_LIBRARY"); | |
1175 if (path == NULL) { | |
1176 path = SDL_getenv("SDL_OPENGLES_LIBRARY"); | |
1177 } | |
1178 } | |
1179 | |
1180 /* Check if default library loading requested */ | |
1181 if (path == NULL) { | |
1182 /* Already linked with GF library which provides egl* subset of */ | |
1183 /* functions, use Common profile of OpenGL ES library by default */ | |
1184 path = "/usr/lib/libGLES_CM.so.1"; | |
1185 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1186 |
3139 | 1187 /* Load dynamic library */ |
1188 _this->gl_config.dll_handle = SDL_LoadObject(path); | |
1189 if (!_this->gl_config.dll_handle) { | |
1190 /* Failed to load new GL ES library */ | |
1191 SDL_SetError("GF: Failed to locate OpenGL ES library"); | |
1192 return -1; | |
1193 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1194 |
3139 | 1195 /* Store OpenGL ES library path and name */ |
1196 SDL_strlcpy(_this->gl_config.driver_path, path, | |
1197 SDL_arraysize(_this->gl_config.driver_path)); | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1198 |
3139 | 1199 /* New OpenGL ES library is loaded */ |
1200 return 0; | |
1201 #else | |
1202 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1203 return -1; | |
1204 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1205 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1206 |
3139 | 1207 void * |
1208 qnxgf_gl_getprocaddres(_THIS, const char *proc) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1209 { |
3139 | 1210 #if defined(SDL_VIDEO_OPENGL_ES) |
1211 void *function_address; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1212 |
3139 | 1213 /* Try to get function address through the egl interface */ |
1214 function_address = eglGetProcAddress(proc); | |
1215 if (function_address != NULL) { | |
1216 return function_address; | |
1217 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1218 |
3139 | 1219 /* Then try to get function in the OpenGL ES library */ |
1220 if (_this->gl_config.dll_handle) { | |
1221 function_address = | |
1222 SDL_LoadFunction(_this->gl_config.dll_handle, proc); | |
1223 if (function_address != NULL) { | |
1224 return function_address; | |
1225 } | |
1226 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1227 |
3139 | 1228 /* Add emulated OpenGL ES 1.1 functions */ |
1229 if (SDL_strcmp(proc, "glTexParameteri") == 0) { | |
1230 return glTexParameteri; | |
1231 } | |
1232 if (SDL_strcmp(proc, "glTexParameteriv") == 0) { | |
1233 return glTexParameteriv; | |
1234 } | |
1235 if (SDL_strcmp(proc, "glColor4ub") == 0) { | |
1236 return glColor4ub; | |
1237 } | |
1238 | |
1239 /* Failed to get GL ES function address pointer */ | |
1240 SDL_SetError("GF: Cannot locate OpenGL ES function name"); | |
1241 return NULL; | |
1242 #else | |
1243 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1244 return NULL; | |
1245 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1246 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1247 |
3139 | 1248 void |
1249 qnxgf_gl_unloadlibrary(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1250 { |
3139 | 1251 #if defined(SDL_VIDEO_OPENGL_ES) |
1252 /* Unload OpenGL ES library */ | |
1253 if (_this->gl_config.dll_handle) { | |
1254 SDL_UnloadObject(_this->gl_config.dll_handle); | |
1255 _this->gl_config.dll_handle = NULL; | |
1256 } | |
1257 #else | |
1258 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1259 return; | |
1260 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1261 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1262 |
3139 | 1263 SDL_GLContext |
1264 qnxgf_gl_createcontext(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1265 { |
3139 | 1266 #if defined(SDL_VIDEO_OPENGL_ES) |
1267 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
1268 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata; | |
1269 SDL_DisplayData *didata = | |
1270 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
1271 EGLBoolean status; | |
1272 int32_t gfstatus; | |
1273 EGLint configs; | |
1274 uint32_t surfaces; | |
1275 uint32_t attr_pos; | |
1276 EGLint attr_value; | |
1277 EGLint cit; | |
1278 | |
1279 /* Choose buffeingr scheme */ | |
1280 if (!_this->gl_config.double_buffer) { | |
1281 surfaces = 1; | |
1282 } else { | |
1283 surfaces = 2; | |
1284 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1285 |
3139 | 1286 /* If driver has no support of video memory allocation, then */ |
1287 /* disable double buffering, use single buffer present copy */ | |
1288 if ((didata->caps & SDL_GF_VIDEOMEMORY) != SDL_GF_VIDEOMEMORY) { | |
1289 surfaces = 1; | |
1290 } | |
1291 | |
1292 /* Free main surface */ | |
1293 if (didata->surface[0] != NULL) { | |
1294 gf_surface_free(didata->surface[0]); | |
1295 didata->surface[0] = NULL; | |
1296 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1297 |
3139 | 1298 /* Free back surface */ |
1299 if (didata->surface[1] != NULL) { | |
1300 gf_surface_free(didata->surface[1]); | |
1301 didata->surface[1] = NULL; | |
1302 } | |
3116
b17f1ae7ad66
Added support for single buffering, if double buffering is not available.
Mike Gorchak <lestat@i.com.ua>
parents:
3109
diff
changeset
|
1303 |
3139 | 1304 /* Free second back surface */ |
1305 if (didata->surface[2] != NULL) { | |
1306 gf_surface_free(didata->surface[2]); | |
1307 didata->surface[2] = NULL; | |
1308 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1309 |
3139 | 1310 /* Detach layer before switch to new graphics mode */ |
1311 if (didata->layer_attached == SDL_TRUE) { | |
1312 /* Disable layer if hardware supports this */ | |
1313 gf_layer_disable(didata->layer); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1314 |
3139 | 1315 /* Detach from layer, free it for others */ |
1316 gf_layer_detach(didata->layer); | |
1317 | |
1318 /* Mark it as detached */ | |
1319 didata->layer_attached = SDL_FALSE; | |
1320 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1321 |
3139 | 1322 /* Attach to main display layer */ |
1323 gfstatus = | |
1324 gf_layer_attach(&didata->layer, didata->display, | |
1325 didata->display_info.main_layer_index, 0); | |
1326 if (gfstatus != GF_ERR_OK) { | |
1327 SDL_SetError("GF: Couldn't attach to main layer, it could be busy"); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1328 |
3139 | 1329 /* Failed to attach to main displayable layer */ |
1330 return NULL; | |
1331 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1332 |
3139 | 1333 /* Mark main display layer is attached */ |
1334 didata->layer_attached = SDL_TRUE; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1335 |
3139 | 1336 /* Set layer source and destination viewport */ |
1337 gf_layer_set_src_viewport(didata->layer, 0, 0, didata->current_mode.w - 1, | |
1338 didata->current_mode.h - 1); | |
1339 gf_layer_set_dst_viewport(didata->layer, 0, 0, didata->current_mode.w - 1, | |
1340 didata->current_mode.h - 1); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1341 |
3139 | 1342 /* Create main visible on display surface */ |
1343 gfstatus = | |
1344 gf_surface_create_layer(&didata->surface[0], &didata->layer, 1, 0, | |
1345 didata->current_mode.w, | |
1346 didata->current_mode.h, | |
1347 qnxgf_sdl_to_gf_pixelformat(didata-> | |
1348 current_mode. | |
1349 format), NULL, | |
1350 GF_SURFACE_CREATE_2D_ACCESSIBLE | | |
1351 GF_SURFACE_CREATE_3D_ACCESSIBLE | | |
1352 GF_SURFACE_CREATE_SHAREABLE); | |
1353 if (gfstatus != GF_ERR_OK) { | |
1354 gf_layer_disable(didata->layer); | |
1355 gf_layer_detach(didata->layer); | |
1356 didata->layer_attached = SDL_FALSE; | |
1357 SDL_SetError("GF: Can't create main layer surface at glctx (%d)\n", | |
1358 gfstatus); | |
1359 return NULL; | |
1360 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1361 |
3139 | 1362 /* Set just created surface as main visible on the layer */ |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1363 // gf_layer_set_surfaces(didata->layer, &didata->surface[0], 1); |
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1364 |
3139 | 1365 if (surfaces > 1) { |
1366 /* Create back display surface */ | |
1367 gfstatus = | |
1368 gf_surface_create_layer(&didata->surface[1], &didata->layer, 1, 0, | |
1369 didata->current_mode.w, | |
1370 didata->current_mode.h, | |
1371 qnxgf_sdl_to_gf_pixelformat(didata-> | |
1372 current_mode. | |
1373 format), NULL, | |
1374 GF_SURFACE_CREATE_2D_ACCESSIBLE | | |
1375 GF_SURFACE_CREATE_3D_ACCESSIBLE | | |
1376 GF_SURFACE_CREATE_SHAREABLE); | |
1377 if (gfstatus != GF_ERR_OK) { | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1378 gf_surface_free(didata->surface[0]); |
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1379 gf_layer_disable(didata->layer); |
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1380 gf_layer_detach(didata->layer); |
3139 | 1381 didata->layer_attached = SDL_FALSE; |
1382 SDL_SetError | |
1383 ("GF: Can't create main layer surface at glctx (%d)\n", | |
1384 gfstatus); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1385 return NULL; |
3139 | 1386 } |
1387 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1388 |
3139 | 1389 /* Update layer parameters */ |
1390 gfstatus = gf_layer_update(didata->layer, GF_LAYER_UPDATE_NO_WAIT_IDLE); | |
1391 if (gfstatus != GF_ERR_OK) { | |
1392 /* Free main and back surfaces */ | |
1393 gf_surface_free(didata->surface[1]); | |
1394 didata->surface[1] = NULL; | |
1395 gf_surface_free(didata->surface[0]); | |
1396 didata->surface[0] = NULL; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1397 |
3139 | 1398 /* Detach layer */ |
1399 gf_layer_disable(didata->layer); | |
1400 gf_layer_detach(didata->layer); | |
1401 didata->layer_attached = SDL_FALSE; | |
1402 SDL_SetError("GF: Can't update layer parameters\n"); | |
1403 return NULL; | |
1404 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1405 |
3139 | 1406 /* Enable layer in case if hardware supports layer enable/disable */ |
1407 gf_layer_enable(didata->layer); | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1408 |
3139 | 1409 /* Prepare attributes list to pass them to OpenGL ES */ |
1410 attr_pos = 0; | |
1411 wdata->gles_attributes[attr_pos++] = EGL_NATIVE_VISUAL_ID; | |
1412 wdata->gles_attributes[attr_pos++] = | |
1413 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.format); | |
1414 wdata->gles_attributes[attr_pos++] = EGL_RED_SIZE; | |
1415 wdata->gles_attributes[attr_pos++] = _this->gl_config.red_size; | |
1416 wdata->gles_attributes[attr_pos++] = EGL_GREEN_SIZE; | |
1417 wdata->gles_attributes[attr_pos++] = _this->gl_config.green_size; | |
1418 wdata->gles_attributes[attr_pos++] = EGL_BLUE_SIZE; | |
1419 wdata->gles_attributes[attr_pos++] = _this->gl_config.blue_size; | |
1420 wdata->gles_attributes[attr_pos++] = EGL_ALPHA_SIZE; | |
1421 if (_this->gl_config.alpha_size) { | |
1422 wdata->gles_attributes[attr_pos++] = _this->gl_config.alpha_size; | |
1423 } else { | |
1424 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1425 } | |
1426 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE; | |
1427 wdata->gles_attributes[attr_pos++] = _this->gl_config.depth_size; | |
1428 if (_this->gl_config.buffer_size) { | |
1429 wdata->gles_attributes[attr_pos++] = EGL_BUFFER_SIZE; | |
1430 wdata->gles_attributes[attr_pos++] = _this->gl_config.buffer_size; | |
1431 } | |
1432 if (_this->gl_config.stencil_size) { | |
1433 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE; | |
1434 wdata->gles_attributes[attr_pos++] = _this->gl_config.buffer_size; | |
1435 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1436 |
3139 | 1437 /* Set number of samples in multisampling */ |
1438 if (_this->gl_config.multisamplesamples) { | |
1439 wdata->gles_attributes[attr_pos++] = EGL_SAMPLES; | |
1440 wdata->gles_attributes[attr_pos++] = | |
1441 _this->gl_config.multisamplesamples; | |
1442 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1443 |
3139 | 1444 /* Multisample buffers, OpenGL ES 1.0 spec defines 0 or 1 buffer */ |
1445 if (_this->gl_config.multisamplebuffers) { | |
1446 wdata->gles_attributes[attr_pos++] = EGL_SAMPLE_BUFFERS; | |
1447 wdata->gles_attributes[attr_pos++] = | |
1448 _this->gl_config.multisamplebuffers; | |
1449 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1450 |
3139 | 1451 /* Finish attributes list */ |
1452 wdata->gles_attributes[attr_pos] = EGL_NONE; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1453 |
3139 | 1454 /* Request first suitable framebuffer configuration */ |
1455 status = eglChooseConfig(gfdata->egldisplay, wdata->gles_attributes, | |
1456 wdata->gles_configs, SDL_VIDEO_GF_OPENGLES_CONFS, | |
1457 &configs); | |
1458 if (status != EGL_TRUE) { | |
1459 SDL_SetError("GF: Can't find closest configuration for OpenGL ES"); | |
1460 return NULL; | |
1461 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1462 |
3139 | 1463 /* Check if nothing has been found, try "don't care" settings */ |
1464 if (configs == 0) { | |
1465 int32_t it; | |
1466 int32_t jt; | |
1467 GLint depthbits[4] = { 32, 24, 16, EGL_DONT_CARE }; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1468 |
3139 | 1469 for (it = 0; it < 4; it++) { |
1470 for (jt = 16; jt >= 0; jt--) { | |
1471 /* Don't care about color buffer bits, use what exist */ | |
1472 /* Replace previous data set with EGL_DONT_CARE */ | |
1473 attr_pos = 0; | |
1474 wdata->gles_attributes[attr_pos++] = EGL_NATIVE_VISUAL_ID; | |
1475 wdata->gles_attributes[attr_pos++] = | |
1476 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.format); | |
1477 wdata->gles_attributes[attr_pos++] = EGL_RED_SIZE; | |
1478 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1479 wdata->gles_attributes[attr_pos++] = EGL_GREEN_SIZE; | |
1480 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1481 wdata->gles_attributes[attr_pos++] = EGL_BLUE_SIZE; | |
1482 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1483 wdata->gles_attributes[attr_pos++] = EGL_ALPHA_SIZE; | |
1484 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1485 wdata->gles_attributes[attr_pos++] = EGL_BUFFER_SIZE; | |
1486 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1487 |
3139 | 1488 /* Try to find requested or smallest depth */ |
1489 if (_this->gl_config.depth_size) { | |
1490 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE; | |
1491 wdata->gles_attributes[attr_pos++] = depthbits[it]; | |
1492 } else { | |
1493 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE; | |
1494 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1495 } | |
1496 | |
1497 if (_this->gl_config.stencil_size) { | |
1498 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE; | |
1499 wdata->gles_attributes[attr_pos++] = jt; | |
1500 } else { | |
1501 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE; | |
1502 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1503 |
3139 | 1504 /* exit from stencil loop */ |
1505 jt = 0; | |
1506 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1507 |
3139 | 1508 /* Don't care about antialiasing */ |
1509 wdata->gles_attributes[attr_pos++] = EGL_SAMPLES; | |
1510 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1511 wdata->gles_attributes[attr_pos++] = EGL_SAMPLE_BUFFERS; | |
1512 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1513 wdata->gles_attributes[attr_pos] = EGL_NONE; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1514 |
3139 | 1515 /* Request first suitable framebuffer configuration */ |
1516 status = | |
1517 eglChooseConfig(gfdata->egldisplay, | |
1518 wdata->gles_attributes, | |
1519 wdata->gles_configs, | |
1520 SDL_VIDEO_GF_OPENGLES_CONFS, &configs); | |
1521 if (status != EGL_TRUE) { | |
1522 SDL_SetError | |
1523 ("Photon: Can't find closest configuration for OpenGL ES"); | |
1524 return NULL; | |
1525 } | |
1526 if (configs != 0) { | |
1527 break; | |
1528 } | |
1529 } | |
1530 if (configs != 0) { | |
1531 break; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1532 } |
3139 | 1533 } |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1534 |
3139 | 1535 /* No available configs */ |
1536 if (configs == 0) { | |
1537 SDL_SetError | |
1538 ("Photon: Can't find any configuration for OpenGL ES"); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1539 return NULL; |
3139 | 1540 } |
1541 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1542 |
3139 | 1543 /* Initialize config index */ |
1544 wdata->gles_config = 0; | |
1545 | |
1546 /* Now check each configuration to find out the best */ | |
1547 for (cit = 0; cit < configs; cit++) { | |
1548 uint32_t stencil_found; | |
1549 uint32_t depth_found; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1550 |
3139 | 1551 stencil_found = 0; |
1552 depth_found = 0; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1553 |
3139 | 1554 if (_this->gl_config.stencil_size) { |
1555 status = | |
1556 eglGetConfigAttrib(gfdata->egldisplay, | |
1557 wdata->gles_configs[cit], EGL_STENCIL_SIZE, | |
1558 &attr_value); | |
1559 if (status == EGL_TRUE) { | |
1560 if (attr_value != 0) { | |
1561 stencil_found = 1; | |
1562 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1563 } |
3139 | 1564 } else { |
1565 stencil_found = 1; | |
1566 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1567 |
3139 | 1568 if (_this->gl_config.depth_size) { |
1569 status = | |
1570 eglGetConfigAttrib(gfdata->egldisplay, | |
1571 wdata->gles_configs[cit], EGL_DEPTH_SIZE, | |
1572 &attr_value); | |
1573 if (status == EGL_TRUE) { | |
1574 if (attr_value != 0) { | |
1575 depth_found = 1; | |
1576 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1577 } |
3139 | 1578 } else { |
1579 depth_found = 1; | |
1580 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1581 |
3139 | 1582 /* Exit from loop if found appropriate configuration */ |
1583 if ((depth_found != 0) && (stencil_found != 0)) { | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1584 break; |
3139 | 1585 } |
1586 } | |
1587 | |
1588 /* If best could not be found, use first */ | |
1589 if (cit == configs) { | |
1590 cit = 0; | |
1591 } | |
1592 wdata->gles_config = cit; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1593 |
3139 | 1594 /* Create OpenGL ES context */ |
1595 wdata->gles_context = | |
1596 eglCreateContext(gfdata->egldisplay, | |
1597 wdata->gles_configs[wdata->gles_config], | |
1598 EGL_NO_CONTEXT, NULL); | |
1599 if (wdata->gles_context == EGL_NO_CONTEXT) { | |
1600 SDL_SetError("GF: OpenGL ES context creation has been failed"); | |
1601 return NULL; | |
1602 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1603 |
3139 | 1604 /* Free any 3D target if it was created before */ |
1605 if (wdata->target_created == SDL_TRUE) { | |
1606 gf_3d_target_free(wdata->target); | |
1607 wdata->target_created == SDL_FALSE; | |
1608 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1609 |
3139 | 1610 /* Create surface(s) target for OpenGL ES */ |
1611 gfstatus = | |
1612 gf_3d_target_create(&wdata->target, didata->layer, | |
1613 &didata->surface[0], surfaces, | |
1614 didata->current_mode.w, didata->current_mode.h, | |
1615 qnxgf_sdl_to_gf_pixelformat(didata->current_mode. | |
1616 format)); | |
1617 if (gfstatus != GF_ERR_OK) { | |
1618 /* Destroy just created context */ | |
1619 eglDestroyContext(gfdata->egldisplay, wdata->gles_context); | |
1620 wdata->gles_context = EGL_NO_CONTEXT; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1621 |
3139 | 1622 /* Mark 3D target as unallocated */ |
1623 wdata->target_created = SDL_FALSE; | |
1624 SDL_SetError("GF: OpenGL ES target could not be created"); | |
1625 return NULL; | |
1626 } else { | |
1627 wdata->target_created = SDL_TRUE; | |
1628 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1629 |
3139 | 1630 /* Create target rendering surface on whole screen */ |
1631 wdata->gles_surface = | |
1632 eglCreateWindowSurface(gfdata->egldisplay, | |
1633 wdata->gles_configs[wdata->gles_config], | |
1634 wdata->target, NULL); | |
1635 if (wdata->gles_surface == EGL_NO_SURFACE) { | |
1636 /* Destroy 3d target */ | |
1637 gf_3d_target_free(wdata->target); | |
1638 wdata->target_created = SDL_FALSE; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1639 |
3139 | 1640 /* Destroy OpenGL ES context */ |
1641 eglDestroyContext(gfdata->egldisplay, wdata->gles_context); | |
1642 wdata->gles_context = EGL_NO_CONTEXT; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1643 |
3139 | 1644 SDL_SetError("GF: OpenGL ES surface could not be created"); |
1645 return NULL; | |
1646 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1647 |
3139 | 1648 /* Make just created context current */ |
1649 status = | |
1650 eglMakeCurrent(gfdata->egldisplay, wdata->gles_surface, | |
1651 wdata->gles_surface, wdata->gles_context); | |
1652 if (status != EGL_TRUE) { | |
1653 /* Destroy OpenGL ES surface */ | |
1654 eglDestroySurface(gfdata->egldisplay, wdata->gles_surface); | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1655 |
3139 | 1656 /* Destroy 3d target */ |
1657 gf_3d_target_free(wdata->target); | |
1658 wdata->target_created = SDL_FALSE; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1659 |
3139 | 1660 /* Destroy OpenGL ES context */ |
1661 eglDestroyContext(gfdata->egldisplay, wdata->gles_context); | |
1662 wdata->gles_context = EGL_NO_CONTEXT; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1663 |
3139 | 1664 /* Failed to set current GL ES context */ |
1665 SDL_SetError("GF: Can't set OpenGL ES context on creation"); | |
1666 return NULL; | |
1667 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1668 |
3139 | 1669 /* Setup into SDL internals state of OpenGL ES: */ |
1670 /* it is accelerated or not */ | |
1671 if ((didata->caps & SDL_GF_ACCELERATED_3D) == SDL_GF_ACCELERATED_3D) { | |
1672 _this->gl_config.accelerated = 1; | |
1673 } else { | |
1674 _this->gl_config.accelerated = 0; | |
1675 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1676 |
3139 | 1677 /* Always clear stereo enable, since OpenGL ES do not supports stereo */ |
1678 _this->gl_config.stereo = 0; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1679 |
3139 | 1680 /* Get back samples and samplebuffers configurations. Rest framebuffer */ |
1681 /* parameters could be obtained through the OpenGL ES API */ | |
1682 status = | |
1683 eglGetConfigAttrib(gfdata->egldisplay, | |
1684 wdata->gles_configs[wdata->gles_config], | |
1685 EGL_SAMPLES, &attr_value); | |
1686 if (status == EGL_TRUE) { | |
1687 _this->gl_config.multisamplesamples = attr_value; | |
1688 } | |
1689 status = | |
1690 eglGetConfigAttrib(gfdata->egldisplay, | |
1691 wdata->gles_configs[wdata->gles_config], | |
1692 EGL_SAMPLE_BUFFERS, &attr_value); | |
1693 if (status == EGL_TRUE) { | |
1694 _this->gl_config.multisamplebuffers = attr_value; | |
1695 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1696 |
3139 | 1697 /* Get back stencil and depth buffer sizes */ |
1698 status = | |
1699 eglGetConfigAttrib(gfdata->egldisplay, | |
1700 wdata->gles_configs[wdata->gles_config], | |
1701 EGL_DEPTH_SIZE, &attr_value); | |
1702 if (status == EGL_TRUE) { | |
1703 _this->gl_config.depth_size = attr_value; | |
1704 } | |
1705 status = | |
1706 eglGetConfigAttrib(gfdata->egldisplay, | |
1707 wdata->gles_configs[wdata->gles_config], | |
1708 EGL_STENCIL_SIZE, &attr_value); | |
1709 if (status == EGL_TRUE) { | |
1710 _this->gl_config.stencil_size = attr_value; | |
1711 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1712 |
3139 | 1713 /* Restore cursor if it was visible */ |
1714 if (didata->cursor_visible == SDL_TRUE) { | |
1715 gf_cursor_set(didata->display, 0, &didata->cursor); | |
1716 gf_cursor_enable(didata->display, 0); | |
1717 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1718 |
3139 | 1719 /* GL ES context was successfully created */ |
1720 return wdata->gles_context; | |
1721 #else | |
1722 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1723 return NULL; | |
1724 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1725 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1726 |
3139 | 1727 int |
1728 qnxgf_gl_makecurrent(_THIS, SDL_Window * window, SDL_GLContext context) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1729 { |
3139 | 1730 #if defined(SDL_VIDEO_OPENGL_ES) |
1731 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
1732 SDL_WindowData *wdata; | |
1733 EGLBoolean status; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1734 |
3139 | 1735 if ((window == NULL) && (context == NULL)) { |
1736 status = | |
1737 eglMakeCurrent(gfdata->egldisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, | |
1738 EGL_NO_CONTEXT); | |
1739 if (status != EGL_TRUE) { | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1740 /* Failed to set current GL ES context */ |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1741 SDL_SetError("GF: Can't set OpenGL ES context"); |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1742 return -1; |
3139 | 1743 } |
1744 } else { | |
1745 wdata = (SDL_WindowData *) window->driverdata; | |
1746 status = | |
1747 eglMakeCurrent(gfdata->egldisplay, wdata->gles_surface, | |
1748 wdata->gles_surface, wdata->gles_context); | |
1749 if (status != EGL_TRUE) { | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1750 /* Failed to set current GL ES context */ |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1751 SDL_SetError("GF: Can't set OpenGL ES context"); |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1752 return -1; |
3139 | 1753 } |
1754 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1755 |
3139 | 1756 return 0; |
1757 #else | |
1758 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1759 return -1; | |
1760 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1761 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1762 |
3139 | 1763 int |
1764 qnxgf_gl_setswapinterval(_THIS, int interval) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1765 { |
3139 | 1766 #if defined(SDL_VIDEO_OPENGL_ES) |
1767 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
1768 EGLBoolean status; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1769 |
3139 | 1770 /* Check if OpenGL ES connection has been initialized */ |
1771 if (gfdata->egldisplay != EGL_NO_DISPLAY) { | |
1772 /* Set swap OpenGL ES interval */ | |
1773 status = eglSwapInterval(gfdata->egldisplay, interval); | |
1774 if (status == EGL_TRUE) { | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1775 /* Return success to upper level */ |
3139 | 1776 gfdata->swapinterval = interval; |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1777 return 0; |
3139 | 1778 } |
1779 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1780 |
3139 | 1781 /* Failed to set swap interval */ |
1782 SDL_SetError("GF: Cannot set swap interval"); | |
1783 return -1; | |
1784 #else | |
1785 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1786 return -1; | |
1787 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1788 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1789 |
3139 | 1790 int |
1791 qnxgf_gl_getswapinterval(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1792 { |
3139 | 1793 #if defined(SDL_VIDEO_OPENGL_ES) |
1794 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1795 |
3139 | 1796 /* Return default swap interval value */ |
1797 return gfdata->swapinterval; | |
1798 #else | |
1799 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1800 return -1; | |
1801 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1802 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1803 |
3139 | 1804 void |
1805 qnxgf_gl_swapwindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1806 { |
3139 | 1807 #if defined(SDL_VIDEO_OPENGL_ES) |
1808 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
1809 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1810 |
3139 | 1811 /* Finish all drawings */ |
1812 glFinish(); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1813 |
3139 | 1814 /* Swap buffers */ |
1815 eglSwapBuffers(gfdata->egldisplay, wdata->gles_surface); | |
1816 #else | |
1817 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1818 return; | |
1819 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1820 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1821 |
3139 | 1822 void |
1823 qnxgf_gl_deletecontext(_THIS, SDL_GLContext context) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1824 { |
3139 | 1825 #if defined(SDL_VIDEO_OPENGL_ES) |
1826 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
1827 EGLBoolean status; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1828 |
3139 | 1829 /* Check if OpenGL ES connection has been initialized */ |
1830 if (gfdata->egldisplay != EGL_NO_DISPLAY) { | |
1831 if (context != EGL_NO_CONTEXT) { | |
1832 status = eglDestroyContext(gfdata->egldisplay, context); | |
1833 if (status != EGL_TRUE) { | |
1834 /* Error during OpenGL ES context destroying */ | |
1835 SDL_SetError("GF: OpenGL ES context destroy error"); | |
1836 return; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1837 } |
3139 | 1838 } |
1839 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1840 |
3139 | 1841 return; |
1842 #else | |
1843 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1844 return; | |
1845 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1846 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1847 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1848 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1849 /* SDL Event handling function */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1850 /*****************************************************************************/ |
3139 | 1851 void |
1852 qnxgf_pumpevents(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1853 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1854 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1855 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1856 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1857 /* SDL screen saver related functions */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1858 /*****************************************************************************/ |
3139 | 1859 void |
1860 qnxgf_suspendscreensaver(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1861 { |
3139 | 1862 /* There is no screensaver in pure console, it may exist when running */ |
1863 /* GF under Photon, but I do not know, how to disable screensaver */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1864 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1865 |
3083
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1866 /* vi: set ts=4 sw=4 expandtab: */ |