annotate src/video/qnxgf/SDL_qnxgf.c @ 3139:7f684f249ec9

indent
author Sam Lantinga <slouken@libsdl.org>
date Sat, 23 May 2009 22:41:08 +0000
parents d71d8ceda8b3
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
50 static SDL_DisplayMode generic_mode[] = {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
51 {0, 320, 200, 70, NULL}, /* 320x200 modes are 70Hz and 85Hz */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
52 {0, 320, 200, 85, NULL},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
53 {0, 320, 240, 70, NULL}, /* 320x240 modes are 70Hz and 85Hz */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
54 {0, 320, 240, 85, NULL},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
55 {0, 400, 300, 60, NULL}, /* 400x300 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
56 {0, 480, 360, 60, NULL}, /* 480x360 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
57 {0, 512, 384, 60, NULL}, /* 512x384 modes are 60Hz and 70Hz */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
58 {0, 512, 384, 70, NULL},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
59 {0, 640, 480, 60, NULL}, /* 640x480 modes are 60Hz, 75Hz, 85Hz */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
60 {0, 640, 480, 75, NULL},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
61 {0, 640, 480, 85, NULL},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
62 {0, 800, 600, 60, NULL}, /* 800x600 modes are 60Hz, 75Hz, 85Hz */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
63 {0, 800, 600, 75, NULL},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
64 {0, 800, 600, 85, NULL},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
65 {0, 800, 480, 60, NULL}, /* 800x480 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
66 {0, 848, 480, 60, NULL}, /* 848x480 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
67 {0, 960, 600, 60, NULL}, /* 960x600 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
68 {0, 1024, 640, 60, NULL}, /* 1024x640 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
69 {0, 1024, 768, 60, NULL}, /* 1024x768 modes are 60Hz, 70Hz, 75Hz */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
70 {0, 1024, 768, 70, NULL},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
71 {0, 1024, 768, 75, NULL},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
72 {0, 1088, 612, 60, NULL}, /* 1088x612 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
73 {0, 1152, 864, 60, NULL}, /* 1152x864 modes are 60Hz, 70Hz, 72Hz */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
74 {0, 1152, 864, 70, NULL}, /* 75Hz and 85Hz */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
75 {0, 1152, 864, 72, NULL},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
76 {0, 1152, 864, 75, NULL},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
77 {0, 1152, 864, 85, NULL},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
78 {0, 1280, 720, 60, NULL}, /* 1280x720 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
79 {0, 1280, 768, 60, NULL}, /* 1280x768 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
80 {0, 1280, 800, 60, NULL}, /* 1280x800 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
81 {0, 1280, 960, 60, NULL}, /* 1280x960 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
82 {0, 1280, 1024, 60, NULL}, /* 1280x1024 modes are 60Hz, 75Hz, 85Hz and */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
83 {0, 1280, 1024, 75, NULL}, /* 100 Hz */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
84 {0, 1280, 1024, 85, NULL}, /* */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
85 {0, 1280, 1024, 100, NULL}, /* */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
86 {0, 1360, 768, 60, NULL}, /* 1360x768 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
87 {0, 1400, 1050, 60, NULL}, /* 1400x1050 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
88 {0, 1440, 900, 60, NULL}, /* 1440x900 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
89 {0, 1440, 960, 60, NULL}, /* 1440x960 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
90 {0, 1600, 900, 60, NULL}, /* 1600x900 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
91 {0, 1600, 1024, 60, NULL}, /* 1600x1024 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
92 {0, 1600, 1200, 60, NULL}, /* 1600x1200 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
93 {0, 1680, 1050, 60, NULL}, /* 1680x1050 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
94 {0, 1920, 1080, 60, NULL}, /* 1920x1080 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
95 {0, 1920, 1200, 60, NULL}, /* 1920x1200 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
96 {0, 1920, 1440, 60, NULL}, /* 1920x1440 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
97 {0, 2048, 1536, 60, NULL}, /* 2048x1536 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
98 {0, 2048, 1080, 60, NULL}, /* 2048x1080 mode is 60Hz only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
103 GF_DeviceCaps gf_devicename[] = {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
104 /* ATI Rage 128 graphics driver (devg-ati_rage128) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
105 {"ati_rage128", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
106 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
107 /* Fujitsu Carmine graphics driver (devg-carmine.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
108 {"carmine", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
109 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
110 /* C&T graphics driver (devg-chips.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
111 {"chips", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
112 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
113 /* Fujitsu Coral graphics driver (devg-coral.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
114 {"coral", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
115 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
116 /* Intel integrated graphics driver (devg-extreme2.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
117 {"extreme2", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
118 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
119 /* Unaccelerated FB driver (devg-flat.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
120 {"flat", SDL_GF_UNACCELERATED | SDL_GF_LOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
121 SDL_GF_UNACCELERATED_3D | SDL_GF_NOVIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
122 /* NS Geode graphics driver (devg-geode.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
123 {"geode", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
124 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
125 /* Geode LX graphics driver (devg-geodelx.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
126 {"geodelx", SDL_GF_ACCELERATED | SDL_GF_LOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
127 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
128 /* Intel integrated graphics driver (devg-gma9xx.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
129 {"gma", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
130 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
131 /* Intel integrated graphics driver (devg-i810.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
132 {"i810", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
133 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
134 /* Intel integrated graphics driver (devg-i830.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
135 {"i830", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
136 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
137 /* Geode LX graphics driver (devg-lx800.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
138 {"lx800", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
139 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
140 /* Matrox Gxx graphics driver (devg-matroxg.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
141 {"matroxg", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
142 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
143 /* Intel Poulsbo graphics driver (devg-poulsbo.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
144 {"poulsbo", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
145 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
146 /* ATI Radeon driver (devg-radeon.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
147 {"radeon", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
148 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
149 /* ATI Rage driver (devg-rage.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
150 {"rage", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
151 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
152 /* S3 Savage graphics driver (devg-s3_savage.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
153 {"s3_savage", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
154 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
155 /* SiS630 integrated graphics driver (devg-sis630.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
156 {"sis630", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
157 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
158 /* PowerVR SGX 535 graphics driver (devg-poulsbo.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
159 {"sgx", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
160 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
161 /* SM Voyager GX graphics driver (devg-smi5xx.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
162 {"smi5xx", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
163 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
164 /* Silicon Motion graphics driver (devg-smi7xx.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
165 {"smi7xx", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
166 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
167 /* SVGA unaccelerated gfx driver (devg-svga.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
168 {"svga", SDL_GF_UNACCELERATED | SDL_GF_LOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
169 SDL_GF_UNACCELERATED_3D | SDL_GF_NOVIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
170 /* nVidia TNT graphics driver (devg-tnt.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
171 {"tnt", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
172 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
173 /* VIA integrated graphics driver (devg-tvia.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
174 {"tvia", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
175 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
176 /* VIA UniChrome graphics driver (devg-unichrome.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
177 {"unichrome", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
178 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
179 /* VESA unaccelerated gfx driver (devg-vesa.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
180 {"vesa", SDL_GF_UNACCELERATED | SDL_GF_LOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
181 SDL_GF_UNACCELERATED_3D | SDL_GF_NOVIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
182 /* VmWare graphics driver (devg-volari.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
183 {"vmware", SDL_GF_ACCELERATED | SDL_GF_LOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
184 SDL_GF_UNACCELERATED_3D | SDL_GF_NOVIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
185 /* XGI XP10 graphics driver (devg-volari.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
186 {"volari", SDL_GF_ACCELERATED | SDL_GF_LOWRESOLUTION |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
187 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY},
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
188 /* End of list */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
196 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
199 gf_dev_t gfdev;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
200 gf_dev_info_t gfdev_info;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
203 /* Try to attach to graphics device driver */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
204 status = gf_dev_attach(&gfdev, GF_DEVICE_INDEX(0), &gfdev_info);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
205 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
206 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
207 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
208
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
209 /* Detach from graphics device driver for now */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
215 static void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
220 /* Detach from graphics device driver, if it was initialized */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
221 if (gfdata->gfinitialized != SDL_FALSE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
222 gf_dev_detach(gfdata->gfdev);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
223 gfdata->gfdev = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
224 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
225
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
226 if (device->driverdata != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
227 device->driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
231 static SDL_VideoDevice *
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
234 SDL_VideoDevice *device;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
235 SDL_VideoData *gfdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
238 /* Initialize SDL_VideoDevice structure */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
239 device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice));
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
240 if (device == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
241 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
242 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
243 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
244
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
245 /* Initialize internal GF specific data */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
246 gfdata = (SDL_VideoData *) SDL_calloc(1, sizeof(SDL_VideoData));
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
247 if (gfdata == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
248 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
249 SDL_free(device);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
250 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
251 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
254 /* Try to attach to graphics device driver */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
255 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
256 gf_dev_attach(&gfdata->gfdev, GF_DEVICE_INDEX(devindex),
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
257 &gfdata->gfdev_info);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
258 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
259 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
260 SDL_free(gfdata);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
261 SDL_free(device);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
262 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
263 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
264
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
265 if (gfdata->gfdev_info.description == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
266 gf_dev_detach(gfdata->gfdev);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
267 SDL_SetError("GF: Failed to initialize graphics driver");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
268 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
271 /* Setup amount of available displays and current display */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
272 device->num_displays = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
275 /* Setup device shutdown function */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
276 gfdata->gfinitialized = SDL_TRUE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
279 /* Setup all functions which we can handle */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
280 device->VideoInit = qnxgf_videoinit;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
281 device->VideoQuit = qnxgf_videoquit;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
282 device->GetDisplayModes = qnxgf_getdisplaymodes;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
283 device->SetDisplayMode = qnxgf_setdisplaymode;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
284 device->SetDisplayPalette = qnxgf_setdisplaypalette;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
285 device->GetDisplayPalette = qnxgf_getdisplaypalette;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
286 device->SetDisplayGammaRamp = qnxgf_setdisplaygammaramp;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
287 device->GetDisplayGammaRamp = qnxgf_getdisplaygammaramp;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
288 device->CreateWindow = qnxgf_createwindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
289 device->CreateWindowFrom = qnxgf_createwindowfrom;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
290 device->SetWindowTitle = qnxgf_setwindowtitle;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
291 device->SetWindowIcon = qnxgf_setwindowicon;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
292 device->SetWindowPosition = qnxgf_setwindowposition;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
293 device->SetWindowSize = qnxgf_setwindowsize;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
294 device->ShowWindow = qnxgf_showwindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
295 device->HideWindow = qnxgf_hidewindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
296 device->RaiseWindow = qnxgf_raisewindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
297 device->MaximizeWindow = qnxgf_maximizewindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
298 device->MinimizeWindow = qnxgf_minimizewindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
299 device->RestoreWindow = qnxgf_restorewindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
300 device->SetWindowGrab = qnxgf_setwindowgrab;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
301 device->DestroyWindow = qnxgf_destroywindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
302 device->GetWindowWMInfo = qnxgf_getwindowwminfo;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
303 device->GL_LoadLibrary = qnxgf_gl_loadlibrary;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
304 device->GL_GetProcAddress = qnxgf_gl_getprocaddres;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
305 device->GL_UnloadLibrary = qnxgf_gl_unloadlibrary;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
306 device->GL_CreateContext = qnxgf_gl_createcontext;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
307 device->GL_MakeCurrent = qnxgf_gl_makecurrent;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
308 device->GL_SetSwapInterval = qnxgf_gl_setswapinterval;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
309 device->GL_GetSwapInterval = qnxgf_gl_getswapinterval;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
310 device->GL_SwapWindow = qnxgf_gl_swapwindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
311 device->GL_DeleteContext = qnxgf_gl_deletecontext;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
312 device->PumpEvents = qnxgf_pumpevents;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
318 VideoBootStrap qnxgf_bootstrap = {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
319 "qnxgf",
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
320 "SDL QNX Graphics Framework (GF) video driver",
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
321 qnxgf_available,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
328 int
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
331 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
332 uint32_t it;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
333 uint32_t jt;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
334 char *override;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
337 /* By default GF uses buffer swap on vsync */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
340 /* Add each detected output to SDL */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
341 for (it = 0; it < gfdata->gfdev_info.ndisplays; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
342 SDL_VideoDisplay display;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
343 SDL_DisplayMode current_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
346 didata = (SDL_DisplayData *) SDL_calloc(1, sizeof(SDL_DisplayData));
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
347 if (didata == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
348 /* memory allocation problem */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
349 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
350 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
351 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
352
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
353 /* Set default cursor settings, maximum 128x128 cursor */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
354 didata->cursor_visible = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
355 didata->cursor.type = GF_CURSOR_BITMAP;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
356 didata->cursor.hotspot.x = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
357 didata->cursor.hotspot.y = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
358 didata->cursor.cursor.bitmap.w = SDL_VIDEO_GF_MAX_CURSOR_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
359 didata->cursor.cursor.bitmap.h = SDL_VIDEO_GF_MAX_CURSOR_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
360 didata->cursor.cursor.bitmap.stride =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
361 (didata->cursor.cursor.bitmap.w + 7) / (sizeof(uint8_t) * 8);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
362 didata->cursor.cursor.bitmap.color0 = 0x00000000;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
363 didata->cursor.cursor.bitmap.color1 = 0x00000000;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
364 didata->cursor.cursor.bitmap.image0 =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
365 SDL_calloc(sizeof(uint8_t),
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
366 (didata->cursor.cursor.bitmap.w +
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
367 7) * didata->cursor.cursor.bitmap.h /
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
368 (sizeof(uint8_t) * 8));
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
369 if (didata->cursor.cursor.bitmap.image0 == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
370 SDL_free(didata);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
371 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
372 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
373 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
374 didata->cursor.cursor.bitmap.image1 =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
375 SDL_calloc(sizeof(uint8_t),
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
376 (didata->cursor.cursor.bitmap.w +
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
377 7) * didata->cursor.cursor.bitmap.h /
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
378 (sizeof(uint8_t) * 8));
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
379 if (didata->cursor.cursor.bitmap.image1 == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
380 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
381 SDL_free((void *) didata->cursor.cursor.bitmap.image0);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
382 SDL_free(didata);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
383 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
386 /* Query current display settings */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
387 status = gf_display_query(gfdata->gfdev, it, &didata->display_info);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
388 if (status == GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
389 SDL_zero(current_mode);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
390 current_mode.w = didata->display_info.xres;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
391 current_mode.h = didata->display_info.yres;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
392 current_mode.refresh_rate = didata->display_info.refresh;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
393 current_mode.format =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
394 qnxgf_gf_to_sdl_pixelformat(didata->display_info.format);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
395 current_mode.driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
396 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
397 /* video initialization problem */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
398 SDL_free((void *) didata->cursor.cursor.bitmap.image0);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
399 SDL_free((void *) didata->cursor.cursor.bitmap.image1);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
400 SDL_free(didata);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
401 SDL_SetError("GF: Display query failed");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
402 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
403 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
404
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
405 /* Attach GF to selected display */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
406 status = gf_display_attach(&didata->display, gfdata->gfdev, it, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
407 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
408 /* video initialization problem */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
409 SDL_free((void *) didata->cursor.cursor.bitmap.image0);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
410 SDL_free((void *) didata->cursor.cursor.bitmap.image1);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
411 SDL_free(didata);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
412 SDL_SetError("GF: Couldn't attach to display");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
413 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
414 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
415
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
416 /* Initialize status variables */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
419 /* Attach to main display layer */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
420 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
421 gf_layer_attach(&didata->layer, didata->display,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
422 didata->display_info.main_layer_index, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
423 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
424 /* Failed to attach to main layer */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
425 SDL_free((void *) didata->cursor.cursor.bitmap.image0);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
426 SDL_free((void *) didata->cursor.cursor.bitmap.image1);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
427 SDL_free(didata);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
428 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
429 ("GF: Couldn't attach to main layer, it could be busy");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
430 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
433 /* Mark main display layer is attached */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
436 /* Set layer source and destination viewport */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
437 gf_layer_set_src_viewport(didata->layer, 0, 0, current_mode.w - 1,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
438 current_mode.h - 1);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
439 gf_layer_set_dst_viewport(didata->layer, 0, 0, current_mode.w - 1,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
442 /* Create main visible on display surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
443 status = gf_surface_create_layer(&didata->surface[0], &didata->layer,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
444 1, 0, current_mode.w, current_mode.h,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
445 qnxgf_sdl_to_gf_pixelformat
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
446 (current_mode.format), NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
447 GF_SURFACE_CREATE_2D_ACCESSIBLE |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
448 GF_SURFACE_CREATE_3D_ACCESSIBLE |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
449 GF_SURFACE_CREATE_SHAREABLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
450 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
451 gf_layer_disable(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
452 gf_layer_detach(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
453 didata->layer_attached = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
454 SDL_free((void *) didata->cursor.cursor.bitmap.image0);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
455 SDL_free((void *) didata->cursor.cursor.bitmap.image1);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
456 SDL_free(didata);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
457 SDL_SetError("GF: Can't create main layer surface at init (%d)\n",
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
458 status);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
459 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
460 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
461
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
465 /* Update layer parameters */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
466 status = gf_layer_update(didata->layer, GF_LAYER_UPDATE_NO_WAIT_IDLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
467 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
468 /* Free allocated surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
469 gf_surface_free(didata->surface[0]);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
472 /* Disable and detach from layer */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
473 gf_layer_disable(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
474 gf_layer_detach(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
475 didata->layer_attached = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
476 SDL_free((void *) didata->cursor.cursor.bitmap.image0);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
477 SDL_free((void *) didata->cursor.cursor.bitmap.image1);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
478 SDL_free(didata);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
479 SDL_SetError("GF: Can't update layer parameters\n");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
480 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
481 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
482
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
483 /* Enable layer in case if hardware supports layer enable/disable */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
484 gf_layer_enable(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
485
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
486 /* Copy device name for each display */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
487 SDL_strlcpy(didata->description, gfdata->gfdev_info.description,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
490 /* Search device capabilities and possible workarounds */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
491 jt = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
492 do {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
493 if (gf_devicename[jt].name == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
494 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
495 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
496 if (SDL_strncmp
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
497 (gf_devicename[jt].name, didata->description,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
498 SDL_strlen(gf_devicename[jt].name)) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
499 didata->caps = gf_devicename[jt].caps;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
500 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
501 jt++;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
504 /* Initialize display structure */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
505 SDL_zero(display);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
506 display.desktop_mode = current_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
507 display.current_mode = current_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
508 display.driverdata = didata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
509 didata->current_mode = current_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
512 /* Check for environment variables which could override some SDL settings */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
513 didata->custom_refresh = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
514 override = SDL_getenv("SDL_VIDEO_GF_REFRESH_RATE");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
515 if (override != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
516 if (SDL_sscanf(override, "%u", &didata->custom_refresh) != 1) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
517 didata->custom_refresh = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
518 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
519 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
520
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
521 /* Get all display modes for this display */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
522 _this->current_display = it;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
523 qnxgf_getdisplaymodes(_this);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
524 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
525
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
526 /* Restore default display */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
527 _this->current_display = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
528
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
529 /* Add GF renderer to SDL */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
532 /* Add GF input devices */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
533 status = gf_addinputdevices(_this);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
534 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
535 /* SDL error is set by gf_addinputdevices() function */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
536 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
537 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
538
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
539 /* video has been initialized successfully */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
543 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
546 SDL_DisplayData *didata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
549 /* Stop collecting mouse events */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
550 hiddi_disable_mouse();
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
551 /* Delete GF input devices */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
554 /* SDL will restore old desktop mode on exit */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
555 for (it = 0; it < _this->num_displays; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
558 /* Free cursor image */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
559 if (didata->cursor.cursor.bitmap.image0 != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
560 SDL_free((void *) didata->cursor.cursor.bitmap.image0);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
561 didata->cursor.cursor.bitmap.image0 = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
562 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
563 if (didata->cursor.cursor.bitmap.image1 != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
564 SDL_free((void *) didata->cursor.cursor.bitmap.image1);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
565 didata->cursor.cursor.bitmap.image1 = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
568 /* Free main surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
569 if (didata->surface[0] != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
570 gf_surface_free(didata->surface[0]);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
571 didata->surface[0] = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
574 /* Free back surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
575 if (didata->surface[1] != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
576 gf_surface_free(didata->surface[1]);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
577 didata->surface[1] = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
578 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
579
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
580 /* Free second back surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
581 if (didata->surface[2] != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
582 gf_surface_free(didata->surface[2]);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
583 didata->surface[2] = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
586 /* Detach layer before quit */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
587 if (didata->layer_attached == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
588 /* Disable layer if hardware supports this */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
591 /* Detach from layer, free it for others */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
592 gf_layer_detach(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
595 /* Mark it as detached */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
596 didata->layer_attached = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
599 /* Detach from selected display */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
600 gf_display_detach(didata->display);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
601 didata->display = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
605 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
608 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
609 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
610 SDL_DisplayMode mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
611 gf_modeinfo_t modeinfo;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
612 uint32_t it = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
613 uint32_t jt = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
614 uint32_t kt = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
617 do {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
618 status = gf_display_query_mode(didata->display, it, &modeinfo);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
619 if (status == GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
620 /* Parsing current mode */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
621 if ((modeinfo.flags & GF_MODE_GENERIC) == GF_MODE_GENERIC) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
622 /* This mode is generic, so we can add to SDL our resolutions */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
623 /* Only pixel format is fixed, refresh rate could be any */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
624 jt = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
625 do {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
626 if (generic_mode[jt].w == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
627 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
628 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
629
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
630 /* Check if driver do not supports doublescan video modes */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
631 if ((didata->caps & SDL_GF_LOWRESOLUTION) !=
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
632 SDL_GF_LOWRESOLUTION) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
633 if (generic_mode[jt].w < 640) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
634 jt++;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
635 continue;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
636 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
637 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
638
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
639 mode.w = generic_mode[jt].w;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
640 mode.h = generic_mode[jt].h;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
641 mode.refresh_rate = generic_mode[jt].refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
642 mode.format =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
643 qnxgf_gf_to_sdl_pixelformat(modeinfo.primary_format);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
644 mode.driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
647 jt++;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
648 } while (1);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
649 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
650 /* Add this display mode as is in case if it is non-generic */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
651 /* But go through the each refresh rate, supported by gf */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
652 jt = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
653 do {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
654 if (modeinfo.refresh[jt] != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
655 mode.w = modeinfo.xres;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
656 mode.h = modeinfo.yres;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
657 mode.refresh_rate = modeinfo.refresh[jt];
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
658 mode.format =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
659 qnxgf_gf_to_sdl_pixelformat(modeinfo.
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
660 primary_format);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
661 mode.driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
662 SDL_AddDisplayMode(_this->current_display, &mode);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
663 jt++;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
664 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
665 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
666 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
669 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
670 if (status == GF_ERR_PARM) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
671 /* out of available modes, all are listed */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
675 /* Error occured during mode listing */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
676 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
677 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
678 it++;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
682 int
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
685 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
686 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
687 uint32_t refresh_rate = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
688 int status;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
689
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
690 /* Current display dimensions and bpp are no more valid */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
691 didata->current_mode.format = SDL_PIXELFORMAT_UNKNOWN;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
692 didata->current_mode.w = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
695 /* Check if custom refresh rate requested */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
696 if (didata->custom_refresh != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
697 refresh_rate = didata->custom_refresh;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
698 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
699 refresh_rate = mode->refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
700 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
701
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
702 /* Check if SDL GF driver needs to find appropriate refresh rate itself */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
703 if (refresh_rate == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
704 uint32_t it;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
705 SDL_DisplayMode tempmode;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
706
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
707 /* Clear display mode structure */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
708 SDL_memset(&tempmode, 0x00, sizeof(SDL_DisplayMode));
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
711 /* Check if window width and height matches one of our modes */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
712 for (it = 0; it < SDL_CurrentDisplay.num_display_modes; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
713 if ((SDL_CurrentDisplay.display_modes[it].w == mode->w) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
714 (SDL_CurrentDisplay.display_modes[it].h == mode->h) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
715 (SDL_CurrentDisplay.display_modes[it].format == mode->format))
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
716 {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
717 /* Find the lowest refresh rate available */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
718 if (tempmode.refresh_rate >
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
719 SDL_CurrentDisplay.display_modes[it].refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
720 tempmode = SDL_CurrentDisplay.display_modes[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
721 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
722 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
723 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
724 if (tempmode.refresh_rate != 0x0000FFFF) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
725 refresh_rate = tempmode.refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
726 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
727 /* Let video driver decide what to do with this */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
728 refresh_rate = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
729 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
730 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
731
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
732 /* Check if SDL GF driver needs to check custom refresh rate */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
733 if (didata->custom_refresh != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
734 uint32_t it;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
735 SDL_DisplayMode tempmode;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
736
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
737 /* Clear display mode structure */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
738 SDL_memset(&tempmode, 0x00, sizeof(SDL_DisplayMode));
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
741 /* Check if window width and height matches one of our modes */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
742 for (it = 0; it < SDL_CurrentDisplay.num_display_modes; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
743 if ((SDL_CurrentDisplay.display_modes[it].w == mode->w) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
744 (SDL_CurrentDisplay.display_modes[it].h == mode->h) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
745 (SDL_CurrentDisplay.display_modes[it].format == mode->format))
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
746 {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
747 /* Find the lowest refresh rate available */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
748 if (tempmode.refresh_rate >
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
749 SDL_CurrentDisplay.display_modes[it].refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
750 tempmode = SDL_CurrentDisplay.display_modes[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
751 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
752
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
753 /* Check if requested refresh rate found */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
754 if (refresh_rate ==
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
755 SDL_CurrentDisplay.display_modes[it].refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
756 tempmode = SDL_CurrentDisplay.display_modes[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
757 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
758 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
759 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
760 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
761 if (tempmode.refresh_rate != 0x0000FFFF) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
762 refresh_rate = tempmode.refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
763 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
764 /* Let video driver decide what to do with this */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
765 refresh_rate = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
766 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
767 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
768
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
769 /* Free main surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
770 if (didata->surface[0] != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
771 gf_surface_free(didata->surface[0]);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
772 didata->surface[0] = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
773 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
774
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
775 /* Free back surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
776 if (didata->surface[1] != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
777 gf_surface_free(didata->surface[1]);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
778 didata->surface[1] = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
779 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
780
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
781 /* Free second back surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
782 if (didata->surface[2] != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
783 gf_surface_free(didata->surface[2]);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
784 didata->surface[2] = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
785 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
786
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
787 /* Detach layer before switch to new graphics mode */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
788 if (didata->layer_attached == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
789 /* Disable layer if hardware supports this */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
790 gf_layer_disable(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
791
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
792 /* Detach from layer, free it for others */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
793 gf_layer_detach(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
794
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
795 /* Mark it as detached */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
796 didata->layer_attached = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
797 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
798
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
799 /* Set new display video mode */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
800 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
801 gf_display_set_mode(didata->display, mode->w, mode->h, refresh_rate,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
802 qnxgf_sdl_to_gf_pixelformat(mode->format), 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
803 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
804 /* Display mode/resolution switch has been failed */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
805 SDL_SetError("GF: Mode is not supported by graphics driver");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
806 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
807 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
808 didata->current_mode = *mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
809 didata->current_mode.refresh_rate = refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
810 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
811
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
812 /* Attach to main display layer */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
813 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
814 gf_layer_attach(&didata->layer, didata->display,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
815 didata->display_info.main_layer_index, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
816 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
817 SDL_SetError("GF: Couldn't attach to main layer, it could be busy");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
818
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
819 /* Failed to attach to main displayable layer */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
820 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
821 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
822
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
823 /* Mark main display layer is attached */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
826 /* Set layer source and destination viewport */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
827 gf_layer_set_src_viewport(didata->layer, 0, 0, mode->w - 1, mode->h - 1);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
828 gf_layer_set_dst_viewport(didata->layer, 0, 0, mode->w - 1, mode->h - 1);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
829
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
830 /* Create main visible on display surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
831 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
832 gf_surface_create_layer(&didata->surface[0], &didata->layer, 1, 0,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
833 mode->w, mode->h,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
834 qnxgf_sdl_to_gf_pixelformat(mode->format),
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
835 NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
836 GF_SURFACE_CREATE_2D_ACCESSIBLE |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
837 GF_SURFACE_CREATE_3D_ACCESSIBLE |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
838 GF_SURFACE_CREATE_SHAREABLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
839 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
840 gf_layer_disable(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
841 gf_layer_detach(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
842 didata->layer_attached = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
843 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
844 ("GF: Can't create main layer surface at modeswitch (%d)\n",
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
845 status);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
846 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
847 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
848
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
849 /* Set just created surface as main visible on the layer */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
852 /* Update layer parameters */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
853 status = gf_layer_update(didata->layer, GF_LAYER_UPDATE_NO_WAIT_IDLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
854 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
855 /* Free main surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
856 gf_surface_free(didata->surface[0]);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
859 /* Detach layer */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
860 gf_layer_disable(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
861 gf_layer_detach(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
862 didata->layer_attached = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
863 SDL_SetError("GF: Can't update layer parameters\n");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
864 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
865 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
866
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
867 /* Restore cursor if it was visible */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
868 if (didata->cursor_visible == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
869 gf_cursor_set(didata->display, 0, &didata->cursor);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
870 gf_cursor_enable(didata->display, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
871 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
872
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
873 /* Enable layer in case if hardware supports layer enable/disable */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
874 gf_layer_enable(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
875
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
879 int
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
882 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
883 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
884
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
885 /* QNX GF doesn't have support for global palette changing, but we */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
886 /* could store it for usage in future */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
887
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
888 /* Setting display palette operation has been failed */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
889 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
890 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
891
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
892 int
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
893 qnxgf_getdisplaypalette(_THIS, SDL_Palette * palette)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
894 {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
895 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
896 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
897
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
898 /* We can't provide current palette settings and looks like SDL */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
901 /* Getting display palette operation has been failed */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
902 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
903 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
904
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
905 int
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
906 qnxgf_setdisplaygammaramp(_THIS, Uint16 * ramp)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
907 {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
908 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
909 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
912 /* Setup gamma ramp, for each color channel */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
913 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
914 gf_display_set_color_lut16(didata->display, (uint16_t *) ramp,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
915 (uint16_t *) ramp + 256,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
916 (uint16_t *) ramp + 512);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
917 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
918 /* Setting display gamma ramp operation has been failed */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
919 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
920 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
921
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
922 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
923 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
924
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
925 int
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
926 qnxgf_getdisplaygammaramp(_THIS, Uint16 * ramp)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
927 {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
928 /* TODO: We need to return previous gamma set */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
929 /* Also we need some initial fake gamma to return */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
930
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
931 /* Getting display gamma ramp operation has been failed */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
932 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
933 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
934
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
935 int
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
936 qnxgf_createwindow(_THIS, SDL_Window * window)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
937 {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
938 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
939 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
940 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
941 SDL_WindowData *wdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
942 int32_t status;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
943
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
944 /* QNX GF supports fullscreen window modes only */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
945 if ((window->flags & SDL_WINDOW_FULLSCREEN) != SDL_WINDOW_FULLSCREEN) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
946 uint32_t it;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
949 /* Clear display mode structure */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
950 SDL_memset(&mode, 0x00, sizeof(SDL_DisplayMode));
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
953 /* Check if window width and height matches one of our modes */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
954 for (it = 0; it < SDL_CurrentDisplay.num_display_modes; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
955 if ((SDL_CurrentDisplay.display_modes[it].w == window->w) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
956 (SDL_CurrentDisplay.display_modes[it].h == window->h) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
957 (SDL_CurrentDisplay.display_modes[it].format ==
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
958 SDL_CurrentDisplay.desktop_mode.format)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
959 /* Find the lowest refresh rate available */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
960 if (mode.refresh_rate >
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
961 SDL_CurrentDisplay.display_modes[it].refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
962 mode = SDL_CurrentDisplay.display_modes[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
963 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
964 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
965 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
966
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
967 /* Check if end of display list has been reached */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
968 if (mode.refresh_rate == 0x0000FFFF) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
969 SDL_SetError("GF: Desired video mode is not supported");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
970
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
971 /* Failed to create new window */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
972 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
973 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
974 /* Tell to the caller that mode will be fullscreen */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
977 /* Setup fullscreen mode, bpp used from desktop mode in this case */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
978 status = qnxgf_setdisplaymode(_this, &mode);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
979 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
980 /* Failed to swith fullscreen video mode */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
981 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
982 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
983 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
984 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
985
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
986 /* Setup our own window decorations and states, which are depend on fullscreen mode */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
987 window->flags |= SDL_WINDOW_SHOWN | SDL_WINDOW_BORDERLESS |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
988 SDL_WINDOW_MAXIMIZED | SDL_WINDOW_INPUT_GRABBED |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
989 SDL_WINDOW_INPUT_FOCUS | SDL_WINDOW_MOUSE_FOCUS;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
990 window->flags &= ~(SDL_WINDOW_RESIZABLE | SDL_WINDOW_MINIMIZED);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
991
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
992 /* Ignore any window position settings */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
993 window->x = SDL_WINDOWPOS_UNDEFINED;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
996 /* Allocate window internal data */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
997 wdata = (SDL_WindowData *) SDL_calloc(1, sizeof(SDL_WindowData));
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
998 if (wdata == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
999 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1000 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1001 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1002
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1003 /* Setup driver data for this window */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1006 /* Check if window must support OpenGL ES rendering */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1007 if ((window->flags & SDL_WINDOW_OPENGL) == SDL_WINDOW_OPENGL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1008 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1009 EGLBoolean initstatus;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1010
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1011 /* Mark this window as OpenGL ES compatible */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1012 wdata->uses_gles = SDL_TRUE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1013
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1014 /* Create connection to OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1015 if (gfdata->egldisplay == EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1016 gfdata->egldisplay = eglGetDisplay(gfdata->gfdev);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1017 if (gfdata->egldisplay == EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1018 SDL_SetError("GF: Can't get connection to OpenGL ES");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1023 initstatus = eglInitialize(gfdata->egldisplay, NULL, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1024 if (initstatus != EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1025 SDL_SetError("GF: Can't init OpenGL ES library");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1028 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1029
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1030 /* Increment GL ES reference count usage */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1031 gfdata->egl_refcount++;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1032 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1033 SDL_SetError("GF: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1034 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1035 #endif /* SDL_VIDEO_OPENGL_ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1036 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1037
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1038 /* Enable mouse event collecting */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1041 /* By default last created window got a input focus */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1042 SDL_SetKeyboardFocus(0, window->id);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1045 /* Window has been successfully created */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1049 int
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1052 /* Failed to create window from another window */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1056 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1061 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1066 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1071 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1076 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1081 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1086 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1091 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1096 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1101 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1106 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1111 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1114 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1115 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1116 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1119 if (wdata != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1120 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1121 /* Destroy OpenGL ES surface if it was created */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1124 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1125
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1126 /* Free any 3D target if it was created before */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1129 wdata->target_created == SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1130 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1131
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1132 gfdata->egl_refcount--;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1135 if (gfdata->egldisplay != EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1136 eglTerminate(gfdata->egldisplay);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1139 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1140 #endif /* SDL_VIDEO_OPENGL_ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1147 SDL_bool
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1150 /* QNX GF do not operates at window level, this means we are have no */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1153 if (info->version.major <= SDL_MAJOR_VERSION) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1154 return SDL_TRUE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1155 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1156 SDL_SetError("Application not compiled with SDL %d.%d\n",
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1157 SDL_MAJOR_VERSION, SDL_MINOR_VERSION);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1158 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1159 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
1160
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1161 /* Failed to get window manager information */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1168 int
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1171 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1172 /* Check if OpenGL ES library is specified for GF driver */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1173 if (path == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1174 path = SDL_getenv("SDL_OPENGL_LIBRARY");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1175 if (path == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1176 path = SDL_getenv("SDL_OPENGLES_LIBRARY");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1177 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1178 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1179
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1180 /* Check if default library loading requested */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1181 if (path == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1182 /* Already linked with GF library which provides egl* subset of */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1183 /* functions, use Common profile of OpenGL ES library by default */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1184 path = "/usr/lib/libGLES_CM.so.1";
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1185 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1186
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1187 /* Load dynamic library */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1188 _this->gl_config.dll_handle = SDL_LoadObject(path);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1189 if (!_this->gl_config.dll_handle) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1190 /* Failed to load new GL ES library */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1191 SDL_SetError("GF: Failed to locate OpenGL ES library");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1192 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1193 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1194
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1195 /* Store OpenGL ES library path and name */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1196 SDL_strlcpy(_this->gl_config.driver_path, path,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1199 /* New OpenGL ES library is loaded */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1200 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1201 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1202 SDL_SetError("GF: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1203 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1207 void *
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1210 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1213 /* Try to get function address through the egl interface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1214 function_address = eglGetProcAddress(proc);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1215 if (function_address != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1216 return function_address;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1217 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1218
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1219 /* Then try to get function in the OpenGL ES library */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1220 if (_this->gl_config.dll_handle) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1221 function_address =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1222 SDL_LoadFunction(_this->gl_config.dll_handle, proc);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1223 if (function_address != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1224 return function_address;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1225 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1228 /* Add emulated OpenGL ES 1.1 functions */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1229 if (SDL_strcmp(proc, "glTexParameteri") == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1230 return glTexParameteri;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1231 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1232 if (SDL_strcmp(proc, "glTexParameteriv") == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1233 return glTexParameteriv;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1234 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1235 if (SDL_strcmp(proc, "glColor4ub") == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1236 return glColor4ub;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1237 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1238
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1239 /* Failed to get GL ES function address pointer */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1240 SDL_SetError("GF: Cannot locate OpenGL ES function name");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1241 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1242 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1243 SDL_SetError("GF: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1244 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1248 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1251 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1252 /* Unload OpenGL ES library */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1253 if (_this->gl_config.dll_handle) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1254 SDL_UnloadObject(_this->gl_config.dll_handle);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1255 _this->gl_config.dll_handle = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1256 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1257 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1258 SDL_SetError("GF: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1259 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1263 SDL_GLContext
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1266 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1267 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1268 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1269 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1270 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1271 EGLBoolean status;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1272 int32_t gfstatus;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1273 EGLint configs;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1274 uint32_t surfaces;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1275 uint32_t attr_pos;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1276 EGLint attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1277 EGLint cit;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1278
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1279 /* Choose buffeingr scheme */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1280 if (!_this->gl_config.double_buffer) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1281 surfaces = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1282 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1283 surfaces = 2;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1286 /* If driver has no support of video memory allocation, then */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1287 /* disable double buffering, use single buffer present copy */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1288 if ((didata->caps & SDL_GF_VIDEOMEMORY) != SDL_GF_VIDEOMEMORY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1289 surfaces = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1290 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1291
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1292 /* Free main surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1293 if (didata->surface[0] != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1294 gf_surface_free(didata->surface[0]);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1295 didata->surface[0] = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1298 /* Free back surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1299 if (didata->surface[1] != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1300 gf_surface_free(didata->surface[1]);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1301 didata->surface[1] = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1304 /* Free second back surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1305 if (didata->surface[2] != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1306 gf_surface_free(didata->surface[2]);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1307 didata->surface[2] = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1310 /* Detach layer before switch to new graphics mode */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1311 if (didata->layer_attached == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1312 /* Disable layer if hardware supports this */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1315 /* Detach from layer, free it for others */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1316 gf_layer_detach(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1317
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1318 /* Mark it as detached */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1319 didata->layer_attached = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1322 /* Attach to main display layer */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1323 gfstatus =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1324 gf_layer_attach(&didata->layer, didata->display,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1325 didata->display_info.main_layer_index, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1326 if (gfstatus != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1329 /* Failed to attach to main displayable layer */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1330 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1333 /* Mark main display layer is attached */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1336 /* Set layer source and destination viewport */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1337 gf_layer_set_src_viewport(didata->layer, 0, 0, didata->current_mode.w - 1,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1338 didata->current_mode.h - 1);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1339 gf_layer_set_dst_viewport(didata->layer, 0, 0, didata->current_mode.w - 1,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1342 /* Create main visible on display surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1343 gfstatus =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1344 gf_surface_create_layer(&didata->surface[0], &didata->layer, 1, 0,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1345 didata->current_mode.w,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1346 didata->current_mode.h,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1347 qnxgf_sdl_to_gf_pixelformat(didata->
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1348 current_mode.
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1349 format), NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1350 GF_SURFACE_CREATE_2D_ACCESSIBLE |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1351 GF_SURFACE_CREATE_3D_ACCESSIBLE |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1352 GF_SURFACE_CREATE_SHAREABLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1353 if (gfstatus != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1354 gf_layer_disable(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1355 gf_layer_detach(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1356 didata->layer_attached = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1357 SDL_SetError("GF: Can't create main layer surface at glctx (%d)\n",
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1358 gfstatus);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1359 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1365 if (surfaces > 1) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1366 /* Create back display surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1367 gfstatus =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1368 gf_surface_create_layer(&didata->surface[1], &didata->layer, 1, 0,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1369 didata->current_mode.w,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1370 didata->current_mode.h,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1371 qnxgf_sdl_to_gf_pixelformat(didata->
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1372 current_mode.
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1373 format), NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1374 GF_SURFACE_CREATE_2D_ACCESSIBLE |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1375 GF_SURFACE_CREATE_3D_ACCESSIBLE |
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1376 GF_SURFACE_CREATE_SHAREABLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1381 didata->layer_attached = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1382 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1383 ("GF: Can't create main layer surface at glctx (%d)\n",
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1386 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1389 /* Update layer parameters */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1390 gfstatus = gf_layer_update(didata->layer, GF_LAYER_UPDATE_NO_WAIT_IDLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1391 if (gfstatus != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1392 /* Free main and back surfaces */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1393 gf_surface_free(didata->surface[1]);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1394 didata->surface[1] = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1395 gf_surface_free(didata->surface[0]);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1398 /* Detach layer */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1399 gf_layer_disable(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1400 gf_layer_detach(didata->layer);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1401 didata->layer_attached = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1402 SDL_SetError("GF: Can't update layer parameters\n");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1403 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1406 /* Enable layer in case if hardware supports layer enable/disable */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1409 /* Prepare attributes list to pass them to OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1410 attr_pos = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1411 wdata->gles_attributes[attr_pos++] = EGL_NATIVE_VISUAL_ID;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1412 wdata->gles_attributes[attr_pos++] =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1413 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.format);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1414 wdata->gles_attributes[attr_pos++] = EGL_RED_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1415 wdata->gles_attributes[attr_pos++] = _this->gl_config.red_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1416 wdata->gles_attributes[attr_pos++] = EGL_GREEN_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1417 wdata->gles_attributes[attr_pos++] = _this->gl_config.green_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1418 wdata->gles_attributes[attr_pos++] = EGL_BLUE_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1419 wdata->gles_attributes[attr_pos++] = _this->gl_config.blue_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1420 wdata->gles_attributes[attr_pos++] = EGL_ALPHA_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1421 if (_this->gl_config.alpha_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1422 wdata->gles_attributes[attr_pos++] = _this->gl_config.alpha_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1423 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1424 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1425 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1426 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1427 wdata->gles_attributes[attr_pos++] = _this->gl_config.depth_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1428 if (_this->gl_config.buffer_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1429 wdata->gles_attributes[attr_pos++] = EGL_BUFFER_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1430 wdata->gles_attributes[attr_pos++] = _this->gl_config.buffer_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1431 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1432 if (_this->gl_config.stencil_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1433 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1434 wdata->gles_attributes[attr_pos++] = _this->gl_config.buffer_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1435 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1436
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1437 /* Set number of samples in multisampling */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1438 if (_this->gl_config.multisamplesamples) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1439 wdata->gles_attributes[attr_pos++] = EGL_SAMPLES;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1440 wdata->gles_attributes[attr_pos++] =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1441 _this->gl_config.multisamplesamples;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1442 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1443
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1444 /* Multisample buffers, OpenGL ES 1.0 spec defines 0 or 1 buffer */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1445 if (_this->gl_config.multisamplebuffers) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1446 wdata->gles_attributes[attr_pos++] = EGL_SAMPLE_BUFFERS;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1447 wdata->gles_attributes[attr_pos++] =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1448 _this->gl_config.multisamplebuffers;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1449 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1450
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1451 /* Finish attributes list */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1454 /* Request first suitable framebuffer configuration */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1455 status = eglChooseConfig(gfdata->egldisplay, wdata->gles_attributes,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1456 wdata->gles_configs, SDL_VIDEO_GF_OPENGLES_CONFS,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1457 &configs);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1458 if (status != EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1459 SDL_SetError("GF: Can't find closest configuration for OpenGL ES");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1460 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1461 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1462
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1463 /* Check if nothing has been found, try "don't care" settings */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1464 if (configs == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1465 int32_t it;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1466 int32_t jt;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1469 for (it = 0; it < 4; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1470 for (jt = 16; jt >= 0; jt--) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1471 /* Don't care about color buffer bits, use what exist */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1472 /* Replace previous data set with EGL_DONT_CARE */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1473 attr_pos = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1474 wdata->gles_attributes[attr_pos++] = EGL_NATIVE_VISUAL_ID;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1475 wdata->gles_attributes[attr_pos++] =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1476 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.format);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1477 wdata->gles_attributes[attr_pos++] = EGL_RED_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1478 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1479 wdata->gles_attributes[attr_pos++] = EGL_GREEN_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1480 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1481 wdata->gles_attributes[attr_pos++] = EGL_BLUE_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1482 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1483 wdata->gles_attributes[attr_pos++] = EGL_ALPHA_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1484 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1485 wdata->gles_attributes[attr_pos++] = EGL_BUFFER_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1488 /* Try to find requested or smallest depth */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1489 if (_this->gl_config.depth_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1490 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1491 wdata->gles_attributes[attr_pos++] = depthbits[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1492 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1493 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1494 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1495 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1496
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1497 if (_this->gl_config.stencil_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1498 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1499 wdata->gles_attributes[attr_pos++] = jt;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1500 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1501 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1504 /* exit from stencil loop */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1505 jt = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1508 /* Don't care about antialiasing */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1509 wdata->gles_attributes[attr_pos++] = EGL_SAMPLES;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1510 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1511 wdata->gles_attributes[attr_pos++] = EGL_SAMPLE_BUFFERS;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1512 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1515 /* Request first suitable framebuffer configuration */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1516 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1517 eglChooseConfig(gfdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1518 wdata->gles_attributes,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1519 wdata->gles_configs,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1520 SDL_VIDEO_GF_OPENGLES_CONFS, &configs);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1521 if (status != EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1522 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1523 ("Photon: Can't find closest configuration for OpenGL ES");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1524 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1525 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1526 if (configs != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1527 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1528 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1529 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1530 if (configs != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1535 /* No available configs */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1536 if (configs == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1537 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1540 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1543 /* Initialize config index */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1544 wdata->gles_config = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1545
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1546 /* Now check each configuration to find out the best */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1547 for (cit = 0; cit < configs; cit++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1548 uint32_t stencil_found;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1551 stencil_found = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1554 if (_this->gl_config.stencil_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1555 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1556 eglGetConfigAttrib(gfdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1557 wdata->gles_configs[cit], EGL_STENCIL_SIZE,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1558 &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1559 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1560 if (attr_value != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1561 stencil_found = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1564 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1565 stencil_found = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1568 if (_this->gl_config.depth_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1569 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1570 eglGetConfigAttrib(gfdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1571 wdata->gles_configs[cit], EGL_DEPTH_SIZE,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1572 &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1573 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1574 if (attr_value != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1575 depth_found = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1578 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1579 depth_found = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1582 /* Exit from loop if found appropriate configuration */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1585 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1586 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1587
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1588 /* If best could not be found, use first */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1589 if (cit == configs) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1590 cit = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1591 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1594 /* Create OpenGL ES context */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1595 wdata->gles_context =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1596 eglCreateContext(gfdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1597 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1598 EGL_NO_CONTEXT, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1599 if (wdata->gles_context == EGL_NO_CONTEXT) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1600 SDL_SetError("GF: OpenGL ES context creation has been failed");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1601 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1604 /* Free any 3D target if it was created before */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1605 if (wdata->target_created == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1606 gf_3d_target_free(wdata->target);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1607 wdata->target_created == SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1608 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1609
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1610 /* Create surface(s) target for OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1611 gfstatus =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1612 gf_3d_target_create(&wdata->target, didata->layer,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1613 &didata->surface[0], surfaces,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1614 didata->current_mode.w, didata->current_mode.h,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1615 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1616 format));
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1617 if (gfstatus != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1618 /* Destroy just created context */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1619 eglDestroyContext(gfdata->egldisplay, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1622 /* Mark 3D target as unallocated */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1623 wdata->target_created = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1624 SDL_SetError("GF: OpenGL ES target could not be created");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1625 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1626 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1627 wdata->target_created = SDL_TRUE;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1628 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1629
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1630 /* Create target rendering surface on whole screen */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1631 wdata->gles_surface =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1632 eglCreateWindowSurface(gfdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1633 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1634 wdata->target, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1635 if (wdata->gles_surface == EGL_NO_SURFACE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1636 /* Destroy 3d target */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1637 gf_3d_target_free(wdata->target);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1640 /* Destroy OpenGL ES context */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1641 eglDestroyContext(gfdata->egldisplay, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1644 SDL_SetError("GF: OpenGL ES surface could not be created");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1645 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1646 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1647
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1648 /* Make just created context current */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1649 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1650 eglMakeCurrent(gfdata->egldisplay, wdata->gles_surface,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1651 wdata->gles_surface, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1652 if (status != EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1653 /* Destroy OpenGL ES surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1656 /* Destroy 3d target */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1657 gf_3d_target_free(wdata->target);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1660 /* Destroy OpenGL ES context */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1661 eglDestroyContext(gfdata->egldisplay, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1664 /* Failed to set current GL ES context */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1665 SDL_SetError("GF: Can't set OpenGL ES context on creation");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1666 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1667 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1668
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1669 /* Setup into SDL internals state of OpenGL ES: */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1670 /* it is accelerated or not */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1671 if ((didata->caps & SDL_GF_ACCELERATED_3D) == SDL_GF_ACCELERATED_3D) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1672 _this->gl_config.accelerated = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1673 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1674 _this->gl_config.accelerated = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1675 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1676
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1677 /* Always clear stereo enable, since OpenGL ES do not supports stereo */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1680 /* Get back samples and samplebuffers configurations. Rest framebuffer */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1681 /* parameters could be obtained through the OpenGL ES API */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1682 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1683 eglGetConfigAttrib(gfdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1684 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1685 EGL_SAMPLES, &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1686 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1687 _this->gl_config.multisamplesamples = attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1688 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1689 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1690 eglGetConfigAttrib(gfdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1691 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1692 EGL_SAMPLE_BUFFERS, &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1693 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1694 _this->gl_config.multisamplebuffers = attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1695 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1696
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1697 /* Get back stencil and depth buffer sizes */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1698 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1699 eglGetConfigAttrib(gfdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1700 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1701 EGL_DEPTH_SIZE, &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1702 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1703 _this->gl_config.depth_size = attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1704 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1705 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1706 eglGetConfigAttrib(gfdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1707 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1708 EGL_STENCIL_SIZE, &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1709 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1710 _this->gl_config.stencil_size = attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1713 /* Restore cursor if it was visible */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1714 if (didata->cursor_visible == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1715 gf_cursor_set(didata->display, 0, &didata->cursor);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1716 gf_cursor_enable(didata->display, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1719 /* GL ES context was successfully created */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1720 return wdata->gles_context;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1721 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1722 SDL_SetError("GF: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1723 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1727 int
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1730 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1731 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1732 SDL_WindowData *wdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1735 if ((window == NULL) && (context == NULL)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1736 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1737 eglMakeCurrent(gfdata->egldisplay, EGL_NO_SURFACE, EGL_NO_SURFACE,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1738 EGL_NO_CONTEXT);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1743 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1744 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1745 wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1746 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1747 eglMakeCurrent(gfdata->egldisplay, wdata->gles_surface,
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1748 wdata->gles_surface, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1753 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1754 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1755
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1756 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1757 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1758 SDL_SetError("GF: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1759 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1763 int
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1766 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1767 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1770 /* Check if OpenGL ES connection has been initialized */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1771 if (gfdata->egldisplay != EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1772 /* Set swap OpenGL ES interval */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1773 status = eglSwapInterval(gfdata->egldisplay, interval);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1778 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1779 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1780
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1781 /* Failed to set swap interval */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1782 SDL_SetError("GF: Cannot set swap interval");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1783 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1784 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1785 SDL_SetError("GF: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1786 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1790 int
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1793 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1796 /* Return default swap interval value */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1797 return gfdata->swapinterval;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1798 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1799 SDL_SetError("GF: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1800 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1804 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1807 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1808 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1811 /* Finish all drawings */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1814 /* Swap buffers */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1815 eglSwapBuffers(gfdata->egldisplay, wdata->gles_surface);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1816 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1817 SDL_SetError("GF: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1818 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1822 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1825 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1826 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1829 /* Check if OpenGL ES connection has been initialized */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1830 if (gfdata->egldisplay != EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1831 if (context != EGL_NO_CONTEXT) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1832 status = eglDestroyContext(gfdata->egldisplay, context);
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1833 if (status != EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1834 /* Error during OpenGL ES context destroying */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1835 SDL_SetError("GF: OpenGL ES context destroy error");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1836 return;
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1837 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1838 }
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1839 }
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
1840
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1841 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1842 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1843 SDL_SetError("GF: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1844 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1851 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1859 void
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
1862 /* There is no screensaver in pure console, it may exist when running */
Sam Lantinga <slouken@libsdl.org>
parents: 3125
diff changeset
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: */