annotate src/video/photon/SDL_photon.c @ 3417:64a60c5d502e

Automatically initialize the video system and create a renderer to simplify use.
author Sam Lantinga <slouken@libsdl.org>
date Wed, 28 Oct 2009 06:04:07 +0000
parents d15a4daa4a58
children 0cbfec87e4f1
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 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2688 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2689 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2690 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2691 case Ph_EV_SERVICE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2692 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2693 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2694 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2695 case Ph_EV_SYSTEM:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2696 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2697 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2698 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2699 case Ph_EV_WM:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2700 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2701 PhWindowEvent_t *wmevent = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2702
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2703 /* Get associated event data */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2704 wmevent = PhGetData(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2705 if (wmevent == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2706 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2707 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2708
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2709 switch (wmevent->event_f) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2710 case Ph_WM_CLOSE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2711 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2712 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2713 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2714 SDL_WINDOWEVENT_CLOSE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2715 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2716 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2717 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2718 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2719 case Ph_WM_FOCUS:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2720 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2721 if (wmevent->event_state ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2722 Ph_WM_EVSTATE_FOCUS) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2723 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2724 PhRegion_t wregion;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2725
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2726 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2727 SDL_WINDOWEVENT_FOCUS_GAINED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2728 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2729 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
2730
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2731 /* Set window region sensible to mouse motion events */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2732 PhRegionQuery(PtWidgetRid
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2733 (wdata->window),
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2734 &wregion, NULL, NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2735 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2736 wregion.events_sense |=
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2737 Ph_EV_PTR_MOTION_BUTTON |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2738 Ph_EV_PTR_MOTION_NOBUTTON;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2739 PhRegionChange(Ph_REGION_EV_SENSE, 0,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2740 &wregion, NULL, NULL);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2741
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
2742 /* If window got a focus, then it is visible */
3139
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_SHOWN,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2745 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2746 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2747 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2748 if (wmevent->event_state ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2749 Ph_WM_EVSTATE_FOCUSLOST) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2750 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2751 PhRegion_t wregion;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2752
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2753 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2754 SDL_WINDOWEVENT_FOCUS_LOST,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2755 0, 0);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2756
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2757 /* Set window region ignore mouse motion events */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2758 PhRegionQuery(PtWidgetRid
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2759 (wdata->window),
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2760 &wregion, NULL, NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2761 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2762 wregion.events_sense &=
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2763 ~(Ph_EV_PTR_MOTION_BUTTON |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2764 Ph_EV_PTR_MOTION_NOBUTTON);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2765 PhRegionChange(Ph_REGION_EV_SENSE, 0,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2766 &wregion, NULL, NULL);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2767 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2768 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2769 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2770 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2771 case Ph_WM_MOVE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2772 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2773 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2774 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2775 SDL_WINDOWEVENT_MOVED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2776 wmevent->pos.x,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2777 wmevent->pos.y);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2778 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2779 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2780 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2781 case Ph_WM_RESIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2782 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2783 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2784 /* Set new window position after resize */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2785 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2786 SDL_WINDOWEVENT_MOVED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2787 wmevent->pos.x,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2788 wmevent->pos.y);
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2789
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2790 /* 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
2791 if (wdata->uses_gles == SDL_TRUE) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2792 /* 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
2793 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
2794 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2795
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2796 /* Set new window size after resize */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2797 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2798 SDL_WINDOWEVENT_RESIZED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2799 wmevent->size.w,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2800 wmevent->size.h);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2801 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2802 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2803 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2804 case Ph_WM_HIDE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2805 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2806 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2807 /* Send new window state: minimized */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2808 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2809 SDL_WINDOWEVENT_MINIMIZED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2810 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2811 /* In case window is minimized, then it is hidden */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2812 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2813 SDL_WINDOWEVENT_HIDDEN,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2814 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2815 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2816 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2817 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2818 case Ph_WM_MAX:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2819 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2820 if (window != NULL) {
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2821 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
2822 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2823 SDL_SendWindowEvent(window->id,
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2824 SDL_WINDOWEVENT_MAXIMIZED,
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2825 0, 0);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2826 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2827 else
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2828 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2829 /* otherwise ignor the resize events */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3193
diff changeset
2830 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2831 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2832 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2833 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2834 case Ph_WM_RESTORE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2835 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2836 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2837 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2838 SDL_WINDOWEVENT_RESTORED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2839 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2840 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2841 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2842 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2843 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2844 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2845 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2846 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2847 PtEventHandler(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2848 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2849 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2850 case 0:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2851 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2852 /* All events are read */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2853 finish = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2854 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2855 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2856 case -1:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2857 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2858 /* Error occured in event reading */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2859 SDL_SetError("Photon: Can't read event");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2860 return;
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 if (finish != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2865 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2866 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2867 } while (1);
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2868 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2869
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2870 /*****************************************************************************/
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2871 /* SDL screen saver related functions */
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2872 /*****************************************************************************/
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2873 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2874 photon_suspendscreensaver(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2875 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2876 /* There is no screensaver in pure console, it may exist when running */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2877 /* 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
2878 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2879
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
2880 /* vi: set ts=4 sw=4 expandtab: */