annotate src/video/qnxgf/SDL_qnxgf.c @ 3168:6338b7f2d024

Hi, I have prepared a set of patches to readd WindowsCE support to SDL 1.3. I've created a new GAPI/Rawframebuffer and a DirectDraw renderer. Both renderers are work in progress and there are several unimplemented cases. (Notably RenderLine/RenderPoint/RenderFill/QueryTexturePixels/UpdateTexture and texture blending ) Nevertheless I am successfully using these renderers together with the SDL software renderer. (On most devices the SDL software renderer will be much faster as there are only badly optimized vendor drivers available) I send these patches now in this unpolished state because there seems to be some interest in win ce and someone has to start supporting SDL 1.3 Now on to the patches: wince_events_window_fixes.patch fixes some wince incompatibilities and adds fullscreen support via SHFullScreen. NOTE: This patch shouldn't have any side effects on Windows, but I have NOT tested it on Windows, so please double-check. This patch doesn't dependent on the following ones. wince_renderers_system.patch This patch does all necessary modifications to the SDL system. - it adds the renderers to the configure system - it adds the renderers to win32video SDL_ceddrawrender.c SDL_ceddrawrender.h SDL_gapirender_c.h SDL_gapirender.c SDL_gapirender.h these files add the new render drivers and should be placed in src/video/win32 Some notes to people who want to test this: - I have only compiled sdl with ming32ce, so the VisualC files are not up to date - As mingw32ce has no ddraw.h this file must be taken from the MS SDK and modified to work with gcc - I had to modify line 2611 in configure.in to EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lcoredll -lcommctrl -lmmtimer -Wl,--image-base -Wl,0x10000" otherwise GetCPinfo wouldn't link. If someone knows whats causing this I'd be happy to hear about it. It would be great if these patches could make their way into SVN as this would make collaboration much much easier. I'm out of office for the next week and therefore will be unavailable via email. Regards Stefan
author Sam Lantinga <slouken@libsdl.org>
date Sun, 07 Jun 2009 02:44:46 +0000
parents 7f684f249ec9
children 44d5474c2c8a
rev   line source
3083
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1 /*
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
3 Copyright (C) 1997-2009 Sam Lantinga
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
4
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
5 This library is free software; you can redistribute it and/or
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
6 modify it under the terms of the GNU Lesser General Public
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
7 License as published by the Free Software Foundation; either
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
8 version 2.1 of the License, or (at your option) any later version.
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
9
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
13 Lesser General Public License for more details.
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
14
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
15 You should have received a copy of the GNU Lesser General Public
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
16 License along with this library; if not, write to the Free Software
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
18
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
19 Sam Lantinga
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
20 slouken@libsdl.org
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
21
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
22 QNX Graphics Framework SDL driver
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
23 Copyright (C) 2009 Mike Gorchak
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
24 (mike@malva.ua, lestat@i.com.ua)
3083
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
25 */
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
26
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
27 #include "SDL_config.h"
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
28
0bc41e0361d3 Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
29 #include "../SDL_sysvideo.h"
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
30 #include "SDL_version.h"
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
31 #include "SDL_syswm.h"
3099
82e60908fab1 Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3092
diff changeset
32 #include "SDL_loadso.h"
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
33
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
34 /* Include QNX Graphics Framework declarations */
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
35 #include <gf/gf.h>
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
36
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
37 #include "SDL_qnxgf.h"
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
38 #include "SDL_gf_render.h"
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
39 #include "SDL_gf_pixelfmt.h"
3109
7b3a09fb9c8b Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents: 3099
diff changeset
40 #include "SDL_gf_opengles.h"
7b3a09fb9c8b Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents: 3099
diff changeset
41 #include "SDL_gf_input.h"
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
42
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
43 /******************************************************************************/
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
44 /* SDL Generic video modes, which could provide GF */
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
45 /* This is real pain in the ass. GF is just wrapper around a selected driver */
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
46 /* some drivers could support double scan modes, like 320x200, 512x384, etc */
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
47 /* but some drivers are not. Later we can distinguish one driver from another */
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
48 /* Feel free to add any new custom graphics mode */
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3083
diff changeset
49 /******************************************************************************/
3139
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: */