annotate src/video/photon/SDL_photon.c @ 3474:1edb86163d62

Of COURSE that trick wouldn't work on all renderers. Fall back to something for now, hopefully figure out a better way to do this later. If we have to, we can use vertical line and horizontal line textures for vertical and horizontal lines, and then create custom textures for diagonal lines and software render those. It's terrible, but at least it would be pixel perfect.
author Sam Lantinga <slouken@libsdl.org>
date Sat, 21 Nov 2009 07:22:59 +0000
parents 0cbfec87e4f1
children 4b594623401b
rev   line source
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1 /*
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
3 Copyright (C) 1997-2009 Sam Lantinga
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
4
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
5 This library is free software; you can redistribute it and/or
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
6 modify it under the terms of the GNU Lesser General Public
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
7 License as published by the Free Software Foundation; either
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
8 version 2.1 of the License, or (at your option) any later version.
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
9
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
13 Lesser General Public License for more details.
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
14
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
15 You should have received a copy of the GNU Lesser General Public
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
16 License along with this library; if not, write to the Free Software
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
18
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
19 Sam Lantinga
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +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 Photon GUI 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)
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
25 */
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
26
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
27 /* SDL internals */
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
28 #include "SDL_config.h"
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
29 #include "../SDL_sysvideo.h"
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
30 #include "SDL_version.h"
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
31 #include "SDL_syswm.h"
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
32 #include "SDL_loadso.h"
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
33 #include "SDL_events.h"
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
34 #include "../../events/SDL_mouse_c.h"
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
35 #include "../../events/SDL_keyboard_c.h"
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
36
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
37 /* Photon declarations */
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
38 #include "SDL_photon.h"
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
39
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
40 /* Pixel format conversion routines */
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
41 #include "SDL_photon_pixelfmt.h"
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
42
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
43 /* Use GF's pixel format functions for OpenGL ES context creation */
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
44 #if defined(SDL_VIDEO_OPENGL_ES)
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
45 #include "../qnxgf/SDL_gf_pixelfmt.h"
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
46
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
47 /* If GF driver is not compiled in, include some of usefull functions */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
48 #if !defined(SDL_VIDEO_DRIVER_QNXGF)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
49 #include "../qnxgf/SDL_gf_pixelfmt.c"
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
50 #endif /* SDL_VIDEO_DRIVER_QNXGF */
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
51 #endif /* SDL_VIDEO_OPENGL_ES */
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
52
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
53 /* Use GF's OpenGL ES 1.1 functions emulation */
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
54 #if defined(SDL_VIDEO_OPENGL_ES)
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
55 #include "../qnxgf/SDL_gf_opengles.h"
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
56
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
57 /* If GF driver is not compiled in, include some of usefull functions */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
58 #if !defined(SDL_VIDEO_DRIVER_QNXGF)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
59 #include "../qnxgf/SDL_gf_opengles.c"
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
60 #endif /* SDL_VIDEO_DRIVER_QNXGF */
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
61 #endif /* SDL_VIDEO_OPENGL_ES */
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
62
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
63 /* Low level device graphics driver names, which they are reporting */
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
64 static const Photon_DeviceCaps photon_devicename[] = {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
65 /* ATI Rage 128 graphics driver (devg-ati_rage128) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
66 {"ati_rage128", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
67 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
68 /* Fujitsu Carmine graphics driver (devg-carmine.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
69 {"carmine", SDL_PHOTON_ACCELERATED | SDL_PHOTON_ACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
70 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
71 /* C&T graphics driver (devg-chips.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
72 {"chips", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
73 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
74 /* Fujitsu Coral graphics driver (devg-coral.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
75 {"coral", SDL_PHOTON_ACCELERATED | SDL_PHOTON_ACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
76 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
77 /* Intel integrated graphics driver (devg-extreme2.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
78 {"extreme2", SDL_PHOTON_ACCELERATED | SDL_PHOTON_ACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
79 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
80 /* Unaccelerated FB driver (devg-flat.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
81 {"flat", SDL_PHOTON_UNACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
82 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
83 /* NS Geode graphics driver (devg-geode.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
84 {"geode", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
85 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
86 /* Geode LX graphics driver (devg-geodelx.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
87 {"geodelx", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
88 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
89 /* Intel integrated graphics driver (devg-gma9xx.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
90 {"gma", SDL_PHOTON_ACCELERATED | SDL_PHOTON_ACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
91 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
92 /* Intel integrated graphics driver (devg-i810.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
93 {"i810", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
94 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
95 /* Intel integrated graphics driver (devg-i830.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
96 {"i830", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
97 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
98 /* Geode LX graphics driver (devg-lx800.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
99 {"lx800", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
100 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
101 /* Matrox Gxx graphics driver (devg-matroxg.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
102 {"matroxg", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
103 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
104 /* Intel Poulsbo graphics driver (devg-poulsbo.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
105 {"poulsbo", SDL_PHOTON_ACCELERATED | SDL_PHOTON_ACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
106 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
107 /* ATI Radeon driver (devg-radeon.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
108 {"radeon", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
109 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
110 /* ATI Rage driver (devg-rage.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
111 {"rage", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
112 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
113 /* S3 Savage graphics driver (devg-s3_savage.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
114 {"s3_savage", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
115 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
116 /* SiS630 integrated graphics driver (devg-sis630.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
117 {"sis630", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
118 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
119 /* PowerVR SGX 535 graphics driver (devg-poulsbo.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
120 {"sgx", SDL_PHOTON_ACCELERATED | SDL_PHOTON_ACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
121 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
122 /* SM Voyager GX graphics driver (devg-smi5xx.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
123 {"smi5xx", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
124 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
125 /* Silicon Motion graphics driver (devg-smi7xx.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
126 {"smi7xx", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
127 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
128 /* SVGA unaccelerated gfx driver (devg-svga.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
129 {"svga", SDL_PHOTON_UNACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
130 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
131 /* nVidia TNT graphics driver (devg-tnt.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
132 {"tnt", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
133 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
134 /* VIA integrated graphics driver (devg-tvia.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
135 {"tvia", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
136 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
137 /* VIA UniChrome graphics driver (devg-unichrome.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
138 {"unichrome", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
139 ,
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
140 /* VESA unaccelerated gfx driver (devg-vesabios.so) */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
141 {"vesa", SDL_PHOTON_UNACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
142 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
143 /* VmWare graphics driver (devg-volari.so) */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
144 {"vmware", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
145 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
146 /* XGI XP10 graphics driver (devg-volari.so), OpenGL 1.5 */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
147 {"volari", SDL_PHOTON_ACCELERATED | SDL_PHOTON_UNACCELERATED_3D}
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
148 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
149 /* End of list */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
150 {NULL, 0x00000000}
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
151 };
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
152
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
153 static SDL_bool photon_initialized = SDL_FALSE;
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
154
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
155 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
156 photon_available(void)
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
157 {
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
158 int32_t status;
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
159
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
160 /* Check if Photon was initialized before */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
161 if (photon_initialized == SDL_FALSE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
162 /* Initialize Photon widget library and open channel to Photon */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
163 status = PtInit(NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
164 if (status == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
165 photon_initialized = SDL_TRUE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
166 return 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
167 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
168 photon_initialized = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
169 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
170 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
171 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
172
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
173 return 1;
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
174 }
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
175
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
176 static void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
177 photon_destroy(SDL_VideoDevice * device)
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
178 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
179 SDL_VideoData *phdata = (SDL_VideoData *) device->driverdata;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
180
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
181 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
182 if (phdata->gfinitialized != SDL_FALSE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
183 gf_dev_detach(phdata->gfdev);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
184 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
185 #endif /* SDL_VIDEO_OPENGL_ES */
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
186
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
187 if (device->driverdata != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
188 device->driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
189 }
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
190 }
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
191
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
192 static SDL_VideoDevice *
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
193 photon_create(int devindex)
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
194 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
195 SDL_VideoDevice *device;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
196 SDL_VideoData *phdata;
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
197 int32_t status;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
198
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
199 /* Check if photon could be initialized */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
200 status = photon_available();
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
201 if (status == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
202 /* Photon could not be used */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
203 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
204 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
205
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
206 /* Photon agregates all video devices to one with multiple heads */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
207 if (devindex != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
208 /* devindex could be zero only in Photon SDL driver */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
209 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
210 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
211
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
212 /* Initialize SDL_VideoDevice structure */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
213 device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
214 if (device == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
215 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
216 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
217 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
218
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
219 /* Initialize internal photon specific data */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
220 phdata = (SDL_VideoData *) SDL_calloc(1, sizeof(SDL_VideoData));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
221 if (phdata == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
222 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
223 SDL_free(device);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
224 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
225 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
226 device->driverdata = phdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
227
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
228 /* Get all photon display devices */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
229 phdata->avail_rids =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
230 PdGetDevices(&phdata->rid[0], SDL_VIDEO_PHOTON_MAX_RIDS);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
231 if (phdata->avail_rids > SDL_VIDEO_PHOTON_MAX_RIDS) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
232 phdata->avail_rids = SDL_VIDEO_PHOTON_MAX_RIDS;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
233 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
234 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
235 /* TODO: add real device detection versus multiple heads */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
236 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
237 gf_dev_attach(&phdata->gfdev, GF_DEVICE_INDEX(0),
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
238 &phdata->gfdev_info);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
239 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
240 /* Do not fail right now, if GF can't be attached */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
241 phdata->gfinitialized = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
242 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
243 phdata->gfinitialized = SDL_TRUE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
244 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
245 #endif /* SDL_VIDEO_OPENGL_ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
246
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
247 /* Set default target device */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
248 status = PdSetTargetDevice(NULL, phdata->rid[0]);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
249 if (status == -1) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
250 SDL_SetError("Photon: Can't set default target device");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
251 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
252 gf_dev_detach(phdata->gfdev);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
253 #endif /* SDL_VIDEO_OPENGL_ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
254 SDL_free(phdata);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
255 SDL_free(device);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
256 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
257 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
258 phdata->current_device_id = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
259
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
260 /* Setup amount of available displays and current display */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
261 device->num_displays = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
262 device->current_display = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
263
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
264 /* Set device free function */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
265 device->free = photon_destroy;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
266
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
267 /* Setup all functions which we can handle */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
268 device->VideoInit = photon_videoinit;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
269 device->VideoQuit = photon_videoquit;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
270 device->GetDisplayModes = photon_getdisplaymodes;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
271 device->SetDisplayMode = photon_setdisplaymode;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
272 device->SetDisplayPalette = photon_setdisplaypalette;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
273 device->GetDisplayPalette = photon_getdisplaypalette;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
274 device->SetDisplayGammaRamp = photon_setdisplaygammaramp;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
275 device->GetDisplayGammaRamp = photon_getdisplaygammaramp;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
276 device->CreateWindow = photon_createwindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
277 device->CreateWindowFrom = photon_createwindowfrom;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
278 device->SetWindowTitle = photon_setwindowtitle;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
279 device->SetWindowIcon = photon_setwindowicon;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
280 device->SetWindowPosition = photon_setwindowposition;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
281 device->SetWindowSize = photon_setwindowsize;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
282 device->ShowWindow = photon_showwindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
283 device->HideWindow = photon_hidewindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
284 device->RaiseWindow = photon_raisewindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
285 device->MaximizeWindow = photon_maximizewindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
286 device->MinimizeWindow = photon_minimizewindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
287 device->RestoreWindow = photon_restorewindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
288 device->SetWindowGrab = photon_setwindowgrab;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
289 device->DestroyWindow = photon_destroywindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
290 device->GetWindowWMInfo = photon_getwindowwminfo;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
291 device->GL_LoadLibrary = photon_gl_loadlibrary;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
292 device->GL_GetProcAddress = photon_gl_getprocaddres;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
293 device->GL_UnloadLibrary = photon_gl_unloadlibrary;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
294 device->GL_CreateContext = photon_gl_createcontext;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
295 device->GL_MakeCurrent = photon_gl_makecurrent;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
296 device->GL_SetSwapInterval = photon_gl_setswapinterval;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
297 device->GL_GetSwapInterval = photon_gl_getswapinterval;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
298 device->GL_SwapWindow = photon_gl_swapwindow;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
299 device->GL_DeleteContext = photon_gl_deletecontext;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
300 device->PumpEvents = photon_pumpevents;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
301 device->SuspendScreenSaver = photon_suspendscreensaver;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
302
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
303 return device;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
304 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
305
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
306 VideoBootStrap photon_bootstrap = {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
307 "photon",
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
308 "SDL QNX Photon video driver",
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
309 photon_available,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
310 photon_create
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
311 };
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
312
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
313 /*****************************************************************************/
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
314 /* SDL Video and Display initialization/handling functions */
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
315 /*****************************************************************************/
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
316 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
317 photon_videoinit(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
318 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
319 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
320 PgHWCaps_t hwcaps;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
321 PgVideoModeInfo_t modeinfo;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
322 int32_t status;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
323 SDL_VideoDisplay display;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
324 SDL_DisplayMode current_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
325 SDL_DisplayData *didata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
326 uint32_t it;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
327 uint32_t jt;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
328 char *override;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
329
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
330 /* By default Photon do not uses swap on VSYNC */
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
331 #if defined(SDL_VIDEO_OPENGL_ES)
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
332 phdata->swapinterval = 0;
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
333 #endif /* SDL_VIDEO_OPENGL_ES */
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
334
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
335 for (it = 0; it < phdata->avail_rids; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
336 didata = (SDL_DisplayData *) SDL_calloc(1, sizeof(SDL_DisplayData));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
337 if (didata == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
338 /* memory allocation error */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
339 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
340 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
341 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
342
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
343 /* Allocate two cursors with SDL_VIDEO_PHOTON_MAX_CURSOR_SIZE size */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
344 /* and 128 bytes of spare place */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
345 didata->cursor_size =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
346 ((SDL_VIDEO_PHOTON_MAX_CURSOR_SIZE * 4) >> 3) + 128;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
347 didata->cursor = (PhCursorDef_t *) SDL_calloc(1, didata->cursor_size);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
348 if (didata->cursor == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
349 /* memory allocation error */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
350 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
351 SDL_free(didata);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
352 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
353 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
354
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
355 /* Initialize GF in case of OpenGL ES support is compiled in */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
356 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
357 /* TODO: add real device detection versus multiple heads */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
358 if (phdata->gfinitialized == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
359 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
360 gf_display_attach(&didata->display, phdata->gfdev, it,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
361 &didata->display_info);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
362 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
363 /* Just shutdown GF, do not fail */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
364 gf_dev_detach(phdata->gfdev);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
365 phdata->gfinitialized = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
366 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
367 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
368 #endif /* SDL_VIDEO_OPENGL_ES */
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
369
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
370 /* Check if current device is not the same as target */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
371 if (phdata->current_device_id != it) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
372 /* Set target device as default for Pd and Pg functions */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
373 status = PdSetTargetDevice(NULL, phdata->rid[it]);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
374 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
375 SDL_SetError("Photon: Can't set default target device\n");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
376 SDL_free(didata->cursor);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
377 SDL_free(didata);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
378 return -1;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
379 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
380 phdata->current_device_id = it;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
381 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
382
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
383 /* Store device id */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
384 didata->device_id = it;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
385
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
386 /* Query photon about graphics hardware caps and current video mode */
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
387 SDL_memset(&hwcaps, 0x00, sizeof(PgHWCaps_t));
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
388 status = PgGetGraphicsHWCaps(&hwcaps);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
389 if (status != 0) {
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
390 PhRect_t extent;
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
391 PdOffscreenContext_t* curctx;
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
392
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
393 /* If error happens, this also could mean, that photon is working */
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
394 /* under custom (not listed by photon) video mode */
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
395 status=PhWindowQueryVisible(Ph_QUERY_GRAPHICS, 0, 0, &extent);
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
396 if (status != 0) {
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
397 SDL_SetError("Photon: Can't get graphics driver region");
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
398 SDL_free(didata->cursor);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
399 SDL_free(didata);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
400 return -1;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
401 }
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
402 modeinfo.width=extent.lr.x+1;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
403 modeinfo.height=extent.lr.y+1;
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
404 /* Hardcode 60Hz, as the base refresh rate frequency */
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
405 hwcaps.current_rrate=60;
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
406 /* Clear current video driver name, no way to get it somehow */
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
407 hwcaps.chip_name[0]=0x00;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
408
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
409 /* Create offscreen context from video memory, which is currently */
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
410 /* displayed on the screen */
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
411 curctx=PdCreateOffscreenContext(0, 0, 0, Pg_OSC_MAIN_DISPLAY);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
412 if (curctx==NULL)
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
413 {
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
414 SDL_SetError("Photon: Can't get display area capabilities");
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
415 SDL_free(didata->cursor);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
416 SDL_free(didata);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
417 return -1;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
418 }
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
419 /* Retrieve current bpp */
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
420 modeinfo.type=curctx->format;
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
421 PhDCRelease(curctx);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
422 } else {
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
423 /* Get current video mode details */
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
424 status = PgGetVideoModeInfo(hwcaps.current_video_mode, &modeinfo);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
425 if (status != 0) {
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
426 SDL_SetError("Photon: Can't get current video mode information");
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
427 SDL_free(didata->cursor);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
428 SDL_free(didata);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
429 return -1;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
430 }
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
431
3399
f96615051c8c Working on fullscreen video modes support
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
432 /* Get current video mode 2D capabilities for the renderer */
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
433 didata->mode_2dcaps=0;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
434 if ((modeinfo.mode_capabilities2 & PgVM_MODE_CAP2_ALPHA_BLEND)==PgVM_MODE_CAP2_ALPHA_BLEND)
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
435 {
3386
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
436 didata->mode_2dcaps|=SDL_VIDEO_PHOTON_CAP_ALPHA_BLEND;
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
437 }
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
438 if ((modeinfo.mode_capabilities2 & PgVM_MODE_CAP2_SCALED_BLIT)==PgVM_MODE_CAP2_SCALED_BLIT)
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
439 {
3386
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
440 didata->mode_2dcaps|=SDL_VIDEO_PHOTON_CAP_SCALED_BLIT;
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
441 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
442 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
443
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
444 /* Setup current desktop mode for SDL */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
445 SDL_zero(current_mode);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
446 current_mode.w = modeinfo.width;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
447 current_mode.h = modeinfo.height;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
448 current_mode.refresh_rate = hwcaps.current_rrate;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
449 current_mode.format = photon_image_to_sdl_pixelformat(modeinfo.type);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
450 current_mode.driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
451
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
452 /* Copy device name */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
453 SDL_strlcpy(didata->description, hwcaps.chip_name,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
454 SDL_VIDEO_PHOTON_DEVICENAME_MAX - 1);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
455
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
456 /* Search device capabilities and possible workarounds */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
457 jt = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
458 do {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
459 if (photon_devicename[jt].name == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
460 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
461 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
462 if (SDL_strncmp
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
463 (photon_devicename[jt].name, didata->description,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
464 SDL_strlen(photon_devicename[jt].name)) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
465 didata->caps = photon_devicename[jt].caps;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
466 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
467 jt++;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
468 } while (1);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
469
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
470 /* Initialize display structure */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
471 SDL_zero(display);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
472 display.desktop_mode = current_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
473 display.current_mode = current_mode;
3399
f96615051c8c Working on fullscreen video modes support
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
474 display.fullscreen_mode = current_mode;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
475 display.driverdata = didata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
476 didata->current_mode = current_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
477 SDL_AddVideoDisplay(&display);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
478
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
479 /* Check for environment variables which could override some SDL settings */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
480 didata->custom_refresh = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
481 override = SDL_getenv("SDL_VIDEO_PHOTON_REFRESH_RATE");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
482 if (override != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
483 if (SDL_sscanf(override, "%u", &didata->custom_refresh) != 1) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
484 didata->custom_refresh = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
485 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
486 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
487 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
488
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
489 /* Add photon input devices */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
490 status = photon_addinputdevices(_this);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
491 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
492 /* SDL error is set by photon_addinputdevices() function */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
493 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
494 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
495
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
496 /* Add photon renderer to SDL */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
497 photon_addrenderdriver(_this);
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
498
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
499 /* video has been initialized successfully */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
500 return 1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
501 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
502
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
503 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
504 photon_videoquit(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
505 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
506 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
507 SDL_DisplayData *didata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
508 uint32_t it;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
509
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
510 /* SDL will restore our desktop mode on exit */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
511 for (it = 0; it < _this->num_displays; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
512 didata = _this->displays[it].driverdata;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
513
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
514 if (didata->cursor != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
515 SDL_free(didata->cursor);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
516 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
517 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
518 if (phdata->gfinitialized == SDL_TRUE) {
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
519 /* Detach GF display */
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
520 gf_display_detach(didata->display);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
521 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
522 #endif /* SDL_VIDEO_OPENGL_ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
523 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
524 }
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: 3115
diff changeset
526 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
527 photon_getdisplaymodes(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
528 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
529 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
530 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
531 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
532 SDL_DisplayMode mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
533 PgVideoModes_t modes;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
534 PgVideoModeInfo_t modeinfo;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
535 int32_t status;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
536 uint32_t it;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
537 uint32_t jt;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
538
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
539 /* Check if current device is not the same as target */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
540 if (phdata->current_device_id != didata->device_id) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
541 /* Set target device as default for Pd and Pg functions */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
542 status = PdSetTargetDevice(NULL, phdata->rid[didata->device_id]);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
543 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
544 SDL_SetError("Photon: Can't set default target device\n");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
545 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
546 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
547 phdata->current_device_id = didata->device_id;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
548 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
549
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
550 /* Get array of available video modes */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
551 status = PgGetVideoModeList(&modes);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
552 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
553 SDL_SetError("Photon: Can't get video mode list");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
554 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
555 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
556
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
557 for (it = 0; it < modes.num_modes; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
558 status = PgGetVideoModeInfo(modes.modes[it], &modeinfo);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
559 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
560 /* Maybe something wrong with this particular mode, skip it */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
561 continue;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
562 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
563
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
564 jt = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
565 do {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
566 if (modeinfo.refresh_rates[jt] != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
567 mode.w = modeinfo.width;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
568 mode.h = modeinfo.height;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
569 mode.refresh_rate = modeinfo.refresh_rates[jt];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
570 mode.format = photon_image_to_sdl_pixelformat(modeinfo.type);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
571 mode.driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
572 SDL_AddDisplayMode(_this->current_display, &mode);
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
573
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
574 /* If mode is RGBA8888, add the same mode as RGBx888 */
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
575 if (modeinfo.type == Pg_IMAGE_DIRECT_8888) {
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
576 mode.w = modeinfo.width;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
577 mode.h = modeinfo.height;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
578 mode.refresh_rate = modeinfo.refresh_rates[jt];
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
579 mode.format = SDL_PIXELFORMAT_RGB888;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
580 mode.driverdata = NULL;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
581 SDL_AddDisplayMode(_this->current_display, &mode);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
582 }
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
583
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
584 /* If mode is RGBA1555, add the same mode as RGBx555 */
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
585 if (modeinfo.type == Pg_IMAGE_DIRECT_1555) {
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
586 mode.w = modeinfo.width;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
587 mode.h = modeinfo.height;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
588 mode.refresh_rate = modeinfo.refresh_rates[jt];
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
589 mode.format = SDL_PIXELFORMAT_RGB555;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
590 mode.driverdata = NULL;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
591 SDL_AddDisplayMode(_this->current_display, &mode);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
592 }
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
593
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
594 jt++;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
595 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
596 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
597 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
598 } while (1);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
599 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
600 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
601
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
602 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
603 photon_setdisplaymode(_THIS, SDL_DisplayMode * mode)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
604 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
605 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
606 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
607 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
608 PgVideoModes_t modes;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
609 PgVideoModeInfo_t modeinfo;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
610 PgDisplaySettings_t modesettings;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
611 uint32_t refresh_rate = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
612 int32_t status;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
613 uint32_t it;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
614
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
615 /* Check if current device is not the same as target */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
616 if (phdata->current_device_id != didata->device_id) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
617 /* Set target device as default for Pd and Pg functions */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
618 status = PdSetTargetDevice(NULL, phdata->rid[didata->device_id]);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
619 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
620 SDL_SetError("Photon: Can't set default target device\n");
3399
f96615051c8c Working on fullscreen video modes support
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
621 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
622 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
623 phdata->current_device_id = didata->device_id;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
624 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
625
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
626 /* Get array of available video modes */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
627 status = PgGetVideoModeList(&modes);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
628 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
629 SDL_SetError("Photon: Can't get video mode list");
3399
f96615051c8c Working on fullscreen video modes support
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
630 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
631 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
632
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
633 /* Current display dimension and bpp are no more valid */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
634 didata->current_mode.format = SDL_PIXELFORMAT_UNKNOWN;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
635 didata->current_mode.w = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
636 didata->current_mode.h = 0;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
637
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
638 /* Check if custom refresh rate requested */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
639 if (didata->custom_refresh != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
640 refresh_rate = didata->custom_refresh;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
641 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
642 refresh_rate = mode->refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
643 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
644
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
645 /* Check if SDL GF driver needs to find appropriate refresh rate itself */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
646 if (refresh_rate == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
647 SDL_DisplayMode tempmode;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
648
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
649 /* Clear display mode structure */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
650 SDL_memset(&tempmode, 0x00, sizeof(SDL_DisplayMode));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
651 tempmode.refresh_rate = 0x0000FFFF;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
652
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
653 /* Check if window width and height matches one of our modes */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
654 for (it = 0; it < SDL_CurrentDisplay.num_display_modes; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
655 if ((SDL_CurrentDisplay.display_modes[it].w == mode->w) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
656 (SDL_CurrentDisplay.display_modes[it].h == mode->h) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
657 (SDL_CurrentDisplay.display_modes[it].format == mode->format))
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
658 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
659 /* Find the lowest refresh rate available */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
660 if (tempmode.refresh_rate >
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
661 SDL_CurrentDisplay.display_modes[it].refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
662 tempmode = SDL_CurrentDisplay.display_modes[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
663 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
664 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
665 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
666 if (tempmode.refresh_rate != 0x0000FFFF) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
667 refresh_rate = tempmode.refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
668 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
669 /* Let video driver decide what to do with this */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
670 refresh_rate = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
671 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
672 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
673
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
674 /* Check if SDL GF driver needs to check custom refresh rate */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
675 if (didata->custom_refresh != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
676 SDL_DisplayMode tempmode;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
677
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
678 /* Clear display mode structure */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
679 SDL_memset(&tempmode, 0x00, sizeof(SDL_DisplayMode));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
680 tempmode.refresh_rate = 0x0000FFFF;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
681
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
682 /* Check if window width and height matches one of our modes */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
683 for (it = 0; it < SDL_CurrentDisplay.num_display_modes; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
684 if ((SDL_CurrentDisplay.display_modes[it].w == mode->w) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
685 (SDL_CurrentDisplay.display_modes[it].h == mode->h) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
686 (SDL_CurrentDisplay.display_modes[it].format == mode->format))
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
687 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
688 /* Find the lowest refresh rate available */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
689 if (tempmode.refresh_rate >
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
690 SDL_CurrentDisplay.display_modes[it].refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
691 tempmode = SDL_CurrentDisplay.display_modes[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
692 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
693
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
694 /* Check if requested refresh rate found */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
695 if (refresh_rate ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
696 SDL_CurrentDisplay.display_modes[it].refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
697 tempmode = SDL_CurrentDisplay.display_modes[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
698 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
699 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
700 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
701 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
702 if (tempmode.refresh_rate != 0x0000FFFF) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
703 refresh_rate = tempmode.refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
704 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
705 /* Let video driver decide what to do with this */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
706 refresh_rate = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
707 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
708 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
709
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
710 /* Find photon's video mode number */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
711 for (it = 0; it < modes.num_modes; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
712 uint32_t jt;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
713 uint32_t foundrefresh;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
714
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
715 /* Get current video mode details */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
716 status = PgGetVideoModeInfo(modes.modes[it], &modeinfo);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
717 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
718 /* Maybe something wrong with this particular mode, skip it */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
719 continue;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
720 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
721 if ((modeinfo.width == mode->w) && (modeinfo.height == mode->h) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
722 (modeinfo.type == photon_sdl_to_image_pixelformat(mode->format)))
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
723 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
724 /* Mode is found, find requested refresh rate, this case is for */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
725 /* video drivers, which provide non-generic video modes. */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
726 jt = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
727 foundrefresh = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
728 do {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
729 if (modeinfo.refresh_rates[jt] != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
730 if (modeinfo.refresh_rates[jt] == refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
731 foundrefresh = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
732 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
733 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
734 jt++;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
735 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
736 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
737 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
738 } while (1);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
739 if (foundrefresh != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
740 break;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
741 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
742 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
743 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
744
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
745 /* Check if video mode has not been found */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
746 if (it == modes.num_modes) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
747 SDL_SetError("Photon: Can't find appropriate video mode");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
748 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
749 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
750
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
751 /* Fill mode settings */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
752 modesettings.flags = 0x00000000;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
753 modesettings.mode = modes.modes[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
754 modesettings.refresh = refresh_rate;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
755
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
756 /* Finally set new video mode */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
757 status = PgSetVideoMode(&modesettings);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
758 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
759 SDL_SetError("Photon: Can't set new video mode");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
760 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
761 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
762
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
763 /* Store new video mode parameters */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
764 didata->current_mode = *mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
765 didata->current_mode.refresh_rate = refresh_rate;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
766
3399
f96615051c8c Working on fullscreen video modes support
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
767 /* Get current video mode 2D capabilities for the renderer */
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
768 didata->mode_2dcaps=0;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
769 if ((modeinfo.mode_capabilities2 & PgVM_MODE_CAP2_ALPHA_BLEND)==PgVM_MODE_CAP2_ALPHA_BLEND)
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
770 {
3386
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
771 didata->mode_2dcaps|=SDL_VIDEO_PHOTON_CAP_ALPHA_BLEND;
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
772 }
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
773 if ((modeinfo.mode_capabilities2 & PgVM_MODE_CAP2_SCALED_BLIT)==PgVM_MODE_CAP2_SCALED_BLIT)
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
774 {
3386
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
775 didata->mode_2dcaps|=SDL_VIDEO_PHOTON_CAP_SCALED_BLIT;
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
776 }
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
777
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
778 return 0;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
779 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
780
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
781 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
782 photon_setdisplaypalette(_THIS, SDL_Palette * palette)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
783 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
784 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
785 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
786
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
787 /* Setting display palette operation has been failed */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
788 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
789 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
790
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
791 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
792 photon_getdisplaypalette(_THIS, SDL_Palette * palette)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
793 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
794 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
795 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
796
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
797 /* Getting display palette operation has been failed */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
798 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
799 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
800
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
801 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
802 photon_setdisplaygammaramp(_THIS, Uint16 * ramp)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
803 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
804 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
805 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
806
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
807 /* Setting display gamma ramp operation has been failed */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
808 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
809 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
810
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
811 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
812 photon_getdisplaygammaramp(_THIS, Uint16 * ramp)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
813 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
814 /* Getting display gamma ramp operation has been failed */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
815 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
816 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
817
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
818 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
819 photon_createwindow(_THIS, SDL_Window * window)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
820 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
821 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
822 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
823 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
824 SDL_WindowData *wdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
825 PhDim_t winsize;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
826 PhPoint_t winpos;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
827 PtArg_t winargs[32];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
828 uint32_t winargc = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
829 int32_t status;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
830 PhRegion_t wregion;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
831
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
832 /* Allocate window internal data */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
833 wdata = (SDL_WindowData *) SDL_calloc(1, sizeof(SDL_WindowData));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
834 if (wdata == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
835 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
836 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
837 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
838
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
839 /* Setup driver data for this window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
840 window->driverdata = wdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
841
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
842 /* Set initial window title */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
843 if (window->title != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
844 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_TITLE, window->title, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
845 } else {
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
846 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_TITLE, "SDL unnamed application", 0);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
847 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
848
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
849 /* TODO: handle SDL_WINDOW_INPUT_GRABBED */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
850
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
851 /* Disable default window filling on redraw */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
852 PtSetArg(&winargs[winargc++], Pt_ARG_BASIC_FLAGS, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
853 Pt_BASIC_PREVENT_FILL);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
854
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
855 /* Reset default managed flags to disabled state */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
856 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_FALSE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
857 Ph_WM_APP_DEF_MANAGED);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
858 /* Set which events we will not handle, let WM to handle them */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
859 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
860 Ph_WM_BACKDROP | Ph_WM_TOFRONT | Ph_WM_COLLAPSE | Ph_WM_FFRONT |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
861 Ph_WM_FOCUS | Ph_WM_HELP | Ph_WM_HIDE | Ph_WM_MAX |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
862 Ph_WM_MENU | Ph_WM_MOVE | Ph_WM_RESTORE | Ph_WM_TASKBAR |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
863 Ph_WM_TOBACK | Ph_WM_RESIZE);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
864
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
865 /* Reset default notify events to disable */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
866 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_NOTIFY_FLAGS, Pt_FALSE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
867 Ph_WM_RESIZE | Ph_WM_CLOSE | Ph_WM_HELP);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
868 /* Set which events we will handle */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
869 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_NOTIFY_FLAGS, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
870 Ph_WM_CLOSE | Ph_WM_COLLAPSE | Ph_WM_FOCUS | Ph_WM_MAX |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
871 Ph_WM_MOVE | Ph_WM_RESIZE | Ph_WM_RESTORE | Ph_WM_HIDE);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
872
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
873 /* Borderless window can't be resizeable */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
874 if ((window->flags & SDL_WINDOW_BORDERLESS) == SDL_WINDOW_BORDERLESS) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
875 window->flags &= ~(SDL_WINDOW_RESIZABLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
876 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
877
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
878 /* Reset all default decorations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
879 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_RENDER_FLAGS, Pt_FALSE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
880 Ph_WM_APP_DEF_RENDER);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
881
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
882 /* Fullscreen window has its own decorations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
883 if ((window->flags & SDL_WINDOW_FULLSCREEN) == SDL_WINDOW_FULLSCREEN) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
884 window->flags |= SDL_WINDOW_BORDERLESS;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
885 window->flags &= ~(SDL_WINDOW_RESIZABLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
886 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_RENDER_FLAGS, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
887 Ph_WM_RENDER_CLOSE | Ph_WM_RENDER_TITLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
888 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
889 uint32_t decorations =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
890 Ph_WM_RENDER_CLOSE | Ph_WM_RENDER_MENU | Ph_WM_RENDER_MIN |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
891 Ph_WM_RENDER_TITLE | Ph_WM_RENDER_MOVE;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
892
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
893 if ((window->flags & SDL_WINDOW_RESIZABLE) == SDL_WINDOW_RESIZABLE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
894 decorations |=
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
895 Ph_WM_RENDER_BORDER | Ph_WM_RENDER_RESIZE | Ph_WM_RENDER_MAX;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
896 PtSetArg(&winargs[winargc++], Pt_ARG_RESIZE_FLAGS, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
897 Pt_RESIZE_XY_AS_REQUIRED);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
898 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
899 if ((window->flags & SDL_WINDOW_BORDERLESS) != SDL_WINDOW_BORDERLESS) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
900 decorations |= Ph_WM_RENDER_BORDER;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
901 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
902 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_RENDER_FLAGS, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
903 decorations);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
904 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
905
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
906 /* Set initial window state */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
907 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_STATE, Pt_FALSE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
908 Ph_WM_STATE_ISFOCUS);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
909 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_STATE, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
910 Ph_WM_STATE_ISALTKEY);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
911
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
912 /* Special case, do not handle maximize events, if window can't be resized */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
913 if ((window->flags & SDL_WINDOW_RESIZABLE) != SDL_WINDOW_RESIZABLE)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
914 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
915 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_FALSE,
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
916 Ph_WM_MAX | Ph_WM_RESTORE | Ph_WM_RESIZE);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
917 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
918
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
919 /* Set window dimension */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
920 winsize.w = window->w;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
921 winsize.h = window->h;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
922 PtSetArg(&winargs[winargc++], Pt_ARG_DIM, &winsize, 0);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
923
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
924 /* Check if upper level requests WM to position window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
925 if ((window->x == SDL_WINDOWPOS_UNDEFINED)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
926 && (window->y == SDL_WINDOWPOS_UNDEFINED)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
927 /* Do not set widget position, let WM to set it */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
928 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
929 if (window->x == SDL_WINDOWPOS_UNDEFINED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
930 window->x = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
931 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
932 if (window->y == SDL_WINDOWPOS_UNDEFINED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
933 window->y = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
934 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
935 if (window->x == SDL_WINDOWPOS_CENTERED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
936 window->x = (didata->current_mode.w - window->w) / 2;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
937 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
938 if (window->y == SDL_WINDOWPOS_CENTERED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
939 window->y = (didata->current_mode.h - window->h) / 2;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
940 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
941
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
942 /* Now set window position */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
943 winpos.x = window->x;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
944 winpos.y = window->y;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
945 PtSetArg(&winargs[winargc++], Pt_ARG_POS, &winpos, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
946 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
947
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
948 /* Check if window must support OpenGL ES rendering */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
949 if ((window->flags & SDL_WINDOW_OPENGL) == SDL_WINDOW_OPENGL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
950 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
951 EGLBoolean initstatus;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
952
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
953 /* Check if GF was initialized correctly */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
954 if (phdata->gfinitialized == SDL_FALSE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
955 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
956 ("Photon: GF initialization failed, no OpenGL ES support");
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
957 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
958 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
959
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
960 /* Mark this window as OpenGL ES compatible */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
961 wdata->uses_gles = SDL_TRUE;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
962
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
963 /* Create connection to OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
964 if (phdata->egldisplay == EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
965 phdata->egldisplay = eglGetDisplay(phdata->gfdev);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
966 if (phdata->egldisplay == EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
967 SDL_SetError("Photon: Can't get connection to OpenGL ES");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
968 return -1;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
969 }
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
970
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
971 /* Initialize OpenGL ES library, ignore EGL version */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
972 initstatus = eglInitialize(phdata->egldisplay, NULL, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
973 if (initstatus != EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
974 SDL_SetError("Photon: Can't init OpenGL ES library");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
975 return -1;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
976 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
977 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
978
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
979 /* Increment GL ES reference count usage */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
980 phdata->egl_refcount++;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
981 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
982 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
983 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
984 #endif /* SDL_VIDEO_OPENGL_ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
985 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
986
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
987 /* Finally create the window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
988 wdata->window = PtCreateWidget(PtWindow, Pt_NO_PARENT, winargc, winargs);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
989 if (wdata->window == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
990 SDL_SetError("Photon: Can't create window widget");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
991 SDL_free(wdata);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
992 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
993 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
994
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
995 /* Show widget */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
996 status = PtRealizeWidget(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
997 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
998 SDL_SetError("Photon: Can't realize window widget");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
999 PtDestroyWidget(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1000 SDL_free(wdata);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1001 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1002 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1003
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1004 /* Just created SDL window always gets focus */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1005 window->flags |= SDL_WINDOW_INPUT_FOCUS;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1006
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1007 /* Create window-specific cursor after creation */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1008 if (didata->cursor_visible == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1009 /* Setup cursor type. shape and default color */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1010 PtSetResource(wdata->window, Pt_ARG_CURSOR_COLOR,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1011 Ph_CURSOR_DEFAULT_COLOR, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1012 PtSetResource(wdata->window, Pt_ARG_CURSOR_TYPE, Ph_CURSOR_BITMAP, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1013 PtSetResource(wdata->window, Pt_ARG_BITMAP_CURSOR, didata->cursor,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1014 didata->cursor->hdr.len + sizeof(PhRegionDataHdr_t));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1015 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1016 PtSetResource(wdata->window, Pt_ARG_CURSOR_TYPE, Ph_CURSOR_NONE, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1017 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1018
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1019 /* Set window region sensible to mouse motion events */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1020 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1021 PhRegionQuery(PtWidgetRid(wdata->window), &wregion, NULL, NULL, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1022 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1023 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1024 ("Photon: Can't set region sensivity to mouse motion events");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1025 PtDestroyWidget(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1026 SDL_free(wdata);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1027 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1028 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1029 wregion.events_sense |=
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1030 Ph_EV_PTR_MOTION_BUTTON | Ph_EV_PTR_MOTION_NOBUTTON;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1031 status = PhRegionChange(Ph_REGION_EV_SENSE, 0, &wregion, NULL, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1032 if (status < 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1033 SDL_SetError("Photon: Can't change region sensivity");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1034 PtDestroyWidget(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1035 SDL_free(wdata);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1036 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1037 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1038
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1039 /* Flush all widget operations again */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1040 PtFlush();
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1041
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1042 /* By default last created window got a input focus */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1043 SDL_SetKeyboardFocus(0, window->id);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1044
3399
f96615051c8c Working on fullscreen video modes support
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1045 /* Emit focus gained event, because photon is not sending it */
f96615051c8c Working on fullscreen video modes support
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1046 SDL_OnWindowFocusGained(window);
f96615051c8c Working on fullscreen video modes support
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1047
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1048 /* Window has been successfully created */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1049 return 0;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1050 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1051
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1052 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1053 photon_createwindowfrom(_THIS, SDL_Window * window, const void *data)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1054 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1055 /* TODO: it is possible */
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1056
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1057 /* Failed to create window from another window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1058 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1059 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1060
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1061 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1062 photon_setwindowtitle(_THIS, SDL_Window * window)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1063 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1064 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1065 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1066
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1067 /* Set window title */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1068 if (window->title != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1069 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1070 PtSetResource(wdata->window, Pt_ARG_WINDOW_TITLE, window->title,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1071 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1072 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1073 status = PtSetResource(wdata->window, Pt_ARG_WINDOW_TITLE, "", 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1074 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1075
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1076 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1077 SDL_SetError("Photon: Can't set window title");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1078 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1079
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1080 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1081 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1082 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1083
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1084 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1085 photon_setwindowicon(_THIS, SDL_Window * window, SDL_Surface * icon)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1086 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1087 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1088 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1089
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1090 /* TODO: Use iconify ? */
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1091
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1092 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1093 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1094 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1095
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1096 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1097 photon_setwindowposition(_THIS, SDL_Window * window)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1098 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1099 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1100 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1101 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1102 PhPoint_t winpos;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1103 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1104
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1105 /* Check if upper level requests WM to position window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1106 if ((window->x == SDL_WINDOWPOS_UNDEFINED)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1107 && (window->y == SDL_WINDOWPOS_UNDEFINED)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1108 /* Do not set widget position, let WM to set it */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1109 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1110 if (window->x == SDL_WINDOWPOS_UNDEFINED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1111 window->x = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1112 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1113 if (window->y == SDL_WINDOWPOS_UNDEFINED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1114 window->y = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1115 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1116 if (window->x == SDL_WINDOWPOS_CENTERED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1117 window->x = (didata->current_mode.w - window->w) / 2;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1118 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1119 if (window->y == SDL_WINDOWPOS_CENTERED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1120 window->y = (didata->current_mode.h - window->h) / 2;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1121 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1122
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1123 /* Now set window position */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1124 winpos.x = window->x;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1125 winpos.y = window->y;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1126 status = PtSetResource(wdata->window, Pt_ARG_POS, &winpos, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1127 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1128 SDL_SetError("Photon: Can't set window position");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1129 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1130 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1131
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1132 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1133 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1134 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1135
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1136 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1137 photon_setwindowsize(_THIS, SDL_Window * window)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1138 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1139 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1140 PhDim_t winsize;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1141 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1142
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1143 winsize.w = window->w;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1144 winsize.h = window->h;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1145
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1146 status = PtSetResource(wdata->window, Pt_ARG_DIM, &winsize, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1147 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1148 SDL_SetError("Photon: Can't set window size");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1149 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1150
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1151 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1152 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1153 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1154
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1155 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1156 photon_showwindow(_THIS, SDL_Window * window)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1157 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1158 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1159 int32_t status;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1160
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1161 /* Bring focus to window and put it in front of others */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1162 PtWindowToFront(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1163
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1164 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1165 PtFlush();
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1166 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1167
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1168 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1169 photon_hidewindow(_THIS, SDL_Window * window)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1170 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1171 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1172 PhWindowEvent_t winevent;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1173 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1174
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1175 SDL_memset(&winevent, 0x00, sizeof(PhWindowEvent_t));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1176 winevent.event_f = Ph_WM_HIDE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1177 winevent.rid = PtWidgetRid(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1178 winevent.event_state = Ph_WM_EVSTATE_HIDE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1179
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1180 status = PtForwardWindowEvent(&winevent);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1181 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1182 SDL_SetError("Photon: Can't hide window");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1183 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1184
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1185 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1186 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1187 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1188
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1189 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1190 photon_raisewindow(_THIS, SDL_Window * window)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1191 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1192 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1193 PhWindowEvent_t winevent;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1194 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1195
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1196 SDL_memset(&winevent, 0x00, sizeof(PhWindowEvent_t));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1197 winevent.event_f = Ph_WM_HIDE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1198 winevent.rid = PtWidgetRid(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1199 winevent.event_state = Ph_WM_EVSTATE_UNHIDE;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1200
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1201 status = PtForwardWindowEvent(&winevent);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1202 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1203 SDL_SetError("Photon: Can't hide window");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1204 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1205
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1206 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1207 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1208 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1209
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1210 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1211 photon_maximizewindow(_THIS, SDL_Window * window)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1212 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1213 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1214 PhWindowEvent_t winevent;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1215 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1216
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1217 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1218 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1219 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1220
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1221 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1222 photon_minimizewindow(_THIS, SDL_Window * window)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1223 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1224 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1225 PhWindowEvent_t winevent;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1226 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1227
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1228 SDL_memset(&winevent, 0x00, sizeof(PhWindowEvent_t));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1229 winevent.event_f = Ph_WM_HIDE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1230 winevent.rid = PtWidgetRid(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1231 winevent.event_state = Ph_WM_EVSTATE_HIDE;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1232
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1233 status = PtForwardWindowEvent(&winevent);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1234 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1235 SDL_SetError("Photon: Can't hide window");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1236 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1237
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1238 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1239 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1240 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1241
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1242 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1243 photon_restorewindow(_THIS, SDL_Window * window)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1244 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1245 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1246 PhWindowEvent_t winevent;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1247 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1248
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1249 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1250 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1251 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1252
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1253 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1254 photon_setwindowgrab(_THIS, SDL_Window * window)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1255 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1256 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1257 PhWindowEvent_t winevent;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1258 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1259
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1260 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1261 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1262 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1263
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1264 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1265 photon_destroywindow(_THIS, SDL_Window * window)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1266 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1267 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1268 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1269 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1270 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1271 int32_t status;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1272
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1273 if (wdata != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1274 status = PtDestroyWidget(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1275 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1276 SDL_SetError("Photon: Can't destroy window widget");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1277 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1278 wdata->window = NULL;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1279
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1280 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1281 if (phdata->gfinitialized == SDL_TRUE) {
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1282 /* Destroy photon handle to GF surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1283 if (wdata->phsurface != NULL) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1284 PhDCRelease(wdata->phsurface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1285 wdata->phsurface=NULL;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1286 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1287
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1288 /* Destroy OpenGL ES surface if it was created */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1289 if (wdata->gles_surface != EGL_NO_SURFACE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1290 eglDestroySurface(phdata->egldisplay, wdata->gles_surface);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1291 }
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1292
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1293 /* Free OpenGL ES target surface */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1294 if (wdata->gfsurface != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1295 gf_surface_free(wdata->gfsurface);
3399
f96615051c8c Working on fullscreen video modes support
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1296 wdata->gfsurface=NULL;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1297 }
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1298
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1299 phdata->egl_refcount--;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1300 if (phdata->egl_refcount == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1301 /* Terminate connection to OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1302 if (phdata->egldisplay != EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1303 eglTerminate(phdata->egldisplay);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1304 phdata->egldisplay = EGL_NO_DISPLAY;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1305 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1306 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1307 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1308 #endif /* SDL_VIDEO_OPENGL_ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1309 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1310
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1311 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1312 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1313 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1314
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1315 /*****************************************************************************/
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1316 /* SDL Window Manager function */
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1317 /*****************************************************************************/
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1318 SDL_bool
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1319 photon_getwindowwminfo(_THIS, SDL_Window * window, struct SDL_SysWMinfo *info)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1320 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1321 if (info->version.major <= SDL_MAJOR_VERSION) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1322 return SDL_TRUE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1323 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1324 SDL_SetError("application not compiled with SDL %d.%d\n",
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1325 SDL_MAJOR_VERSION, SDL_MINOR_VERSION);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1326 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1327 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1328
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1329 /* Failed to get window manager information */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1330 return SDL_FALSE;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1331 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1332
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1333 /*****************************************************************************/
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1334 /* SDL OpenGL/OpenGL ES functions */
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1335 /*****************************************************************************/
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1336 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1337 photon_gl_loadlibrary(_THIS, const char *path)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1338 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1339 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1340 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1341
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1342 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1343 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1344 ("Photon: GF initialization failed, no OpenGL ES support");
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
1345 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1346 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1347
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1348 /* Check if OpenGL ES library is specified for GF driver */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1349 if (path == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1350 path = SDL_getenv("SDL_OPENGL_LIBRARY");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1351 if (path == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1352 path = SDL_getenv("SDL_OPENGLES_LIBRARY");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1353 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1354 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1355
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1356 /* Check if default library loading requested */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1357 if (path == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1358 /* Already linked with GF library which provides egl* subset of */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1359 /* functions, use Common profile of OpenGL ES library by default */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1360 path = "/usr/lib/libGLES_CM.so.1";
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1361 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1362
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1363 /* Load dynamic library */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1364 _this->gl_config.dll_handle = SDL_LoadObject(path);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1365 if (!_this->gl_config.dll_handle) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1366 /* Failed to load new GL ES library */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1367 SDL_SetError("Photon: Failed to locate OpenGL ES library");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1368 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1369 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1370
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1371 /* Store OpenGL ES library path and name */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1372 SDL_strlcpy(_this->gl_config.driver_path, path,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1373 SDL_arraysize(_this->gl_config.driver_path));
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1374
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1375 /* New OpenGL ES library is loaded */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1376 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1377 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1378 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1379 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1380 #endif /* SDL_VIDEO_OPENGL_ES */
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1381 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1382
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1383 void *
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1384 photon_gl_getprocaddres(_THIS, const char *proc)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1385 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1386 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1387 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1388 void *function_address;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1389
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1390 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1391 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1392 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1393 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1394 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1395
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1396 /* Try to get function address through the egl interface */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1397 function_address = eglGetProcAddress(proc);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1398 if (function_address != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1399 return function_address;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1400 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1401
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1402 /* Then try to get function in the OpenGL ES library */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1403 if (_this->gl_config.dll_handle) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1404 function_address =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1405 SDL_LoadFunction(_this->gl_config.dll_handle, proc);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1406 if (function_address != NULL) {
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1407 return function_address;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1408 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1409 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1410
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1411 /* Add emulated OpenGL ES 1.1 functions */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1412 if (SDL_strcmp(proc, "glTexParameteri") == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1413 return glTexParameteri;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1414 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1415 if (SDL_strcmp(proc, "glTexParameteriv") == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1416 return glTexParameteriv;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1417 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1418 if (SDL_strcmp(proc, "glColor4ub") == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1419 return glColor4ub;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1420 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1421
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1422 /* Failed to get GL ES function address pointer */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1423 SDL_SetError("Photon: Cannot locate OpenGL ES function name");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1424 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1425 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1426 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1427 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1428 #endif /* SDL_VIDEO_OPENGL_ES */
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1429 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1430
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1431 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1432 photon_gl_unloadlibrary(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1433 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1434 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1435 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1436
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1437 if (phdata->gfinitialized == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1438 /* Unload OpenGL ES library */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1439 if (_this->gl_config.dll_handle) {
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1440 SDL_UnloadObject(_this->gl_config.dll_handle);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1441 _this->gl_config.dll_handle = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1442 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1443 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1444 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1445 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1446 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1447 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1448 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1449 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1450 #endif /* SDL_VIDEO_OPENGL_ES */
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1451 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1452
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1453 SDL_GLContext
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1454 photon_gl_createcontext(_THIS, SDL_Window * window)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1455 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1456 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1457 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1458 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1459 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1460 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1461 EGLBoolean status;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1462 int32_t gfstatus;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1463 EGLint configs;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1464 uint32_t attr_pos;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1465 EGLint attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1466 EGLint cit;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1467
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1468 /* Check if GF was initialized */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1469 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1470 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1471 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1472 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1473 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1474
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1475 /* Prepare attributes list to pass them to OpenGL ES egl interface */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1476 attr_pos = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1477 wdata->gles_attributes[attr_pos++] = EGL_NATIVE_VISUAL_ID;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1478 wdata->gles_attributes[attr_pos++] =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1479 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.format);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1480 wdata->gles_attributes[attr_pos++] = EGL_RED_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1481 wdata->gles_attributes[attr_pos++] = _this->gl_config.red_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1482 wdata->gles_attributes[attr_pos++] = EGL_GREEN_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1483 wdata->gles_attributes[attr_pos++] = _this->gl_config.green_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1484 wdata->gles_attributes[attr_pos++] = EGL_BLUE_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1485 wdata->gles_attributes[attr_pos++] = _this->gl_config.blue_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1486 wdata->gles_attributes[attr_pos++] = EGL_ALPHA_SIZE;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1487
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1488 /* Setup alpha size in bits */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1489 if (_this->gl_config.alpha_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1490 wdata->gles_attributes[attr_pos++] = _this->gl_config.alpha_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1491 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1492 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1493 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1494
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1495 /* Setup color buffer size */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1496 if (_this->gl_config.buffer_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1497 wdata->gles_attributes[attr_pos++] = EGL_BUFFER_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1498 wdata->gles_attributes[attr_pos++] = _this->gl_config.buffer_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1499 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1500 wdata->gles_attributes[attr_pos++] = EGL_BUFFER_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1501 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1502 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1503
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1504 /* Setup depth buffer bits */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1505 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE;
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1506 if (_this->gl_config.depth_size)
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1507 {
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1508 wdata->gles_attributes[attr_pos++] = _this->gl_config.depth_size;
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1509 }
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1510 else
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1511 {
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1512 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1513 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1514
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1515 /* Setup stencil bits */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1516 if (_this->gl_config.stencil_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1517 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE;
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1518 wdata->gles_attributes[attr_pos++] = _this->gl_config.stencil_size;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1519 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1520 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1521 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1522 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1523
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1524 /* Set number of samples in multisampling */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1525 if (_this->gl_config.multisamplesamples) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1526 wdata->gles_attributes[attr_pos++] = EGL_SAMPLES;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1527 wdata->gles_attributes[attr_pos++] =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1528 _this->gl_config.multisamplesamples;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1529 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1530
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1531 /* Multisample buffers, OpenGL ES 1.0 spec defines 0 or 1 buffer */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1532 if (_this->gl_config.multisamplebuffers) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1533 wdata->gles_attributes[attr_pos++] = EGL_SAMPLE_BUFFERS;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1534 wdata->gles_attributes[attr_pos++] =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1535 _this->gl_config.multisamplebuffers;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1536 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1537
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1538 /* Finish attributes list */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1539 wdata->gles_attributes[attr_pos] = EGL_NONE;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1540
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1541 /* Request first suitable framebuffer configuration */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1542 status = eglChooseConfig(phdata->egldisplay, wdata->gles_attributes,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1543 wdata->gles_configs, SDL_VIDEO_GF_OPENGLES_CONFS,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1544 &configs);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1545 if (status != EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1546 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1547 ("Photon: Can't find closest configuration for OpenGL ES");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1548 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1549 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1550
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1551 /* Check if nothing has been found, try "don't care" settings */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1552 if (configs == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1553 int32_t it;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1554 int32_t jt;
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1555 static const GLint depthbits[4] = { 32, 24, 16, EGL_DONT_CARE };
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1556
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1557 for (it = 0; it < 4; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1558 for (jt = 16; jt >= 0; jt--) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1559 /* Don't care about color buffer bits, use what exist */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1560 /* Replace previous set data with EGL_DONT_CARE */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1561 attr_pos = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1562 wdata->gles_attributes[attr_pos++] = EGL_NATIVE_VISUAL_ID;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1563 wdata->gles_attributes[attr_pos++] =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1564 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.format);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1565 wdata->gles_attributes[attr_pos++] = EGL_RED_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1566 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1567 wdata->gles_attributes[attr_pos++] = EGL_GREEN_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1568 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1569 wdata->gles_attributes[attr_pos++] = EGL_BLUE_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1570 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1571 wdata->gles_attributes[attr_pos++] = EGL_ALPHA_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1572 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1573 wdata->gles_attributes[attr_pos++] = EGL_BUFFER_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1574 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1575
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1576 /* Try to find requested or smallest depth */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1577 if (_this->gl_config.depth_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1578 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1579 wdata->gles_attributes[attr_pos++] = depthbits[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1580 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1581 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1582 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1583 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1584
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1585 if (_this->gl_config.stencil_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1586 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1587 wdata->gles_attributes[attr_pos++] = jt;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1588 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1589 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1590 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1591 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1592
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1593 wdata->gles_attributes[attr_pos++] = EGL_SAMPLES;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1594 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1595 wdata->gles_attributes[attr_pos++] = EGL_SAMPLE_BUFFERS;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1596 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1597 wdata->gles_attributes[attr_pos] = EGL_NONE;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1598
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1599 /* Request first suitable framebuffer configuration */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1600 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1601 eglChooseConfig(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1602 wdata->gles_attributes,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1603 wdata->gles_configs,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1604 SDL_VIDEO_GF_OPENGLES_CONFS, &configs);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1605 if (status != EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1606 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1607 ("Photon: Can't find closest configuration for OpenGL ES");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1608 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1609 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1610 if (configs != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1611 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1612 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1613 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1614 if (configs != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1615 break;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1616 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1617 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1618
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1619 /* No available configs */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1620 if (configs == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1621 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1622 ("Photon: Can't find any configuration for OpenGL ES");
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1623 return NULL;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1624 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1625 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1626
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1627 /* Initialize config index */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1628 wdata->gles_config = 0;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1629
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1630 /* Now check each configuration to find out the best */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1631 for (cit = 0; cit < configs; cit++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1632 uint32_t stencil_found;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1633 uint32_t depth_found;
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1634 EGLint cur_depth;
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1635 EGLint cur_stencil;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1636
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1637 stencil_found = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1638 depth_found = 0;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1639
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1640 if (_this->gl_config.stencil_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1641 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1642 eglGetConfigAttrib(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1643 wdata->gles_configs[cit], EGL_STENCIL_SIZE,
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1644 &cur_stencil);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1645 if (status == EGL_TRUE) {
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1646 if (cur_stencil != 0) {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1647 stencil_found = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1648 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1649 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1650 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1651 stencil_found = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1652 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1653
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1654 if (_this->gl_config.depth_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1655 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1656 eglGetConfigAttrib(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1657 wdata->gles_configs[cit], EGL_DEPTH_SIZE,
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1658 &cur_depth);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1659 if (status == EGL_TRUE) {
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1660 if (cur_depth != 0) {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1661 depth_found = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1662 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1663 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1664 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1665 depth_found = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1666 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1667
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1668 /* Exit from loop if found appropriate configuration */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1669 if ((depth_found != 0) && (stencil_found != 0)) {
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1670 /* Store last satisfied configuration id */
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1671 wdata->gles_config = cit;
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1672
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1673 if (cur_depth==_this->gl_config.depth_size)
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1674 {
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1675 /* Exact match on depth bits */
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1676 if (!_this->gl_config.stencil_size)
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1677 {
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1678 /* Stencil is not required */
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1679 break;
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1680 }
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1681 else
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1682 {
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1683 if (cur_stencil==_this->gl_config.stencil_size)
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1684 {
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1685 /* Exact match on stencil bits */
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1686 break;
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1687 }
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1688 }
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1689 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1690 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1691 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1692
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1693 /* If best could not be found, use first or last satisfied */
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1694 if ((cit == configs) && (wdata->gles_config==0)) {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1695 cit = 0;
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
1696 wdata->gles_config = cit;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1697 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1698
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1699 /* Create OpenGL ES context */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1700 wdata->gles_context =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1701 eglCreateContext(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1702 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1703 EGL_NO_CONTEXT, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1704 if (wdata->gles_context == EGL_NO_CONTEXT) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1705 SDL_SetError("Photon: OpenGL ES context creation has been failed");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1706 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1707 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1708
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1709 /* Check if surface is exist */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1710 if (wdata->gfsurface != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1711 gf_surface_free(wdata->gfsurface);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1712 wdata->gfsurface = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1713 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1714
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1715 /* Create GF surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1716 gfstatus =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1717 gf_surface_create(&wdata->gfsurface, phdata->gfdev, window->w,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1718 window->h,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1719 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1720 format), NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1721 GF_SURFACE_CREATE_2D_ACCESSIBLE |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1722 GF_SURFACE_CREATE_3D_ACCESSIBLE |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1723 GF_SURFACE_CREATE_SHAREABLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1724 if (gfstatus != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1725 eglDestroyContext(phdata->egldisplay, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1726 wdata->gles_context = EGL_NO_CONTEXT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1727 SDL_SetError("Photon: Can't create GF 3D surface (%08X)", gfstatus);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1728 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1729 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1730
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1731 /* Create pixmap 3D target surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1732 wdata->gles_surface =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1733 eglCreatePixmapSurface(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1734 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1735 wdata->gfsurface, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1736 if (wdata->gles_surface == EGL_NO_SURFACE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1737 gf_surface_free(wdata->gfsurface);
3399
f96615051c8c Working on fullscreen video modes support
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1738 wdata->gfsurface=NULL;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1739 eglDestroyContext(phdata->egldisplay, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1740 wdata->gles_context = EGL_NO_CONTEXT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1741 SDL_SetError("Photon: Can't create EGL pixmap surface");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1742 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1743 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1744
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1745 /* Store last used context and surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1746 phdata->lgles_surface=wdata->gles_surface;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1747 phdata->lgles_context=wdata->gles_context;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1748
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1749 /* Make just created context current */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1750 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1751 eglMakeCurrent(phdata->egldisplay, wdata->gles_surface,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1752 wdata->gles_surface, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1753 if (status != EGL_TRUE) {
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1754 /* Reset last used context and surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1755 phdata->lgles_surface=EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1756 phdata->lgles_context=EGL_NO_CONTEXT;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1757
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1758 /* Destroy OpenGL ES surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1759 eglDestroySurface(phdata->egldisplay, wdata->gles_surface);
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1760 wdata->gles_surface=EGL_NO_SURFACE;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1761 gf_surface_free(wdata->gfsurface);
3399
f96615051c8c Working on fullscreen video modes support
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1762 wdata->gfsurface=NULL;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1763 eglDestroyContext(phdata->egldisplay, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1764 wdata->gles_context = EGL_NO_CONTEXT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1765 SDL_SetError("Photon: Can't set OpenGL ES context on creation");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1766 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1767 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1768
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1769 /* Setup into SDL internals state of OpenGL ES: */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1770 /* it is accelerated or not */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1771 if ((didata->caps & SDL_PHOTON_ACCELERATED_3D) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1772 SDL_PHOTON_ACCELERATED_3D) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1773 _this->gl_config.accelerated = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1774 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1775 _this->gl_config.accelerated = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1776 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1777
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1778 /* Always clear stereo enable, since OpenGL ES do not supports stereo */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1779 _this->gl_config.stereo = 0;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1780
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1781 /* Get back samples and samplebuffers configurations. Rest framebuffer */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1782 /* parameters could be obtained through the OpenGL ES API */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1783 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1784 eglGetConfigAttrib(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1785 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1786 EGL_SAMPLES, &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1787 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1788 _this->gl_config.multisamplesamples = attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1789 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1790 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1791 eglGetConfigAttrib(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1792 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1793 EGL_SAMPLE_BUFFERS, &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1794 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1795 _this->gl_config.multisamplebuffers = attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1796 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1797
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1798 /* Get back stencil and depth buffer sizes */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1799 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1800 eglGetConfigAttrib(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1801 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1802 EGL_DEPTH_SIZE, &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1803 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1804 _this->gl_config.depth_size = attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1805 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1806 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1807 eglGetConfigAttrib(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1808 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1809 EGL_STENCIL_SIZE, &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1810 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1811 _this->gl_config.stencil_size = attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1812 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1813
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1814 /* Under Photon OpenGL ES output can't be double buffered */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1815 _this->gl_config.double_buffer = 0;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1816
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1817 /* Check if current device is not the same as target */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1818 if (phdata->current_device_id != didata->device_id) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1819 /* Set target device as default for Pd and Pg functions */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1820 status = PdSetTargetDevice(NULL, phdata->rid[didata->device_id]);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1821 if (status != 0) {
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1822 /* Destroy OpenGL ES surface */
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1823 eglDestroySurface(phdata->egldisplay, wdata->gles_surface);
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1824 wdata->gles_surface=EGL_NO_SURFACE;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1825 gf_surface_free(wdata->gfsurface);
3399
f96615051c8c Working on fullscreen video modes support
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1826 wdata->gfsurface=NULL;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1827 eglDestroyContext(phdata->egldisplay, wdata->gles_context);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1828 wdata->gles_context = EGL_NO_CONTEXT;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1829 SDL_SetError("Photon: Can't set default target device\n");
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1830 return NULL;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1831 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1832 phdata->current_device_id = didata->device_id;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1833 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1834
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1835 wdata->phsurface = PdCreateOffscreenContextGF(wdata->gfsurface);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1836 if (wdata->phsurface == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1837 /* Destroy OpenGL ES surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1838 eglDestroySurface(phdata->egldisplay, wdata->gles_surface);
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1839 wdata->gles_surface=EGL_NO_SURFACE;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1840 gf_surface_free(wdata->gfsurface);
3399
f96615051c8c Working on fullscreen video modes support
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1841 wdata->gfsurface=NULL;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1842 eglDestroyContext(phdata->egldisplay, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1843 wdata->gles_context = EGL_NO_CONTEXT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1844 SDL_SetError("Photon: Can't bind GF surface to Photon\n");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1845 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1846 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1847
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1848 /* GL ES context was successfully created */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1849 return wdata->gles_context;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1850 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1851 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1852 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1853 #endif /* SDL_VIDEO_OPENGL_ES */
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1854 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1855
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1856 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1857 photon_gl_makecurrent(_THIS, SDL_Window * window, SDL_GLContext context)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1858 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1859 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1860 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1861 SDL_WindowData *wdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1862 EGLBoolean status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1863
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1864 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1865 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1866 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1867 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1868 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1869
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1870 if ((window == NULL) && (context == NULL)) {
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1871 /* Reset last used context and surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1872 phdata->lgles_surface=EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1873 phdata->lgles_context=EGL_NO_CONTEXT;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1874
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1875 /* Unset current context */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1876 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1877 eglMakeCurrent(phdata->egldisplay, EGL_NO_SURFACE, EGL_NO_SURFACE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1878 EGL_NO_CONTEXT);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1879 if (status != EGL_TRUE) {
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1880 /* Failed to set current GL ES context */
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1881 SDL_SetError("Photon: Can't empty current OpenGL ES context");
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1882 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1883 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1884 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1885 wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1886 if (wdata->gles_surface == EGL_NO_SURFACE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1887 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1888 ("Photon: OpenGL ES surface is not initialized for this window");
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1889 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1890 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1891 if (wdata->gles_context == EGL_NO_CONTEXT) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1892 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1893 ("Photon: OpenGL ES context is not initialized for this window");
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1894 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1895 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1896 if (wdata->gles_context != context) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1897 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1898 ("Photon: OpenGL ES context is not belong to this window");
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1899 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1900 }
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1901
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1902 /* Store last set surface and context */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1903 phdata->lgles_surface=wdata->gles_surface;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1904 phdata->lgles_context=wdata->gles_context;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1905
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1906 /* Set new current context */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1907 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1908 eglMakeCurrent(phdata->egldisplay, wdata->gles_surface,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1909 wdata->gles_surface, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1910 if (status != EGL_TRUE) {
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1911 /* Reset last used context and surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1912 phdata->lgles_surface=EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1913 phdata->lgles_context=EGL_NO_CONTEXT;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1914 /* Failed to set current GL ES context */
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1915 SDL_SetError("Photon: Can't set OpenGL ES context");
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1916 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1917 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1918 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1919
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1920 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1921 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1922 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1923 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1924 #endif /* SDL_VIDEO_OPENGL_ES */
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1925 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1926
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1927 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1928 photon_gl_setswapinterval(_THIS, int interval)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1929 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1930 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1931 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1932 EGLBoolean status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1933
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1934 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1935 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1936 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1937 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1938 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1939
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1940 /* Check if OpenGL ES connection has been initialized */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1941 if (phdata->egldisplay != EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1942 /* Set swap OpenGL ES interval */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1943 status = eglSwapInterval(phdata->egldisplay, interval);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1944 if (status == EGL_TRUE) {
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1945 /* Return success to upper level */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1946 phdata->swapinterval = interval;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1947 return 0;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1948 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1949 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1950
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1951 /* Failed to set swap interval */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1952 SDL_SetError("Photon: Cannot set swap interval");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1953 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1954 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1955 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1956 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1957 #endif /* SDL_VIDEO_OPENGL_ES */
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1958 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1959
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1960 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1961 photon_gl_getswapinterval(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1962 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1963 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1964 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1965
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1966 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1967 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1968 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1969 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1970 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1971
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1972 /* Return default swap interval value */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1973 return phdata->swapinterval;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1974 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1975 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1976 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1977 #endif /* SDL_VIDEO_OPENGL_ES */
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1978 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1979
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1980 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1981 photon_gl_swapwindow(_THIS, SDL_Window * window)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1982 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1983 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1984 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1985 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1986 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1987 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1988 PhRect_t dst_rect;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1989 PhRect_t src_rect;
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
1990 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1991
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1992 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1993 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1994 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1995 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1996 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1997
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1998 if (wdata->phsurface==NULL) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1999 SDL_SetError
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2000 ("Photon: Photon OpenGL ES surface is not initialized");
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2001 return;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2002 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2003
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2004 /* Many applications do not uses glFinish(), so we call it for them */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2005 glFinish();
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2006
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2007 /* Wait until OpenGL ES rendering is completed */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2008 eglWaitGL();
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2009
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2010 /* Wait for VSYNC manually, if it was enabled */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2011 if (phdata->swapinterval != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2012 /* Wait for VSYNC, we use GF function, since Photon requires */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2013 /* to enter to the Direct mode to call PgWaitVSync() */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2014 gf_display_wait_vsync(didata->display);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2015 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2016
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2017 /* Set blit area */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2018 dst_rect = *PtGetCanvas(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2019 src_rect.ul.x = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2020 src_rect.ul.y = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2021 src_rect.lr.x = window->w - 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2022 src_rect.lr.y = window->h - 1;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2023
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2024 /* Check if current device is not the same as target */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2025 if (phdata->current_device_id != didata->device_id) {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2026 /* Set target device as default for Pd and Pg functions */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2027 status = PdSetTargetDevice(NULL, phdata->rid[didata->device_id]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2028 if (status != 0) {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2029 SDL_SetError("Photon: Can't set default target device\n");
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2030 return;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2031 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2032 phdata->current_device_id = didata->device_id;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2033 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2034
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2035 /* Blit OpenGL ES pixmap surface directly to window region */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2036 PgFFlush(Ph_START_DRAW);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2037 PgSetRegionCx(PhDCGetCurrent(), PtWidgetRid(wdata->window));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2038 PgClearTranslationCx(PgGetGCCx(PhDCGetCurrent()));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2039 PgContextBlit(wdata->phsurface, &src_rect, NULL, &dst_rect);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2040 PgFFlush(Ph_DONE_DRAW);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2041 PgWaitHWIdle();
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2042
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2043 eglSwapBuffers(phdata->egldisplay, wdata->gles_surface);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2044 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2045 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2046 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2047 #endif /* SDL_VIDEO_OPENGL_ES */
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2048 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2049
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2050 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2051 photon_gl_deletecontext(_THIS, SDL_GLContext context)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2052 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2053 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2054 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2055 EGLBoolean status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2056
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2057 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2058 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2059 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2060 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2061 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2062
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2063 /* Check if OpenGL ES connection has been initialized */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2064 if (phdata->egldisplay != EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2065 if (context != EGL_NO_CONTEXT) {
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2066 /* Check if we are destroying current active context */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2067 if (phdata->lgles_context==context) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2068 /* Release current context */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2069 eglMakeCurrent(phdata->egldisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2070 phdata->lgles_context=EGL_NO_CONTEXT;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2071 phdata->lgles_surface=EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2072 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2073 status = eglDestroyContext(phdata->egldisplay, context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2074 if (status != EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2075 /* Error during OpenGL ES context destroying */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2076 SDL_SetError("Photon: OpenGL ES context destroy error");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2077 return;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2078 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2079 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2080 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2081
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2082 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2083 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2084 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2085 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2086 #endif /* SDL_VIDEO_OPENGL_ES */
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2087 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2088
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2089 /* Helper function, which re-creates surface, not an API */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2090 int photon_gl_recreatesurface(_THIS, SDL_Window * window, uint32_t width, uint32_t height)
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2091 {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2092 #if defined(SDL_VIDEO_OPENGL_ES)
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2093 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2094 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2095 SDL_DisplayData *didata =
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2096 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2097 SDL_bool makecurrent=SDL_FALSE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2098 int32_t gfstatus;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2099
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2100 /* Check if context has been initialized */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2101 if (wdata->gles_context == EGL_NO_CONTEXT) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2102 /* If no, abort surface re-creating */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2103 return -1;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2104 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2105
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2106 /* Check if last used surface the same as one which must be re-created */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2107 if (phdata->lgles_surface == wdata->gles_surface) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2108 makecurrent=SDL_TRUE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2109 /* Flush all current drawings */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2110 glFinish();
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2111 /* Wait until OpenGL ES rendering is completed */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2112 eglWaitGL();
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2113 /* Release current context */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2114 eglMakeCurrent(phdata->egldisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2115 phdata->lgles_surface=EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2116 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2117
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2118 /* Check if we need to destroy previous surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2119 if (wdata->gles_surface != EGL_NO_SURFACE) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2120 /* Destroy photon handle to GF surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2121 if (wdata->phsurface != NULL) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2122 PhDCRelease(wdata->phsurface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2123 wdata->phsurface=NULL;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2124 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2125
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2126 /* Destroy previous surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2127 eglDestroySurface(phdata->egldisplay, wdata->gles_surface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2128
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2129 /* Set surface to uninitialized */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2130 wdata->gles_surface = EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2131
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2132 if (wdata->gfsurface!=NULL) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2133 gf_surface_free(wdata->gfsurface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2134 wdata->gfsurface=NULL;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2135 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2136 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2137
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2138 /* Create new GF surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2139 gfstatus =
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2140 gf_surface_create(&wdata->gfsurface, phdata->gfdev, width,
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2141 height,
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2142 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2143 format), NULL,
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2144 GF_SURFACE_CREATE_2D_ACCESSIBLE |
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2145 GF_SURFACE_CREATE_3D_ACCESSIBLE |
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2146 GF_SURFACE_CREATE_SHAREABLE);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2147 if (gfstatus != GF_ERR_OK) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2148 SDL_SetError("Photon: Can't create GF 3D surface (%08X)", gfstatus);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2149 return -1;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2150 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2151
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2152 /* Create new pixmap 3D target surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2153 wdata->gles_surface =
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2154 eglCreatePixmapSurface(phdata->egldisplay,
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2155 wdata->gles_configs[wdata->gles_config],
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2156 wdata->gfsurface, NULL);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2157 if (wdata->gles_surface == EGL_NO_SURFACE) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2158 gf_surface_free(wdata->gfsurface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2159 wdata->gfsurface=NULL;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2160 SDL_SetError("Photon: Can't create EGL pixmap surface");
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2161 return -1;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2162 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2163
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2164 wdata->phsurface = PdCreateOffscreenContextGF(wdata->gfsurface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2165 if (wdata->phsurface == NULL) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2166 /* Destroy OpenGL ES surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2167 eglDestroySurface(phdata->egldisplay, wdata->gles_surface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2168 wdata->gles_surface=EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2169 gf_surface_free(wdata->gfsurface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2170 wdata->gfsurface=NULL;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2171 SDL_SetError("Photon: Can't bind GF surface to Photon\n");
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2172 return -1;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2173 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2174
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2175 /* Check if we need to set this surface and context as current */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2176 if (makecurrent == SDL_TRUE) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2177 return photon_gl_makecurrent(_this, window, wdata->gles_context);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2178 } else {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2179 return 0;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2180 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2181 #else
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2182 /* Do nothing, if OpenGL ES support is not compiled in */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2183 return 0;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2184 #endif /* SDL_VIDEO_OPENGL_ES */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2185 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2186
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2187 /*****************************************************************************/
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2188 /* SDL Event handling function */
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2189 /*****************************************************************************/
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2190 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2191 photon_pumpevents(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2192 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2193 uint8_t eventbuffer[SDL_VIDEO_PHOTON_EVENT_SIZE];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2194 PhEvent_t *event = (PhEvent_t *) eventbuffer;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2195 int32_t status;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2196 uint32_t finish = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2197 uint32_t it;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2198 SDL_Window *window;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2199 SDL_WindowData *wdata;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2200
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2201 do {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2202 status = PhEventPeek(event, SDL_VIDEO_PHOTON_EVENT_SIZE);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2203 switch (status) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2204 case Ph_RESIZE_MSG:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2205 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2206 SDL_SetError("Photon: Event size too much for buffer");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2207 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2208 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2209 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2210 case Ph_EVENT_MSG:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2211 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2212 /* Find a window, to which this handle destinated */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2213 status = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2214 for (it = 0; it < SDL_CurrentDisplay.num_windows; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2215 wdata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2216 (SDL_WindowData *) SDL_CurrentDisplay.windows[it].
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2217 driverdata;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2218
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2219 /* Find the proper window */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2220 if (wdata->window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2221 if (PtWidgetRid(wdata->window) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2222 event->collector.rid) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2223 window =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2224 (SDL_Window *) & SDL_CurrentDisplay.
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2225 windows[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2226 status = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2227 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2228 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2229 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2230 continue;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2231 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2232 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2233 if (status == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2234 window = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2235 wdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2236 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2237
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2238 /* Event is ready */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2239 switch (event->type) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2240 case Ph_EV_BOUNDARY:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2241 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2242 switch (event->subtype) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2243 case Ph_EV_PTR_ENTER:
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2244 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2245 /* Mouse cursor over handled window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2246 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2247 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2248 SDL_WINDOWEVENT_ENTER,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2249 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2250 SDL_SetMouseFocus(0, window->id);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2251 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2252 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2253 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2254 case Ph_EV_PTR_LEAVE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2255 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2256 /* Mouse cursor out of handled window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2257 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2258 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2259 SDL_WINDOWEVENT_LEAVE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2260 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2261 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2262 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2263 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2264 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2265 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2266 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2267 case Ph_EV_PTR_MOTION_BUTTON:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2268 case Ph_EV_PTR_MOTION_NOBUTTON:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2269 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2270 PhPointerEvent_t *pevent = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2271 PhRect_t *prects = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2272
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2273 /* Get event data */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2274 pevent = PhGetData(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2275 /* Get associated event rectangles */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2276 prects = PhGetRects(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2277 if ((pevent != NULL) && (prects != NULL)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2278 SDL_SendMouseMotion(0, 0, prects->ul.x,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2279 prects->ul.y, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2280 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2281 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2282 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2283 case Ph_EV_BUT_PRESS:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2284 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2285 /* Button press event */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2286 PhPointerEvent_t *pevent = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2287 uint32_t sdlbutton = 0x00000000;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2288
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2289 /* Get event data */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2290 pevent = PhGetData(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2291 if (pevent != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2292 for (it = 0; it < sizeof(pevent->buttons) * 8;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2293 it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2294 if ((pevent->buttons & (0x0001 << it)) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2295 (0x0001 << it)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2296 switch (it) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2297 case 0:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2298 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2299 sdlbutton = SDL_BUTTON_RIGHT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2300 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2301 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2302 case 1:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2303 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2304 sdlbutton = SDL_BUTTON_MIDDLE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2305 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2306 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2307 case 2:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2308 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2309 sdlbutton = SDL_BUTTON_LEFT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2310 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2311 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2312 default:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2313 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2314 sdlbutton = it + 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2315 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2316 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2317 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2318 SDL_SendMouseButton(0, SDL_PRESSED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2319 sdlbutton);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2320 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2321 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2322 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2323 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2324 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2325 case Ph_EV_BUT_RELEASE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2326 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2327 /* Button press event */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2328 PhPointerEvent_t *pevent = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2329 uint32_t sdlbutton = 0x00000000;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2330
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2331 /* Get event data */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2332 pevent = PhGetData(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2333 if (pevent != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2334 for (it = 0; it < sizeof(pevent->buttons) * 8;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2335 it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2336 if ((pevent->buttons & (0x0001 << it)) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2337 (0x0001 << it)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2338 switch (it) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2339 case 0:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2340 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2341 sdlbutton = SDL_BUTTON_RIGHT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2342 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2343 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2344 case 1:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2345 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2346 sdlbutton = SDL_BUTTON_MIDDLE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2347 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2348 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2349 case 2:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2350 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2351 sdlbutton = SDL_BUTTON_LEFT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2352 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2353 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2354 default:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2355 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2356 sdlbutton = it + 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2357 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2358 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2359 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2360 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2361 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2362 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2363
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2364 switch (event->subtype) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2365 case Ph_EV_RELEASE_REAL:
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2366 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2367 /* Real release button event */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2368 SDL_SendMouseButton(0, SDL_RELEASED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2369 sdlbutton);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2370 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2371 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2372 case Ph_EV_RELEASE_PHANTOM:
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2373 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2374 /* We will get phantom button release */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2375 /* event in case if it was unpressed */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2376 /* outside of window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2377 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2378 if ((window->
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2379 flags & SDL_WINDOW_MOUSE_FOCUS) !=
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2380 SDL_WINDOW_MOUSE_FOCUS) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2381 /* Send phantom button release */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2382 SDL_SendMouseButton(0, SDL_RELEASED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2383 sdlbutton);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2384 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2385 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2386 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2387 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2388 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2389 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2390 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2391 case Ph_EV_EXPOSE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2392 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2393 switch (event->subtype) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2394 case Ph_NORMAL_EXPOSE:
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2395 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2396 PhRect_t *rects = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2397
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2398 /* Get array of rectangles to be updated */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2399 rects = PhGetRects(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2400 if (rects == NULL) {
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2401 break;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2402 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2403
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2404 /* Check if expose come to one of the our windows */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2405 if ((wdata != NULL) && (window != NULL)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2406 /* Check if window uses OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2407 if (wdata->uses_gles == SDL_TRUE) {
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
2408 #if defined(SDL_VIDEO_OPENGL_ES)
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2409 /* Cycle through each rectangle */
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2410 for (it = 0; it < event->num_rects; it++) {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2411 /* Blit OpenGL ES pixmap surface directly to window region */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2412 PgFFlush(Ph_START_DRAW);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2413 PgSetRegionCx(PhDCGetCurrent(),
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2414 PtWidgetRid(wdata->
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2415 window));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2416 PgClearTranslationCx(PgGetGCCx
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2417 (PhDCGetCurrent
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2418 ()));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2419 PgContextBlit(wdata->phsurface,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2420 &rects[it], NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2421 &rects[it]);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2422 PgFFlush(Ph_DONE_DRAW);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2423 PgWaitHWIdle();
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2424 }
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
2425 #endif /* SDL_VIDEO_OPENGL_ES */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2426 } else {
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2427 /* Cycle through each rectangle */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2428 for (it = 0; it < event->num_rects;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2429 it++) {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2430 /* Blit 2D pixmap surface directly to window region */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2431 _photon_update_rectangles(window->renderer, &rects[it]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2432 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2433 PgFlush();
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2434 PgWaitHWIdle();
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2435 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2436 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2437
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2438 /* Flush all blittings */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2439 PgFlush();
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2440 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2441 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2442 case Ph_CAPTURE_EXPOSE:
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2443 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2444 /* Check if expose come to one of the our windows */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2445 if ((wdata != NULL) && (window != NULL)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2446 /* Check if window uses OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2447 if (wdata->uses_gles == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2448 PhRect_t dst_rect;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2449 PhRect_t src_rect;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2450
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2451 /* Set blit area */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2452 dst_rect =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2453 *PtGetCanvas(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2454 src_rect.ul.x = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2455 src_rect.ul.y = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2456 src_rect.lr.x = window->w - 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2457 src_rect.lr.y = window->h - 1;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2458
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
2459 #if defined(SDL_VIDEO_OPENGL_ES)
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2460 /* We need to redraw entire window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2461 PgFFlush(Ph_START_DRAW);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2462 PgSetRegionCx(PhDCGetCurrent(),
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2463 PtWidgetRid(wdata->
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2464 window));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2465 PgClearTranslationCx(PgGetGCCx
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2466 (PhDCGetCurrent
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2467 ()));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2468 PgContextBlit(wdata->phsurface,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2469 &src_rect, NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2470 &dst_rect);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2471 PgFFlush(Ph_DONE_DRAW);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2472 PgWaitHWIdle();
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
2473 #endif /* SDL_VIDEO_OPENGL_ES */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2474 } else {
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2475 PhRect_t rect;
3115
1102a3305928 Added handler for all window events.
Mike Gorchak <lestat@i.com.ua>
parents: 3108
diff changeset
2476
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2477 /* We need to redraw entire window */
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2478 rect.ul.x = 0;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2479 rect.ul.y = 0;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2480 rect.lr.x = window->w - 1;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2481 rect.lr.y = window->h - 1;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2482
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2483 /* Blit 2D pixmap surface directly to window region */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2484 PgFFlush(Ph_START_DRAW);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2485 _photon_update_rectangles(window->renderer, &rect);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2486 PgFFlush(Ph_DONE_DRAW);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2487 PgWaitHWIdle();
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2488 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2489 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2490 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2491 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2492 case Ph_GRAPHIC_EXPOSE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2493 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2494 /* TODO: What this event means ? */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2495 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2496 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2497 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2498 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2499 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2500 case Ph_EV_INFO:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2501 {
3387
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2502 switch (event->subtype)
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2503 {
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2504 case Ph_OFFSCREEN_INVALID:
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2505 {
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2506 uint32_t* type;
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2507
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2508 type = PhGetData(event);
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2509 switch (*type)
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2510 {
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2511 case Pg_VIDEO_MODE_SWITCHED:
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2512 case Pg_ENTERED_DIRECT:
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2513 case Pg_EXITED_DIRECT:
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2514 case Pg_DRIVER_STARTED:
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2515 {
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2516 /* TODO: */
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2517 /* We must tell the renderer, that it have */
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2518 /* to recreate all surfaces */
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2519 }
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2520 break;
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2521 default:
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2522 {
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2523 }
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2524 break;
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2525 }
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2526 }
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2527 break;
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2528 default:
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2529 break;
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
2530 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2531 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2532 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2533 case Ph_EV_KEY:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2534 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2535 PhKeyEvent_t *keyevent = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2536 SDL_scancode scancode = SDL_SCANCODE_UNKNOWN;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2537 SDL_bool pressed = SDL_FALSE;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2538
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2539 keyevent = PhGetData(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2540 if (keyevent == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2541 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2542 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2543
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2544 /* Check if key is repeated */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2545 if ((keyevent->key_flags & Pk_KF_Key_Repeat) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2546 Pk_KF_Key_Repeat) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2547 /* Ignore such events */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2548 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2549 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2550
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2551 /* Check if key has its own scancode */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2552 if ((keyevent->key_flags & Pk_KF_Scan_Valid) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2553 Pk_KF_Scan_Valid) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2554 if ((keyevent->key_flags & Pk_KF_Key_Down) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2555 Pk_KF_Key_Down) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2556 pressed = SDL_TRUE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2557 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2558 pressed = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2559 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2560 scancode =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2561 photon_to_sdl_keymap(keyevent->key_scan);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2562
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2563 /* Add details for the pressed key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2564 if ((keyevent->key_flags & Pk_KF_Cap_Valid) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2565 Pk_KF_Cap_Valid) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2566 switch (keyevent->key_cap) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2567 case Pk_Hyper_R: /* Right windows flag key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2568 scancode = SDL_SCANCODE_RGUI;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2569 break;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2570 case Pk_Control_R: /* Right Ctrl key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2571 scancode = SDL_SCANCODE_RCTRL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2572 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2573 case Pk_Alt_R: /* Right Alt key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2574 scancode = SDL_SCANCODE_RALT;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2575 break;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2576 case Pk_Up: /* Up key but with invalid scan */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2577 if (scancode != SDL_SCANCODE_UP) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2578 /* This is a mouse wheel event */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2579 SDL_SendMouseWheel(0, 0, 1);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2580 return;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2581 }
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2582 break;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2583 case Pk_KP_8: /* Up arrow or 8 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2584 scancode = SDL_SCANCODE_KP_8;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2585 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2586 case Pk_Down: /* Down key but with invalid scan */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2587 if (scancode != SDL_SCANCODE_DOWN) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2588 /* This is a mouse wheel event */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2589 SDL_SendMouseWheel(0, 0, -1);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2590 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2591 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2592 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2593 case Pk_KP_2: /* Down arrow or 2 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2594 scancode = SDL_SCANCODE_KP_2;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2595 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2596 case Pk_Left: /* Left arrow key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2597 scancode = SDL_SCANCODE_LEFT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2598 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2599 case Pk_KP_4: /* Left arrow or 4 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2600 scancode = SDL_SCANCODE_KP_4;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2601 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2602 case Pk_Right: /* Right arrow key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2603 scancode = SDL_SCANCODE_RIGHT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2604 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2605 case Pk_KP_6: /* Right arrow or 6 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2606 scancode = SDL_SCANCODE_KP_6;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2607 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2608 case Pk_Insert: /* Insert key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2609 scancode = SDL_SCANCODE_INSERT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2610 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2611 case Pk_KP_0: /* Insert or 0 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2612 scancode = SDL_SCANCODE_KP_0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2613 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2614 case Pk_Home: /* Home key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2615 scancode = SDL_SCANCODE_HOME;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2616 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2617 case Pk_KP_7: /* Home or 7 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2618 scancode = SDL_SCANCODE_KP_7;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2619 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2620 case Pk_Pg_Up: /* PageUp key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2621 scancode = SDL_SCANCODE_PAGEUP;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2622 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2623 case Pk_KP_9: /* PgUp or 9 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2624 scancode = SDL_SCANCODE_KP_9;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2625 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2626 case Pk_Delete: /* Delete key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2627 scancode = SDL_SCANCODE_DELETE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2628 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2629 case Pk_KP_Decimal: /* Del or . on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2630 scancode = SDL_SCANCODE_KP_PERIOD;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2631 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2632 case Pk_End: /* End key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2633 scancode = SDL_SCANCODE_END;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2634 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2635 case Pk_KP_1: /* End or 1 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2636 scancode = SDL_SCANCODE_KP_1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2637 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2638 case Pk_Pg_Down: /* PageDown key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2639 scancode = SDL_SCANCODE_PAGEDOWN;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2640 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2641 case Pk_KP_3: /* PgDn or 3 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2642 scancode = SDL_SCANCODE_KP_3;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2643 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2644 case Pk_KP_5: /* 5 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2645 scancode = SDL_SCANCODE_KP_5;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2646 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2647 case Pk_KP_Enter:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2648 scancode = SDL_SCANCODE_KP_ENTER;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2649 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2650 case Pk_KP_Add:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2651 scancode = SDL_SCANCODE_KP_PLUS;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2652 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2653 case Pk_KP_Subtract:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2654 scancode = SDL_SCANCODE_KP_MINUS;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2655 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2656 case Pk_KP_Multiply:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2657 scancode = SDL_SCANCODE_KP_MULTIPLY;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2658 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2659 case Pk_KP_Divide:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2660 scancode = SDL_SCANCODE_KP_DIVIDE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2661 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2662 case Pk_Pause:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2663 scancode = SDL_SCANCODE_PAUSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2664 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2665 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2666 }
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2667
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2668 /* Finally check if scancode has been decoded */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2669 if (scancode == SDL_SCANCODE_UNKNOWN) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2670 /* Something was pressed, which is not supported */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2671 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2672 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2673
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2674 /* Report pressed/released key to SDL */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2675 if (pressed == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2676 SDL_SendKeyboardKey(0, SDL_PRESSED, scancode);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2677 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2678 SDL_SendKeyboardKey(0, SDL_RELEASED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2679 scancode);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2680 }
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2681
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2682 /* Photon doesn't send a release event for PrnScr key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2683 if ((scancode == SDL_SCANCODE_PRINTSCREEN)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2684 && (pressed)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2685 SDL_SendKeyboardKey(0, SDL_RELEASED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2686 scancode);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2687 }
3465
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2688
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2689 }
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2690
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2691 /* Handle UTF-8 text input if requested by caller */
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2692 if (SDL_EventState(SDL_TEXTINPUT, SDL_QUERY))
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2693 {
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2694 char text[5];
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2695
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2696 SDL_memset(text, 0x00, 5);
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2697 if (PhKeyToMb(text, keyevent)!=-1)
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2698 {
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2699 SDL_SendKeyboardText(0, text);
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2700 }
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2701 else
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2702 {
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2703 /* Just do nothing if it is not a UTF-8 character */
0cbfec87e4f1 Support for UTF-8 text input has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3411
diff changeset
2704 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2705 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2706 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2707 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2708 case Ph_EV_SERVICE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2709 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2710 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2711 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2712 case Ph_EV_SYSTEM:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2713 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2714 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2715 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2716 case Ph_EV_WM:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2717 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2718 PhWindowEvent_t *wmevent = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2719
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2720 /* Get associated event data */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2721 wmevent = PhGetData(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2722 if (wmevent == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2723 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2724 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2725
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2726 switch (wmevent->event_f) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2727 case Ph_WM_CLOSE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2728 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2729 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2730 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2731 SDL_WINDOWEVENT_CLOSE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2732 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2733 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2734 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2735 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2736 case Ph_WM_FOCUS:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2737 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2738 if (wmevent->event_state ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2739 Ph_WM_EVSTATE_FOCUS) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2740 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2741 PhRegion_t wregion;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2742
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2743 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2744 SDL_WINDOWEVENT_FOCUS_GAINED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2745 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2746 SDL_SetKeyboardFocus(0, window->id);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2747
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2748 /* Set window region sensible to mouse motion events */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2749 PhRegionQuery(PtWidgetRid
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2750 (wdata->window),
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2751 &wregion, NULL, NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2752 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2753 wregion.events_sense |=
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2754 Ph_EV_PTR_MOTION_BUTTON |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2755 Ph_EV_PTR_MOTION_NOBUTTON;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2756 PhRegionChange(Ph_REGION_EV_SENSE, 0,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2757 &wregion, NULL, NULL);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2758
3411
d15a4daa4a58 Fixes in GLES configuration selection. Support for an old QNX 6.3.2.
Mike Gorchak <lestat@i.com.ua>
parents: 3399
diff changeset
2759 /* If window got a focus, then it is visible */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2760 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2761 SDL_WINDOWEVENT_SHOWN,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2762 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2763 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2764 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2765 if (wmevent->event_state ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2766 Ph_WM_EVSTATE_FOCUSLOST) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2767 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2768 PhRegion_t wregion;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2769
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2770 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2771 SDL_WINDOWEVENT_FOCUS_LOST,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2772 0, 0);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2773
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2774 /* Set window region ignore mouse motion events */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2775 PhRegionQuery(PtWidgetRid
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2776 (wdata->window),
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2777 &wregion, NULL, NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2778 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2779 wregion.events_sense &=
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2780 ~(Ph_EV_PTR_MOTION_BUTTON |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2781 Ph_EV_PTR_MOTION_NOBUTTON);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2782 PhRegionChange(Ph_REGION_EV_SENSE, 0,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2783 &wregion, NULL, NULL);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2784 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2785 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2786 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2787 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2788 case Ph_WM_MOVE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2789 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2790 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2791 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2792 SDL_WINDOWEVENT_MOVED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2793 wmevent->pos.x,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2794 wmevent->pos.y);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2795 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2796 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2797 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2798 case Ph_WM_RESIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2799 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2800 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2801 /* Set new window position after resize */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2802 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2803 SDL_WINDOWEVENT_MOVED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2804 wmevent->pos.x,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2805 wmevent->pos.y);
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2806
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2807 /* Check if this window uses OpenGL ES */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2808 if (wdata->uses_gles == SDL_TRUE) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2809 /* If so, recreate surface with new dimensions */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2810 photon_gl_recreatesurface(_this, window, wmevent->size.w, wmevent->size.h);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2811 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2812
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2813 /* Set new window size after resize */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2814 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2815 SDL_WINDOWEVENT_RESIZED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2816 wmevent->size.w,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2817 wmevent->size.h);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2818 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2819 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2820 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2821 case Ph_WM_HIDE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2822 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2823 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2824 /* Send new window state: minimized */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2825 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2826 SDL_WINDOWEVENT_MINIMIZED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2827 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2828 /* In case window is minimized, then it is hidden */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2829 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2830 SDL_WINDOWEVENT_HIDDEN,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2831 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2832 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2833 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2834 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2835 case Ph_WM_MAX:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2836 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2837 if (window != NULL) {
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2838 if ((window->flags & SDL_WINDOW_RESIZABLE)==SDL_WINDOW_RESIZABLE)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2839 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2840 SDL_SendWindowEvent(window->id,
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2841 SDL_WINDOWEVENT_MAXIMIZED,
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2842 0, 0);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2843 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2844 else
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2845 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2846 /* otherwise ignor the resize events */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2847 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2848 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2849 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2850 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2851 case Ph_WM_RESTORE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2852 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2853 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2854 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2855 SDL_WINDOWEVENT_RESTORED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2856 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2857 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2858 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2859 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2860 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2861 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2862 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2863 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2864 PtEventHandler(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2865 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2866 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2867 case 0:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2868 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2869 /* All events are read */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2870 finish = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2871 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2872 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2873 case -1:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2874 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2875 /* Error occured in event reading */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2876 SDL_SetError("Photon: Can't read event");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2877 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2878 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2879 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2880 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2881 if (finish != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2882 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2883 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2884 } while (1);
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2885 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2886
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2887 /*****************************************************************************/
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2888 /* SDL screen saver related functions */
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2889 /*****************************************************************************/
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2890 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2891 photon_suspendscreensaver(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2892 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2893 /* There is no screensaver in pure console, it may exist when running */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2894 /* GF under Photon, but I do not know, how to disable screensaver */
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2895 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2896
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
2897 /* vi: set ts=4 sw=4 expandtab: */