annotate src/video/photon/SDL_photon.c @ 3235:d35b649858e0

David Carre to Sam Hello sam, me again. I'v fixed another bug in the pandora code, it's on the no-X videodriver, i forgot to add some code to destroy the window so it was impossible to reload SDL inside the same application (eglTerminate). You'll find the svn diff attached. See you, David.
author Sam Lantinga <slouken@libsdl.org>
date Tue, 11 Aug 2009 13:45:01 +0000
parents 64e4442676a6
children dd105b317335
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
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
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
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
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 ,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
140 /* VESA unaccelerated gfx driver (devg-vesa.so) */
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 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
158 int 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;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
197 int status;
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 */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
331 phdata->swapinterval = 0;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
332
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
333 for (it = 0; it < phdata->avail_rids; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
334 didata = (SDL_DisplayData *) SDL_calloc(1, sizeof(SDL_DisplayData));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
335 if (didata == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
336 /* memory allocation error */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
337 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
338 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
339 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
340
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
341 /* Allocate two cursors with SDL_VIDEO_PHOTON_MAX_CURSOR_SIZE size */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
342 /* and 128 bytes of spare place */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
343 didata->cursor_size =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
344 ((SDL_VIDEO_PHOTON_MAX_CURSOR_SIZE * 4) >> 3) + 128;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
345 didata->cursor = (PhCursorDef_t *) SDL_calloc(1, didata->cursor_size);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
346 if (didata->cursor == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
347 /* memory allocation error */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
348 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
349 SDL_free(didata);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
350 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
351 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
352
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
353 /* Initialize GF in case of OpenGL ES support is compiled in */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
354 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
355 /* TODO: add real device detection versus multiple heads */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
356 if (phdata->gfinitialized == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
357 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
358 gf_display_attach(&didata->display, phdata->gfdev, it,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
359 &didata->display_info);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
360 if (status != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
361 /* Just shutdown GF, do not fail */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
362 gf_dev_detach(phdata->gfdev);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
363 phdata->gfinitialized = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
364 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
365 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
366 #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
367
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
368 /* Check if current device is not the same as target */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
369 if (phdata->current_device_id != it) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
370 /* Set target device as default for Pd and Pg functions */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
371 status = PdSetTargetDevice(NULL, phdata->rid[it]);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
372 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
373 SDL_SetError("Photon: Can't set default target device\n");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
374 SDL_free(didata->cursor);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
375 SDL_free(didata);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
376 return -1;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
377 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
378 phdata->current_device_id = it;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
379 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
380
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
381 /* Store device id */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
382 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
383
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
384 /* Query photon about graphics hardware caps and current video mode */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
385 status = PgGetGraphicsHWCaps(&hwcaps);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
386 if (status != 0) {
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
387 PhRect_t extent;
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
388 PdOffscreenContext_t* curctx;
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
389
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
390 /* 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
391 /* 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
392 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
393 if (status != 0) {
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
394 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
395 SDL_free(didata->cursor);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
396 SDL_free(didata);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
397 return -1;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
398 }
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
399 modeinfo.width=extent.lr.x+1;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
400 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
401 /* 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
402 hwcaps.current_rrate=60;
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
403 /* 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
404 hwcaps.chip_name[0]=0x00;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
405
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
406 /* 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
407 /* displayed on the screen */
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
408 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
409 if (curctx==NULL)
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
410 {
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
411 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
412 SDL_free(didata->cursor);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
413 SDL_free(didata);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
414 return -1;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
415 }
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
416 /* Retrieve current bpp */
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
417 modeinfo.type=curctx->format;
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
418 PhDCRelease(curctx);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
419 } else {
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
420 /* Get current video mode details */
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
421 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
422 if (status != 0) {
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
423 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
424 SDL_free(didata->cursor);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
425 SDL_free(didata);
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
426 return -1;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
427 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
428 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
429
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
430 /* Setup current desktop mode for SDL */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
431 SDL_zero(current_mode);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
432 current_mode.w = modeinfo.width;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
433 current_mode.h = modeinfo.height;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
434 current_mode.refresh_rate = hwcaps.current_rrate;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
435 current_mode.format = photon_image_to_sdl_pixelformat(modeinfo.type);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
436 current_mode.driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
437
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
438 /* Copy device name */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
439 SDL_strlcpy(didata->description, hwcaps.chip_name,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
440 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
441
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
442 /* Search device capabilities and possible workarounds */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
443 jt = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
444 do {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
445 if (photon_devicename[jt].name == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
446 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
447 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
448 if (SDL_strncmp
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
449 (photon_devicename[jt].name, didata->description,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
450 SDL_strlen(photon_devicename[jt].name)) == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
451 didata->caps = photon_devicename[jt].caps;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
452 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
453 jt++;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
454 } while (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 /* Initialize display structure */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
457 SDL_zero(display);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
458 display.desktop_mode = current_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
459 display.current_mode = current_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
460 display.driverdata = didata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
461 didata->current_mode = current_mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
462 SDL_AddVideoDisplay(&display);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
463
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
464 /* Check for environment variables which could override some SDL settings */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
465 didata->custom_refresh = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
466 override = SDL_getenv("SDL_VIDEO_PHOTON_REFRESH_RATE");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
467 if (override != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
468 if (SDL_sscanf(override, "%u", &didata->custom_refresh) != 1) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
469 didata->custom_refresh = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
470 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
471 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
472 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
473
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
474 /* Add photon input devices */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
475 status = photon_addinputdevices(_this);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
476 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
477 /* SDL error is set by photon_addinputdevices() function */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
478 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
479 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
480
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
481 /* Add photon renderer to SDL */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
482 photon_addrenderdriver(_this);
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
483
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
484 /* video has been initialized successfully */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
485 return 1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
486 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
487
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
488 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
489 photon_videoquit(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
490 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
491 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
492 SDL_DisplayData *didata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
493 uint32_t it;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
494
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
495 /* SDL will restore our desktop mode on exit */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
496 for (it = 0; it < _this->num_displays; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
497 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
498
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
499 if (didata->cursor != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
500 SDL_free(didata->cursor);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
501 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
502 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
503 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
504 /* Detach GF display */
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
505 gf_display_detach(didata->display);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
506 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
507 #endif /* SDL_VIDEO_OPENGL_ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
508 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
509 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
510
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
511 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
512 photon_getdisplaymodes(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
513 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
514 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
515 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
516 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
517 SDL_DisplayMode mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
518 PgVideoModes_t modes;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
519 PgVideoModeInfo_t modeinfo;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
520 int32_t status;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
521 uint32_t it;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
522 uint32_t jt;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
523
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
524 /* Check if current device is not the same as target */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
525 if (phdata->current_device_id != didata->device_id) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
526 /* Set target device as default for Pd and Pg functions */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
527 status = PdSetTargetDevice(NULL, phdata->rid[didata->device_id]);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
528 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
529 SDL_SetError("Photon: Can't set default target device\n");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
530 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
531 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
532 phdata->current_device_id = didata->device_id;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
533 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
534
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
535 /* Get array of available video modes */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
536 status = PgGetVideoModeList(&modes);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
537 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
538 SDL_SetError("Photon: Can't get video mode list");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
539 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
540 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
541
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
542 for (it = 0; it < modes.num_modes; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
543 status = PgGetVideoModeInfo(modes.modes[it], &modeinfo);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
544 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
545 /* Maybe something wrong with this particular mode, skip it */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
546 continue;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
547 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
548
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
549 jt = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
550 do {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
551 if (modeinfo.refresh_rates[jt] != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
552 mode.w = modeinfo.width;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
553 mode.h = modeinfo.height;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
554 mode.refresh_rate = modeinfo.refresh_rates[jt];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
555 mode.format = photon_image_to_sdl_pixelformat(modeinfo.type);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
556 mode.driverdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
557 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
558
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
559 /* 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
560 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
561 mode.w = modeinfo.width;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
562 mode.h = modeinfo.height;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
563 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
564 mode.format = SDL_PIXELFORMAT_RGB888;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
565 mode.driverdata = NULL;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
566 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
567 }
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
568
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
569 /* 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
570 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
571 mode.w = modeinfo.width;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
572 mode.h = modeinfo.height;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
573 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
574 mode.format = SDL_PIXELFORMAT_RGB555;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
575 mode.driverdata = NULL;
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
576 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
577 }
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
578
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
579 jt++;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
580 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
581 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
582 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
583 } while (1);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
584 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
585 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
586
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
587 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
588 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
589 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
590 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
591 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
592 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
593 PgVideoModes_t modes;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
594 PgVideoModeInfo_t modeinfo;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
595 PgDisplaySettings_t modesettings;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
596 uint32_t refresh_rate = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
597 int32_t status;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
598 uint32_t it;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
599
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
600 /* Check if current device is not the same as target */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
601 if (phdata->current_device_id != didata->device_id) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
602 /* Set target device as default for Pd and Pg functions */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
603 status = PdSetTargetDevice(NULL, phdata->rid[didata->device_id]);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
604 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
605 SDL_SetError("Photon: Can't set default target device\n");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
606 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
607 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
608 phdata->current_device_id = didata->device_id;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
609 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
610
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
611 /* Get array of available video modes */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
612 status = PgGetVideoModeList(&modes);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
613 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
614 SDL_SetError("Photon: Can't get video mode list");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
615 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
616 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
617
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
618 /* Current display dimension and bpp are no more valid */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
619 didata->current_mode.format = SDL_PIXELFORMAT_UNKNOWN;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
620 didata->current_mode.w = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
621 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
622
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
623 /* Check if custom refresh rate requested */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
624 if (didata->custom_refresh != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
625 refresh_rate = didata->custom_refresh;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
626 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
627 refresh_rate = mode->refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
628 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
629
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
630 /* Check if SDL GF driver needs to find appropriate refresh rate itself */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
631 if (refresh_rate == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
632 SDL_DisplayMode tempmode;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
633
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
634 /* Clear display mode structure */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
635 SDL_memset(&tempmode, 0x00, sizeof(SDL_DisplayMode));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
636 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
637
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
638 /* Check if window width and height matches one of our modes */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
639 for (it = 0; it < SDL_CurrentDisplay.num_display_modes; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
640 if ((SDL_CurrentDisplay.display_modes[it].w == mode->w) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
641 (SDL_CurrentDisplay.display_modes[it].h == mode->h) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
642 (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
643 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
644 /* Find the lowest refresh rate available */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
645 if (tempmode.refresh_rate >
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
646 SDL_CurrentDisplay.display_modes[it].refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
647 tempmode = SDL_CurrentDisplay.display_modes[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
648 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
649 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
650 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
651 if (tempmode.refresh_rate != 0x0000FFFF) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
652 refresh_rate = tempmode.refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
653 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
654 /* Let video driver decide what to do with this */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
655 refresh_rate = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
656 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
657 }
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 /* Check if SDL GF driver needs to check custom refresh rate */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
660 if (didata->custom_refresh != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
661 SDL_DisplayMode tempmode;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
662
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
663 /* Clear display mode structure */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
664 SDL_memset(&tempmode, 0x00, sizeof(SDL_DisplayMode));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
665 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
666
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
667 /* Check if window width and height matches one of our modes */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
668 for (it = 0; it < SDL_CurrentDisplay.num_display_modes; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
669 if ((SDL_CurrentDisplay.display_modes[it].w == mode->w) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
670 (SDL_CurrentDisplay.display_modes[it].h == mode->h) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
671 (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
672 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
673 /* Find the lowest refresh rate available */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
674 if (tempmode.refresh_rate >
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
675 SDL_CurrentDisplay.display_modes[it].refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
676 tempmode = SDL_CurrentDisplay.display_modes[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
677 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
678
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
679 /* Check if requested refresh rate found */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
680 if (refresh_rate ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
681 SDL_CurrentDisplay.display_modes[it].refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
682 tempmode = SDL_CurrentDisplay.display_modes[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
683 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
684 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
685 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
686 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
687 if (tempmode.refresh_rate != 0x0000FFFF) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
688 refresh_rate = tempmode.refresh_rate;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
689 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
690 /* Let video driver decide what to do with this */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
691 refresh_rate = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
692 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
693 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
694
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
695 /* Find photon's video mode number */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
696 for (it = 0; it < modes.num_modes; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
697 uint32_t jt;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
698 uint32_t foundrefresh;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
699
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
700 /* Get current video mode details */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
701 status = PgGetVideoModeInfo(modes.modes[it], &modeinfo);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
702 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
703 /* Maybe something wrong with this particular mode, skip it */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
704 continue;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
705 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
706 if ((modeinfo.width == mode->w) && (modeinfo.height == mode->h) &&
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
707 (modeinfo.type == photon_sdl_to_image_pixelformat(mode->format)))
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
708 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
709 /* Mode is found, find requested refresh rate, this case is for */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
710 /* video drivers, which provide non-generic video modes. */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
711 jt = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
712 foundrefresh = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
713 do {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
714 if (modeinfo.refresh_rates[jt] != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
715 if (modeinfo.refresh_rates[jt] == refresh_rate) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
716 foundrefresh = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
717 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
718 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
719 jt++;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
720 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
721 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
722 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
723 } while (1);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
724 if (foundrefresh != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
725 break;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
726 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
727 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
728 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
729
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
730 /* Check if video mode has not been found */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
731 if (it == modes.num_modes) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
732 SDL_SetError("Photon: Can't find appropriate video mode");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
733 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
734 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
735
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
736 /* Fill mode settings */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
737 modesettings.flags = 0x00000000;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
738 modesettings.mode = modes.modes[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
739 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
740
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
741 /* Finally set new video mode */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
742 status = PgSetVideoMode(&modesettings);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
743 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
744 SDL_SetError("Photon: Can't set new video mode");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
745 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
746 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
747
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
748 /* Store new video mode parameters */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
749 didata->current_mode = *mode;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
750 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
751
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
752 return 0;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
753 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
754
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
755 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
756 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
757 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
758 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
759 (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
760
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
761 /* Setting display palette operation has been failed */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
762 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
763 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
764
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
765 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
766 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
767 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
768 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
769 (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
770
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
771 /* Getting display palette operation has been failed */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
772 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
773 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
774
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
775 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
776 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
777 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
778 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
779 (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
780
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
781 /* Setting display gamma ramp operation has been failed */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
782 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
783 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
784
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
785 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
786 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
787 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
788 /* Getting display gamma ramp operation has been failed */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
789 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
790 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
791
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
792 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
793 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
794 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
795 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
796 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
797 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
798 SDL_WindowData *wdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
799 PhDim_t winsize;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
800 PhPoint_t winpos;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
801 PtArg_t winargs[32];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
802 uint32_t winargc = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
803 int32_t status;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
804 PhRegion_t wregion;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
805
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
806 /* Allocate window internal data */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
807 wdata = (SDL_WindowData *) SDL_calloc(1, sizeof(SDL_WindowData));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
808 if (wdata == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
809 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
810 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
811 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
812
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
813 /* Setup driver data for this window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
814 window->driverdata = wdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
815
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
816 /* Set initial window title */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
817 if (window->title != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
818 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_TITLE, window->title, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
819 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
820 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_TITLE, "", 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
821 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
822
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
823 /* TODO: handle SDL_WINDOW_INPUT_GRABBED */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
824
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
825 /* Disable default window filling on redraw */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
826 PtSetArg(&winargs[winargc++], Pt_ARG_BASIC_FLAGS, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
827 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
828
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
829 /* Reset default managed flags to disabled state */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
830 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_FALSE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
831 Ph_WM_APP_DEF_MANAGED);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
832 /* Set which events we will not handle, let WM to handle them */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
833 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
834 Ph_WM_BACKDROP | Ph_WM_TOFRONT | Ph_WM_COLLAPSE | Ph_WM_FFRONT |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
835 Ph_WM_FOCUS | Ph_WM_HELP | Ph_WM_HIDE | Ph_WM_MAX |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
836 Ph_WM_MENU | Ph_WM_MOVE | Ph_WM_RESTORE | Ph_WM_TASKBAR |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
837 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
838
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
839 /* Reset default notify events to disable */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
840 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_NOTIFY_FLAGS, Pt_FALSE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
841 Ph_WM_RESIZE | Ph_WM_CLOSE | Ph_WM_HELP);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
842 /* Set which events we will handle */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
843 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_NOTIFY_FLAGS, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
844 Ph_WM_CLOSE | Ph_WM_COLLAPSE | Ph_WM_FOCUS | Ph_WM_MAX |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
845 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
846
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
847 /* Borderless window can't be resizeable */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
848 if ((window->flags & SDL_WINDOW_BORDERLESS) == SDL_WINDOW_BORDERLESS) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
849 window->flags &= ~(SDL_WINDOW_RESIZABLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
850 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
851
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
852 /* Reset all default decorations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
853 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_RENDER_FLAGS, Pt_FALSE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
854 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
855
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
856 /* Fullscreen window has its own decorations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
857 if ((window->flags & SDL_WINDOW_FULLSCREEN) == SDL_WINDOW_FULLSCREEN) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
858 window->flags |= SDL_WINDOW_BORDERLESS;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
859 window->flags &= ~(SDL_WINDOW_RESIZABLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
860 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_RENDER_FLAGS, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
861 Ph_WM_RENDER_CLOSE | Ph_WM_RENDER_TITLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
862 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
863 uint32_t decorations =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
864 Ph_WM_RENDER_CLOSE | Ph_WM_RENDER_MENU | Ph_WM_RENDER_MIN |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
865 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
866
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
867 if ((window->flags & SDL_WINDOW_RESIZABLE) == SDL_WINDOW_RESIZABLE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
868 decorations |=
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
869 Ph_WM_RENDER_BORDER | Ph_WM_RENDER_RESIZE | Ph_WM_RENDER_MAX;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
870 PtSetArg(&winargs[winargc++], Pt_ARG_RESIZE_FLAGS, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
871 Pt_RESIZE_XY_AS_REQUIRED);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
872 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
873 if ((window->flags & SDL_WINDOW_BORDERLESS) != SDL_WINDOW_BORDERLESS) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
874 decorations |= Ph_WM_RENDER_BORDER;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
875 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
876 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_RENDER_FLAGS, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
877 decorations);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
878 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
879
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
880 /* Set initial window state */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
881 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_STATE, Pt_FALSE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
882 Ph_WM_STATE_ISFOCUS);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
883 PtSetArg(&winargs[winargc++], Pt_ARG_WINDOW_STATE, Pt_TRUE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
884 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
885
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
886 /* Set window dimension */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
887 winsize.w = window->w;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
888 winsize.h = window->h;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
889 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
890
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
891 /* Check if upper level requests WM to position window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
892 if ((window->x == SDL_WINDOWPOS_UNDEFINED)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
893 && (window->y == SDL_WINDOWPOS_UNDEFINED)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
894 /* Do not set widget position, let WM to set it */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
895 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
896 if (window->x == SDL_WINDOWPOS_UNDEFINED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
897 window->x = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
898 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
899 if (window->y == SDL_WINDOWPOS_UNDEFINED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
900 window->y = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
901 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
902 if (window->x == SDL_WINDOWPOS_CENTERED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
903 window->x = (didata->current_mode.w - window->w) / 2;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
904 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
905 if (window->y == SDL_WINDOWPOS_CENTERED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
906 window->y = (didata->current_mode.h - window->h) / 2;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
907 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
908
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
909 /* Now set window position */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
910 winpos.x = window->x;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
911 winpos.y = window->y;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
912 PtSetArg(&winargs[winargc++], Pt_ARG_POS, &winpos, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
913 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
914
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
915 /* Check if window must support OpenGL ES rendering */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
916 if ((window->flags & SDL_WINDOW_OPENGL) == SDL_WINDOW_OPENGL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
917 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
918 EGLBoolean initstatus;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
919
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
920 /* Check if GF was initialized correctly */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
921 if (phdata->gfinitialized == SDL_FALSE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
922 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
923 ("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
924 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
925 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
926
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
927 /* Mark this window as OpenGL ES compatible */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
928 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
929
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
930 /* Create connection to OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
931 if (phdata->egldisplay == EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
932 phdata->egldisplay = eglGetDisplay(phdata->gfdev);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
933 if (phdata->egldisplay == EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
934 SDL_SetError("Photon: Can't get connection to OpenGL ES");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
935 return -1;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
936 }
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
937
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
938 /* Initialize OpenGL ES library, ignore EGL version */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
939 initstatus = eglInitialize(phdata->egldisplay, NULL, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
940 if (initstatus != EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
941 SDL_SetError("Photon: Can't init OpenGL ES library");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
942 return -1;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
943 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
944 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
945
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
946 /* Increment GL ES reference count usage */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
947 phdata->egl_refcount++;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
948 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
949 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
950 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
951 #endif /* SDL_VIDEO_OPENGL_ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
952 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
953
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
954 /* Finally create the window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
955 wdata->window = PtCreateWidget(PtWindow, Pt_NO_PARENT, winargc, winargs);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
956 if (wdata->window == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
957 SDL_SetError("Photon: Can't create window widget");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
958 SDL_free(wdata);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
959 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
960 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
961
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
962 /* Show widget */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
963 status = PtRealizeWidget(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
964 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
965 SDL_SetError("Photon: Can't realize window widget");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
966 PtDestroyWidget(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
967 SDL_free(wdata);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
968 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
969 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
970
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
971 /* Just created SDL window always gets focus */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
972 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
973
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
974 /* Create window-specific cursor after creation */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
975 if (didata->cursor_visible == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
976 /* Setup cursor type. shape and default color */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
977 PtSetResource(wdata->window, Pt_ARG_CURSOR_COLOR,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
978 Ph_CURSOR_DEFAULT_COLOR, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
979 PtSetResource(wdata->window, Pt_ARG_CURSOR_TYPE, Ph_CURSOR_BITMAP, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
980 PtSetResource(wdata->window, Pt_ARG_BITMAP_CURSOR, didata->cursor,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
981 didata->cursor->hdr.len + sizeof(PhRegionDataHdr_t));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
982 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
983 PtSetResource(wdata->window, Pt_ARG_CURSOR_TYPE, Ph_CURSOR_NONE, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
984 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
985
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
986 /* Set window region sensible to mouse motion events */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
987 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
988 PhRegionQuery(PtWidgetRid(wdata->window), &wregion, NULL, NULL, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
989 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
990 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
991 ("Photon: Can't set region sensivity to mouse motion events");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
992 PtDestroyWidget(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
993 SDL_free(wdata);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
994 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
995 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
996 wregion.events_sense |=
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
997 Ph_EV_PTR_MOTION_BUTTON | Ph_EV_PTR_MOTION_NOBUTTON;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
998 status = PhRegionChange(Ph_REGION_EV_SENSE, 0, &wregion, NULL, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
999 if (status < 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1000 SDL_SetError("Photon: Can't change region sensivity");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1001 PtDestroyWidget(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1002 SDL_free(wdata);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1003 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1004 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1005
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1006 /* Flush all widget operations again */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1007 PtFlush();
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1008
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1009 /* By default last created window got a input focus */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1010 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
1011
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1012 /* Window has been successfully created */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1013 return 0;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1014 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1015
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1016 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1017 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
1018 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1019 /* 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
1020
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1021 /* Failed to create window from another window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1022 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1023 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1024
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1025 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1026 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
1027 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1028 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1029 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1030
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1031 /* Set window title */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1032 if (window->title != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1033 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1034 PtSetResource(wdata->window, Pt_ARG_WINDOW_TITLE, window->title,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1035 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1036 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1037 status = PtSetResource(wdata->window, Pt_ARG_WINDOW_TITLE, "", 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1038 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1039
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1040 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1041 SDL_SetError("Photon: Can't set window title");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1042 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1043
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1044 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1045 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1046 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1047
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1048 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1049 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
1050 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1051 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1052 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1053
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1054 /* TODO: Use iconify ? */
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1055
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1056 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1057 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1058 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1059
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1060 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1061 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
1062 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1063 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1064 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1065 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1066 PhPoint_t winpos;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1067 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1068
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1069 /* Check if upper level requests WM to position window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1070 if ((window->x == SDL_WINDOWPOS_UNDEFINED)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1071 && (window->y == SDL_WINDOWPOS_UNDEFINED)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1072 /* Do not set widget position, let WM to set it */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1073 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1074 if (window->x == SDL_WINDOWPOS_UNDEFINED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1075 window->x = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1076 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1077 if (window->y == SDL_WINDOWPOS_UNDEFINED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1078 window->y = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1079 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1080 if (window->x == SDL_WINDOWPOS_CENTERED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1081 window->x = (didata->current_mode.w - window->w) / 2;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1082 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1083 if (window->y == SDL_WINDOWPOS_CENTERED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1084 window->y = (didata->current_mode.h - window->h) / 2;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1085 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1086
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1087 /* Now set window position */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1088 winpos.x = window->x;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1089 winpos.y = window->y;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1090 status = PtSetResource(wdata->window, Pt_ARG_POS, &winpos, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1091 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1092 SDL_SetError("Photon: Can't set window position");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1093 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1094 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1095
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1096 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1097 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1098 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1099
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1100 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1101 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
1102 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1103 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1104 PhDim_t winsize;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1105 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1106
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1107 winsize.w = window->w;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1108 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
1109
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1110 status = PtSetResource(wdata->window, Pt_ARG_DIM, &winsize, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1111 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1112 SDL_SetError("Photon: Can't set window size");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1113 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1114
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1115 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1116 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1117 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1118
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1119 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1120 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
1121 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1122 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1123 int32_t status;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1124
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1125 /* Bring focus to window and put it in front of others */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1126 PtWindowToFront(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1127
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1128 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1129 PtFlush();
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 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1133 photon_hidewindow(_THIS, SDL_Window * window)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1134 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1135 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1136 PhWindowEvent_t winevent;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1137 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1138
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1139 SDL_memset(&winevent, 0x00, sizeof(PhWindowEvent_t));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1140 winevent.event_f = Ph_WM_HIDE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1141 winevent.rid = PtWidgetRid(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1142 winevent.event_state = Ph_WM_EVSTATE_HIDE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1143
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1144 status = PtForwardWindowEvent(&winevent);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1145 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1146 SDL_SetError("Photon: Can't hide window");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1147 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1148
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1149 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1150 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1151 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1152
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1153 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1154 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
1155 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1156 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1157 PhWindowEvent_t winevent;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1158 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1159
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1160 SDL_memset(&winevent, 0x00, sizeof(PhWindowEvent_t));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1161 winevent.event_f = Ph_WM_HIDE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1162 winevent.rid = PtWidgetRid(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1163 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
1164
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1165 status = PtForwardWindowEvent(&winevent);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1166 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1167 SDL_SetError("Photon: Can't hide window");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1168 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1169
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1170 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1171 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1172 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1173
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1174 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1175 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
1176 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1177 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1178 PhWindowEvent_t winevent;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1179 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1180
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1181 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1182 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1183 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1184
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1185 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1186 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
1187 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1188 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1189 PhWindowEvent_t winevent;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1190 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1191
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1192 SDL_memset(&winevent, 0x00, sizeof(PhWindowEvent_t));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1193 winevent.event_f = Ph_WM_HIDE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1194 winevent.rid = PtWidgetRid(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1195 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
1196
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1197 status = PtForwardWindowEvent(&winevent);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1198 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1199 SDL_SetError("Photon: Can't hide window");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1200 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1201
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1202 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1203 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1204 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1205
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1206 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1207 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
1208 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1209 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1210 PhWindowEvent_t winevent;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1211 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1212
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1213 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1214 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1215 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1216
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1217 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1218 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
1219 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1220 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1221 PhWindowEvent_t winevent;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1222 int32_t status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1223
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1224 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1225 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1226 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1227
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1228 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1229 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
1230 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1231 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1232 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1233 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1234 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1235 int32_t status;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1236
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1237 if (wdata != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1238 status = PtDestroyWidget(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1239 if (status != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1240 SDL_SetError("Photon: Can't destroy window widget");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1241 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1242 wdata->window = NULL;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1243
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1244 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1245 if (phdata->gfinitialized == SDL_TRUE) {
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1246 /* Destroy photon handle to GF surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1247 if (wdata->phsurface != NULL) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1248 PhDCRelease(wdata->phsurface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1249 wdata->phsurface=NULL;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1250 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1251
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1252 /* Destroy OpenGL ES surface if it was created */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1253 if (wdata->gles_surface != EGL_NO_SURFACE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1254 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
1255 }
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1256
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1257 /* Free OpenGL ES target surface */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1258 if (wdata->gfsurface != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1259 gf_surface_free(wdata->gfsurface);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1260 }
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1261
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1262 phdata->egl_refcount--;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1263 if (phdata->egl_refcount == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1264 /* Terminate connection to OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1265 if (phdata->egldisplay != EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1266 eglTerminate(phdata->egldisplay);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1267 phdata->egldisplay = EGL_NO_DISPLAY;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1268 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1269 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1270 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1271 #endif /* SDL_VIDEO_OPENGL_ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1272 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1273
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1274 /* Flush all widget operations */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1275 PtFlush();
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1276 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1277
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1278 /*****************************************************************************/
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1279 /* SDL Window Manager function */
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1280 /*****************************************************************************/
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1281 SDL_bool
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1282 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
1283 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1284 if (info->version.major <= SDL_MAJOR_VERSION) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1285 return SDL_TRUE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1286 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1287 SDL_SetError("application not compiled with SDL %d.%d\n",
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1288 SDL_MAJOR_VERSION, SDL_MINOR_VERSION);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1289 return SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1290 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1291
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1292 /* Failed to get window manager information */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1293 return SDL_FALSE;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1294 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1295
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1296 /*****************************************************************************/
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1297 /* SDL OpenGL/OpenGL ES functions */
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1298 /*****************************************************************************/
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1299 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1300 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
1301 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1302 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1303 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
1304
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1305 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1306 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1307 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1308 return NULL;
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 /* Check if OpenGL ES library is specified for GF driver */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1312 if (path == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1313 path = SDL_getenv("SDL_OPENGL_LIBRARY");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1314 if (path == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1315 path = SDL_getenv("SDL_OPENGLES_LIBRARY");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1316 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1317 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1318
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1319 /* Check if default library loading requested */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1320 if (path == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1321 /* Already linked with GF library which provides egl* subset of */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1322 /* functions, use Common profile of OpenGL ES library by default */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1323 path = "/usr/lib/libGLES_CM.so.1";
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1324 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1325
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1326 /* Load dynamic library */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1327 _this->gl_config.dll_handle = SDL_LoadObject(path);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1328 if (!_this->gl_config.dll_handle) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1329 /* Failed to load new GL ES library */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1330 SDL_SetError("Photon: Failed to locate OpenGL ES library");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1331 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1332 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1333
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1334 /* Store OpenGL ES library path and name */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1335 SDL_strlcpy(_this->gl_config.driver_path, path,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1336 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
1337
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1338 /* New OpenGL ES library is loaded */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1339 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1340 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1341 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1342 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1343 #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
1344 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1345
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1346 void *
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1347 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
1348 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1349 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1350 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1351 void *function_address;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1352
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1353 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1354 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1355 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1356 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1357 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1358
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1359 /* Try to get function address through the egl interface */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1360 function_address = eglGetProcAddress(proc);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1361 if (function_address != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1362 return function_address;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1363 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1364
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1365 /* Then try to get function in the OpenGL ES library */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1366 if (_this->gl_config.dll_handle) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1367 function_address =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1368 SDL_LoadFunction(_this->gl_config.dll_handle, proc);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1369 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
1370 return function_address;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1371 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1372 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1373
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1374 /* Add emulated OpenGL ES 1.1 functions */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1375 if (SDL_strcmp(proc, "glTexParameteri") == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1376 return glTexParameteri;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1377 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1378 if (SDL_strcmp(proc, "glTexParameteriv") == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1379 return glTexParameteriv;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1380 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1381 if (SDL_strcmp(proc, "glColor4ub") == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1382 return glColor4ub;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1383 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1384
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1385 /* Failed to get GL ES function address pointer */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1386 SDL_SetError("Photon: Cannot locate OpenGL ES function name");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1387 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1388 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1389 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1390 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1391 #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
1392 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1393
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1394 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1395 photon_gl_unloadlibrary(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1396 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1397 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1398 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
1399
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1400 if (phdata->gfinitialized == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1401 /* Unload OpenGL ES library */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1402 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
1403 SDL_UnloadObject(_this->gl_config.dll_handle);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1404 _this->gl_config.dll_handle = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1405 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1406 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1407 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1408 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1409 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1410 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1411 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1412 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1413 #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
1414 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1415
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1416 SDL_GLContext
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1417 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
1418 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1419 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1420 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1421 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1422 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1423 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1424 EGLBoolean status;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1425 int32_t gfstatus;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1426 EGLint configs;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1427 uint32_t attr_pos;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1428 EGLint attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1429 EGLint cit;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1430
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1431 /* Check if GF was initialized */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1432 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1433 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1434 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1435 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1436 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1437
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1438 /* Prepare attributes list to pass them to OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1439 attr_pos = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1440 wdata->gles_attributes[attr_pos++] = EGL_NATIVE_VISUAL_ID;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1441 wdata->gles_attributes[attr_pos++] =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1442 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.format);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1443 wdata->gles_attributes[attr_pos++] = EGL_RED_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1444 wdata->gles_attributes[attr_pos++] = _this->gl_config.red_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1445 wdata->gles_attributes[attr_pos++] = EGL_GREEN_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1446 wdata->gles_attributes[attr_pos++] = _this->gl_config.green_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1447 wdata->gles_attributes[attr_pos++] = EGL_BLUE_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1448 wdata->gles_attributes[attr_pos++] = _this->gl_config.blue_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1449 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
1450
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1451 /* Setup alpha size in bits */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1452 if (_this->gl_config.alpha_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1453 wdata->gles_attributes[attr_pos++] = _this->gl_config.alpha_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1454 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1455 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1456 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1457
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1458 /* Setup color buffer size */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1459 if (_this->gl_config.buffer_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1460 wdata->gles_attributes[attr_pos++] = EGL_BUFFER_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1461 wdata->gles_attributes[attr_pos++] = _this->gl_config.buffer_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1462 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1463 wdata->gles_attributes[attr_pos++] = EGL_BUFFER_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1464 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1465 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1466
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1467 /* Setup depth buffer bits */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1468 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1469 wdata->gles_attributes[attr_pos++] = _this->gl_config.depth_size;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1470
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1471 /* Setup stencil bits */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1472 if (_this->gl_config.stencil_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1473 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1474 wdata->gles_attributes[attr_pos++] = _this->gl_config.buffer_size;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1475 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1476 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1477 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1478 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1479
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1480 /* Set number of samples in multisampling */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1481 if (_this->gl_config.multisamplesamples) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1482 wdata->gles_attributes[attr_pos++] = EGL_SAMPLES;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1483 wdata->gles_attributes[attr_pos++] =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1484 _this->gl_config.multisamplesamples;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1485 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1486
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1487 /* Multisample buffers, OpenGL ES 1.0 spec defines 0 or 1 buffer */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1488 if (_this->gl_config.multisamplebuffers) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1489 wdata->gles_attributes[attr_pos++] = EGL_SAMPLE_BUFFERS;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1490 wdata->gles_attributes[attr_pos++] =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1491 _this->gl_config.multisamplebuffers;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1492 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1493
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1494 /* Finish attributes list */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1495 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
1496
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1497 /* Request first suitable framebuffer configuration */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1498 status = eglChooseConfig(phdata->egldisplay, wdata->gles_attributes,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1499 wdata->gles_configs, SDL_VIDEO_GF_OPENGLES_CONFS,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1500 &configs);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1501 if (status != EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1502 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1503 ("Photon: Can't find closest configuration for OpenGL ES");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1504 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1505 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1506
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1507 /* Check if nothing has been found, try "don't care" settings */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1508 if (configs == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1509 int32_t it;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1510 int32_t jt;
3185
44d5474c2c8a Continue working on QNX GF and Photon support.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1511 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
1512
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1513 for (it = 0; it < 4; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1514 for (jt = 16; jt >= 0; jt--) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1515 /* Don't care about color buffer bits, use what exist */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1516 /* Replace previous set data with EGL_DONT_CARE */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1517 attr_pos = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1518 wdata->gles_attributes[attr_pos++] = EGL_NATIVE_VISUAL_ID;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1519 wdata->gles_attributes[attr_pos++] =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1520 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.format);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1521 wdata->gles_attributes[attr_pos++] = EGL_RED_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1522 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1523 wdata->gles_attributes[attr_pos++] = EGL_GREEN_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1524 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1525 wdata->gles_attributes[attr_pos++] = EGL_BLUE_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1526 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1527 wdata->gles_attributes[attr_pos++] = EGL_ALPHA_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1528 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1529 wdata->gles_attributes[attr_pos++] = EGL_BUFFER_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1530 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
1531
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1532 /* Try to find requested or smallest depth */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1533 if (_this->gl_config.depth_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1534 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1535 wdata->gles_attributes[attr_pos++] = depthbits[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1536 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1537 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1538 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1539 }
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 if (_this->gl_config.stencil_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1542 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1543 wdata->gles_attributes[attr_pos++] = jt;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1544 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1545 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1546 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1547 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1548
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1549 wdata->gles_attributes[attr_pos++] = EGL_SAMPLES;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1550 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1551 wdata->gles_attributes[attr_pos++] = EGL_SAMPLE_BUFFERS;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1552 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1553 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
1554
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1555 /* Request first suitable framebuffer configuration */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1556 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1557 eglChooseConfig(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1558 wdata->gles_attributes,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1559 wdata->gles_configs,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1560 SDL_VIDEO_GF_OPENGLES_CONFS, &configs);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1561 if (status != EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1562 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1563 ("Photon: Can't find closest configuration for OpenGL ES");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1564 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1565 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1566 if (configs != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1567 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1568 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1569 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1570 if (configs != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1571 break;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1572 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1573 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1574
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1575 /* No available configs */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1576 if (configs == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1577 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1578 ("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
1579 return NULL;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1580 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1581 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1582
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1583 /* Initialize config index */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1584 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
1585
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1586 /* Now check each configuration to find out the best */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1587 for (cit = 0; cit < configs; cit++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1588 uint32_t stencil_found;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1589 uint32_t depth_found;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1590
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1591 stencil_found = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1592 depth_found = 0;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1593
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1594 if (_this->gl_config.stencil_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1595 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1596 eglGetConfigAttrib(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1597 wdata->gles_configs[cit], EGL_STENCIL_SIZE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1598 &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1599 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1600 if (attr_value != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1601 stencil_found = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1602 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1603 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1604 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1605 stencil_found = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1606 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1607
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1608 if (_this->gl_config.depth_size) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1609 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1610 eglGetConfigAttrib(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1611 wdata->gles_configs[cit], EGL_DEPTH_SIZE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1612 &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1613 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1614 if (attr_value != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1615 depth_found = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1616 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1617 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1618 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1619 depth_found = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1620 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1621
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1622 /* Exit from loop if found appropriate configuration */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1623 if ((depth_found != 0) && (stencil_found != 0)) {
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1624 break;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1625 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1626 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1627
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1628 /* If best could not be found, use first */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1629 if (cit == configs) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1630 cit = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1631 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1632 wdata->gles_config = cit;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1633
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1634 /* Create OpenGL ES context */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1635 wdata->gles_context =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1636 eglCreateContext(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1637 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1638 EGL_NO_CONTEXT, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1639 if (wdata->gles_context == EGL_NO_CONTEXT) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1640 SDL_SetError("Photon: OpenGL ES context creation has been failed");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1641 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1642 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1643
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1644 /* Check if surface is exist */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1645 if (wdata->gfsurface != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1646 gf_surface_free(wdata->gfsurface);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1647 wdata->gfsurface = NULL;
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 /* Create GF surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1651 gfstatus =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1652 gf_surface_create(&wdata->gfsurface, phdata->gfdev, window->w,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1653 window->h,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1654 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1655 format), NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1656 GF_SURFACE_CREATE_2D_ACCESSIBLE |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1657 GF_SURFACE_CREATE_3D_ACCESSIBLE |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1658 GF_SURFACE_CREATE_SHAREABLE);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1659 if (gfstatus != GF_ERR_OK) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1660 eglDestroyContext(phdata->egldisplay, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1661 wdata->gles_context = EGL_NO_CONTEXT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1662 SDL_SetError("Photon: Can't create GF 3D surface (%08X)", gfstatus);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1663 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1664 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1665
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1666 /* Create pixmap 3D target surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1667 wdata->gles_surface =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1668 eglCreatePixmapSurface(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1669 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1670 wdata->gfsurface, NULL);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1671 if (wdata->gles_surface == EGL_NO_SURFACE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1672 gf_surface_free(wdata->gfsurface);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1673 eglDestroyContext(phdata->egldisplay, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1674 wdata->gles_context = EGL_NO_CONTEXT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1675 SDL_SetError("Photon: Can't create EGL pixmap surface");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1676 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1677 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1678
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1679 /* Store last used context and surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1680 phdata->lgles_surface=wdata->gles_surface;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1681 phdata->lgles_context=wdata->gles_context;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1682
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1683 /* Make just created context current */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1684 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1685 eglMakeCurrent(phdata->egldisplay, wdata->gles_surface,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1686 wdata->gles_surface, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1687 if (status != EGL_TRUE) {
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1688 /* Reset last used context and surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1689 phdata->lgles_surface=EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1690 phdata->lgles_context=EGL_NO_CONTEXT;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1691
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1692 /* Destroy OpenGL ES surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1693 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
1694 wdata->gles_surface=EGL_NO_SURFACE;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1695 gf_surface_free(wdata->gfsurface);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1696 eglDestroyContext(phdata->egldisplay, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1697 wdata->gles_context = EGL_NO_CONTEXT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1698 SDL_SetError("Photon: Can't set OpenGL ES context on creation");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1699 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1700 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1701
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1702 /* Setup into SDL internals state of OpenGL ES: */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1703 /* it is accelerated or not */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1704 if ((didata->caps & SDL_PHOTON_ACCELERATED_3D) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1705 SDL_PHOTON_ACCELERATED_3D) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1706 _this->gl_config.accelerated = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1707 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1708 _this->gl_config.accelerated = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1709 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1710
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1711 /* Always clear stereo enable, since OpenGL ES do not supports stereo */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1712 _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
1713
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1714 /* Get back samples and samplebuffers configurations. Rest framebuffer */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1715 /* parameters could be obtained through the OpenGL ES API */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1716 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1717 eglGetConfigAttrib(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1718 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1719 EGL_SAMPLES, &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1720 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1721 _this->gl_config.multisamplesamples = attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1722 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1723 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1724 eglGetConfigAttrib(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1725 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1726 EGL_SAMPLE_BUFFERS, &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1727 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1728 _this->gl_config.multisamplebuffers = attr_value;
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 /* Get back stencil and depth buffer sizes */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1732 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1733 eglGetConfigAttrib(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 EGL_DEPTH_SIZE, &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1736 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1737 _this->gl_config.depth_size = attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1738 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1739 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1740 eglGetConfigAttrib(phdata->egldisplay,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1741 wdata->gles_configs[wdata->gles_config],
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1742 EGL_STENCIL_SIZE, &attr_value);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1743 if (status == EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1744 _this->gl_config.stencil_size = attr_value;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1745 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1746
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1747 /* Under Photon OpenGL ES output can't be double buffered */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1748 _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
1749
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1750 /* Check if current device is not the same as target */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1751 if (phdata->current_device_id != didata->device_id) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1752 /* Set target device as default for Pd and Pg functions */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1753 status = PdSetTargetDevice(NULL, phdata->rid[didata->device_id]);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1754 if (status != 0) {
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1755 /* Destroy OpenGL ES surface */
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1756 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
1757 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
1758 gf_surface_free(wdata->gfsurface);
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1759 eglDestroyContext(phdata->egldisplay, wdata->gles_context);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1760 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
1761 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
1762 return NULL;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1763 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1764 phdata->current_device_id = didata->device_id;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1765 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1766
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1767 wdata->phsurface = PdCreateOffscreenContextGF(wdata->gfsurface);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1768 if (wdata->phsurface == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1769 /* Destroy OpenGL ES surface */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1770 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
1771 wdata->gles_surface=EGL_NO_SURFACE;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1772 gf_surface_free(wdata->gfsurface);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1773 eglDestroyContext(phdata->egldisplay, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1774 wdata->gles_context = EGL_NO_CONTEXT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1775 SDL_SetError("Photon: Can't bind GF surface to Photon\n");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1776 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1777 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1778
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1779 /* GL ES context was successfully created */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1780 return wdata->gles_context;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1781 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1782 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1783 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1784 #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
1785 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1786
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1787 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1788 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
1789 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1790 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1791 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1792 SDL_WindowData *wdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1793 EGLBoolean status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1794
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1795 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1796 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1797 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1798 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1799 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1800
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1801 if ((window == NULL) && (context == NULL)) {
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1802 /* Reset last used context and surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1803 phdata->lgles_surface=EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1804 phdata->lgles_context=EGL_NO_CONTEXT;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1805
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1806 /* Unset current context */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1807 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1808 eglMakeCurrent(phdata->egldisplay, EGL_NO_SURFACE, EGL_NO_SURFACE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1809 EGL_NO_CONTEXT);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1810 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
1811 /* 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
1812 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
1813 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1814 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1815 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1816 wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1817 if (wdata->gles_surface == EGL_NO_SURFACE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1818 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1819 ("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
1820 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1821 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1822 if (wdata->gles_context == EGL_NO_CONTEXT) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1823 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1824 ("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
1825 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1826 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1827 if (wdata->gles_context != context) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1828 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1829 ("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
1830 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1831 }
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1832
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1833 /* Store last set surface and context */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1834 phdata->lgles_surface=wdata->gles_surface;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1835 phdata->lgles_context=wdata->gles_context;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1836
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1837 /* Set new current context */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1838 status =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1839 eglMakeCurrent(phdata->egldisplay, wdata->gles_surface,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1840 wdata->gles_surface, wdata->gles_context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1841 if (status != EGL_TRUE) {
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1842 /* Reset last used context and surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1843 phdata->lgles_surface=EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1844 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
1845 /* 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
1846 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
1847 return -1;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1848 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1849 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1850
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1851 return 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1852 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1853 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1854 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1855 #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
1856 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1857
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1858 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1859 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
1860 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1861 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1862 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1863 EGLBoolean status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1864
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1865 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1866 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1867 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1868 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1869 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1870
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1871 /* Check if OpenGL ES connection has been initialized */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1872 if (phdata->egldisplay != EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1873 /* Set swap OpenGL ES interval */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1874 status = eglSwapInterval(phdata->egldisplay, interval);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1875 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
1876 /* Return success to upper level */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1877 phdata->swapinterval = interval;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1878 return 0;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1879 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1880 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1881
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1882 /* Failed to set swap interval */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1883 SDL_SetError("Photon: Cannot set swap interval");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1884 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1885 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1886 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1887 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1888 #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
1889 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1890
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1891 int
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1892 photon_gl_getswapinterval(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1893 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1894 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1895 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
1896
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1897 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1898 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1899 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1900 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1901 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1902
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1903 /* Return default swap interval value */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1904 return phdata->swapinterval;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1905 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1906 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1907 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1908 #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
1909 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1910
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1911 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1912 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
1913 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1914 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1915 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1916 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1917 SDL_DisplayData *didata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1918 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1919 PhRect_t dst_rect;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1920 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
1921
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1922 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1923 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1924 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1925 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1926 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1927
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1928 if (wdata->phsurface==NULL) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1929 SDL_SetError
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1930 ("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
1931 return;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1932 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1933
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1934 /* Many applications do not uses glFinish(), so we call it for them */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1935 glFinish();
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1936
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1937 /* Wait until OpenGL ES rendering is completed */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1938 eglWaitGL();
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 /* Wait for VSYNC manually, if it was enabled */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1941 if (phdata->swapinterval != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1942 /* Wait for VSYNC, we use GF function, since Photon requires */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1943 /* to enter to the Direct mode to call PgWaitVSync() */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1944 gf_display_wait_vsync(didata->display);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1945 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1946
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1947 /* Set blit area */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1948 dst_rect = *PtGetCanvas(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1949 src_rect.ul.x = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1950 src_rect.ul.y = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1951 src_rect.lr.x = window->w - 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1952 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
1953
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1954 /* Blit OpenGL ES pixmap surface directly to window region */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1955 PgFFlush(Ph_START_DRAW);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1956 PgSetRegionCx(PhDCGetCurrent(), PtWidgetRid(wdata->window));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1957 PgClearTranslationCx(PgGetGCCx(PhDCGetCurrent()));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1958 PgContextBlit(wdata->phsurface, &src_rect, NULL, &dst_rect);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1959 PgFFlush(Ph_DONE_DRAW);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1960 PgWaitHWIdle();
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1961
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1962 eglSwapBuffers(phdata->egldisplay, wdata->gles_surface);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1963 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1964 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1965 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1966 #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
1967 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
1968
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1969 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1970 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
1971 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1972 #if defined(SDL_VIDEO_OPENGL_ES)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1973 SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1974 EGLBoolean status;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1975
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1976 if (phdata->gfinitialized != SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1977 SDL_SetError
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1978 ("Photon: GF initialization failed, no OpenGL ES support");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1979 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1980 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1981
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1982 /* Check if OpenGL ES connection has been initialized */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1983 if (phdata->egldisplay != EGL_NO_DISPLAY) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1984 if (context != EGL_NO_CONTEXT) {
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1985 /* 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
1986 if (phdata->lgles_context==context) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1987 /* Release current context */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1988 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
1989 phdata->lgles_context=EGL_NO_CONTEXT;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1990 phdata->lgles_surface=EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
1991 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1992 status = eglDestroyContext(phdata->egldisplay, context);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1993 if (status != EGL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1994 /* Error during OpenGL ES context destroying */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1995 SDL_SetError("Photon: OpenGL ES context destroy error");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1996 return;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
1997 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1998 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
1999 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2000
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2001 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2002 #else
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2003 SDL_SetError("Photon: OpenGL ES support is not compiled in");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2004 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2005 #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
2006 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2007
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2008 /* 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
2009 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
2010 {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2011 #if defined(SDL_VIDEO_OPENGL_ES)
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2012 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
2013 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
2014 SDL_DisplayData *didata =
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2015 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2016 SDL_bool makecurrent=SDL_FALSE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2017 int32_t gfstatus;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2018
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2019 /* Check if context has been initialized */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2020 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
2021 /* If no, abort surface re-creating */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2022 return -1;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2023 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2024
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2025 /* 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
2026 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
2027 makecurrent=SDL_TRUE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2028 /* Flush all current drawings */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2029 glFinish();
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2030 /* 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
2031 eglWaitGL();
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2032 /* Release current context */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2033 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
2034 phdata->lgles_surface=EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2035 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2036
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2037 /* 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
2038 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
2039 /* Destroy photon handle to GF surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2040 if (wdata->phsurface != NULL) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2041 PhDCRelease(wdata->phsurface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2042 wdata->phsurface=NULL;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2043 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2044
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2045 /* Destroy previous surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2046 eglDestroySurface(phdata->egldisplay, wdata->gles_surface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2047
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2048 /* Set surface to uninitialized */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2049 wdata->gles_surface = EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2050
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2051 if (wdata->gfsurface!=NULL) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2052 gf_surface_free(wdata->gfsurface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2053 wdata->gfsurface=NULL;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2054 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2055 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2056
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2057 /* Create new GF surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2058 gfstatus =
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2059 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
2060 height,
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2061 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
2062 format), NULL,
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2063 GF_SURFACE_CREATE_2D_ACCESSIBLE |
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2064 GF_SURFACE_CREATE_3D_ACCESSIBLE |
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2065 GF_SURFACE_CREATE_SHAREABLE);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2066 if (gfstatus != GF_ERR_OK) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2067 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
2068 return -1;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2069 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2070
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2071 /* Create new pixmap 3D target surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2072 wdata->gles_surface =
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2073 eglCreatePixmapSurface(phdata->egldisplay,
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2074 wdata->gles_configs[wdata->gles_config],
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2075 wdata->gfsurface, NULL);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2076 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
2077 gf_surface_free(wdata->gfsurface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2078 wdata->gfsurface=NULL;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2079 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
2080 return -1;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2081 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2082
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2083 wdata->phsurface = PdCreateOffscreenContextGF(wdata->gfsurface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2084 if (wdata->phsurface == NULL) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2085 /* Destroy OpenGL ES surface */
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2086 eglDestroySurface(phdata->egldisplay, wdata->gles_surface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2087 wdata->gles_surface=EGL_NO_SURFACE;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2088 gf_surface_free(wdata->gfsurface);
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2089 wdata->gfsurface=NULL;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2090 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
2091 return -1;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2092 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2093
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2094 /* 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
2095 if (makecurrent == SDL_TRUE) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2096 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
2097 } else {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2098 return 0;
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 #else
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2101 /* 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
2102 return 0;
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2103 #endif /* SDL_VIDEO_OPENGL_ES */
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
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2106 /*****************************************************************************/
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2107 /* SDL Event handling function */
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2108 /*****************************************************************************/
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2109 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2110 photon_pumpevents(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2111 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2112 uint8_t eventbuffer[SDL_VIDEO_PHOTON_EVENT_SIZE];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2113 PhEvent_t *event = (PhEvent_t *) eventbuffer;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2114 int32_t status;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2115 uint32_t finish = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2116 uint32_t it;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2117 SDL_Window *window;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2118 SDL_WindowData *wdata;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2119
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2120 do {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2121 status = PhEventPeek(event, SDL_VIDEO_PHOTON_EVENT_SIZE);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2122 switch (status) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2123 case Ph_RESIZE_MSG:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2124 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2125 SDL_SetError("Photon: Event size too much for buffer");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2126 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2127 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2128 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2129 case Ph_EVENT_MSG:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2130 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2131 /* Find a window, to which this handle destinated */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2132 status = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2133 for (it = 0; it < SDL_CurrentDisplay.num_windows; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2134 wdata =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2135 (SDL_WindowData *) SDL_CurrentDisplay.windows[it].
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2136 driverdata;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2137
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2138 /* Find the proper window */
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2139 if (wdata->window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2140 if (PtWidgetRid(wdata->window) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2141 event->collector.rid) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2142 window =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2143 (SDL_Window *) & SDL_CurrentDisplay.
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2144 windows[it];
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2145 status = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2146 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2147 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2148 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2149 continue;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2150 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2151 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2152 if (status == 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2153 window = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2154 wdata = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2155 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2156
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2157 /* Event is ready */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2158 switch (event->type) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2159 case Ph_EV_BOUNDARY:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2160 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2161 switch (event->subtype) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2162 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
2163 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2164 /* Mouse cursor over handled window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2165 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2166 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2167 SDL_WINDOWEVENT_ENTER,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2168 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2169 SDL_SetMouseFocus(0, window->id);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2170 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2171 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2172 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2173 case Ph_EV_PTR_LEAVE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2174 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2175 /* Mouse cursor out of handled window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2176 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2177 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2178 SDL_WINDOWEVENT_LEAVE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2179 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2180 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2181 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2182 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2183 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2184 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2185 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2186 case Ph_EV_PTR_MOTION_BUTTON:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2187 case Ph_EV_PTR_MOTION_NOBUTTON:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2188 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2189 PhPointerEvent_t *pevent = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2190 PhRect_t *prects = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2191
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2192 /* Get event data */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2193 pevent = PhGetData(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2194 /* Get associated event rectangles */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2195 prects = PhGetRects(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2196 if ((pevent != NULL) && (prects != NULL)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2197 SDL_SendMouseMotion(0, 0, prects->ul.x,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2198 prects->ul.y, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2199 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2200 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2201 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2202 case Ph_EV_BUT_PRESS:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2203 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2204 /* Button press event */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2205 PhPointerEvent_t *pevent = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2206 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
2207
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2208 /* Get event data */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2209 pevent = PhGetData(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2210 if (pevent != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2211 for (it = 0; it < sizeof(pevent->buttons) * 8;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2212 it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2213 if ((pevent->buttons & (0x0001 << it)) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2214 (0x0001 << it)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2215 switch (it) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2216 case 0:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2217 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2218 sdlbutton = SDL_BUTTON_RIGHT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2219 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2220 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2221 case 1:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2222 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2223 sdlbutton = SDL_BUTTON_MIDDLE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2224 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2225 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2226 case 2:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2227 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2228 sdlbutton = SDL_BUTTON_LEFT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2229 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2230 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2231 default:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2232 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2233 sdlbutton = it + 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2234 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2235 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2236 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2237 SDL_SendMouseButton(0, SDL_PRESSED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2238 sdlbutton);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2239 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2240 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2241 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2242 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2243 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2244 case Ph_EV_BUT_RELEASE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2245 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2246 /* Button press event */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2247 PhPointerEvent_t *pevent = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2248 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
2249
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2250 /* Get event data */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2251 pevent = PhGetData(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2252 if (pevent != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2253 for (it = 0; it < sizeof(pevent->buttons) * 8;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2254 it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2255 if ((pevent->buttons & (0x0001 << it)) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2256 (0x0001 << it)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2257 switch (it) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2258 case 0:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2259 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2260 sdlbutton = SDL_BUTTON_RIGHT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2261 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2262 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2263 case 1:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2264 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2265 sdlbutton = SDL_BUTTON_MIDDLE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2266 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2267 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2268 case 2:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2269 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2270 sdlbutton = SDL_BUTTON_LEFT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2271 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2272 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2273 default:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2274 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2275 sdlbutton = it + 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2276 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2277 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2278 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2279 }
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
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2283 switch (event->subtype) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2284 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
2285 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2286 /* Real release button event */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2287 SDL_SendMouseButton(0, SDL_RELEASED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2288 sdlbutton);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2289 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2290 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2291 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
2292 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2293 /* We will get phantom button release */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2294 /* event in case if it was unpressed */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2295 /* outside of window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2296 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2297 if ((window->
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2298 flags & SDL_WINDOW_MOUSE_FOCUS) !=
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2299 SDL_WINDOW_MOUSE_FOCUS) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2300 /* Send phantom button release */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2301 SDL_SendMouseButton(0, SDL_RELEASED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2302 sdlbutton);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2303 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2304 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2305 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2306 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2307 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2308 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2309 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2310 case Ph_EV_EXPOSE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2311 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2312 switch (event->subtype) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2313 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
2314 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2315 PhRect_t *rects = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2316
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2317 /* Get array of rectangles to be updated */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2318 rects = PhGetRects(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2319 if (rects == NULL) {
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2320 break;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2321 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2322
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2323 /* Check if expose come to one of the our windows */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2324 if ((wdata != NULL) && (window != NULL)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2325 /* Check if window uses OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2326 if (wdata->uses_gles == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2327 PhRect_t dst_rect;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2328 PhRect_t src_rect;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2329
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2330 /* Cycle through each rectangle */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2331 for (it = 0; it < event->num_rects;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2332 it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2333 /* Blit OpenGL ES pixmap surface directly to window region */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2334 PgFFlush(Ph_START_DRAW);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2335 PgSetRegionCx(PhDCGetCurrent(),
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2336 PtWidgetRid(wdata->
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2337 window));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2338 PgClearTranslationCx(PgGetGCCx
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2339 (PhDCGetCurrent
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2340 ()));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2341 PgContextBlit(wdata->phsurface,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2342 &rects[it], NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2343 &rects[it]);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2344 PgFFlush(Ph_DONE_DRAW);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2345 PgWaitHWIdle();
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2346 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2347 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2348 /* Normal window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2349 /* TODO: update the damaged rectangles */
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2350 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2351 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2352
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2353 /* Flush all blittings */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2354 PgFlush();
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2355 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2356 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2357 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
2358 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2359 /* Check if expose come to one of the our windows */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2360 if ((wdata != NULL) && (window != NULL)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2361 /* Check if window uses OpenGL ES */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2362 if (wdata->uses_gles == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2363 PhRect_t dst_rect;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2364 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
2365
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2366 /* Set blit area */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2367 dst_rect =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2368 *PtGetCanvas(wdata->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2369 src_rect.ul.x = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2370 src_rect.ul.y = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2371 src_rect.lr.x = window->w - 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2372 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
2373
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2374 /* We need to redraw entire window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2375 PgFFlush(Ph_START_DRAW);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2376 PgSetRegionCx(PhDCGetCurrent(),
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2377 PtWidgetRid(wdata->
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2378 window));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2379 PgClearTranslationCx(PgGetGCCx
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2380 (PhDCGetCurrent
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2381 ()));
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2382 PgContextBlit(wdata->phsurface,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2383 &src_rect, NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2384 &dst_rect);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2385 PgFFlush(Ph_DONE_DRAW);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2386 PgWaitHWIdle();
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2387 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2388 /* Normal window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2389 /* TODO: update the damaged rectangles */
3115
1102a3305928 Added handler for all window events.
Mike Gorchak <lestat@i.com.ua>
parents: 3108
diff changeset
2390
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2391 /* We need to redraw entire window */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2392 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2393 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2394 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2395 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2396 case Ph_GRAPHIC_EXPOSE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2397 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2398 /* TODO: What this event means ? */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2399 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2400 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2401 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2402 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2403 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2404 case Ph_EV_INFO:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2405 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2406 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2407 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2408 case Ph_EV_KEY:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2409 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2410 PhKeyEvent_t *keyevent = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2411 SDL_scancode scancode = SDL_SCANCODE_UNKNOWN;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2412 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
2413
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2414 keyevent = PhGetData(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2415 if (keyevent == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2416 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2417 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2418
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2419 /* Check if key is repeated */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2420 if ((keyevent->key_flags & Pk_KF_Key_Repeat) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2421 Pk_KF_Key_Repeat) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2422 /* Ignore such events */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2423 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2424 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2425
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2426 /* Check if key has its own scancode */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2427 if ((keyevent->key_flags & Pk_KF_Scan_Valid) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2428 Pk_KF_Scan_Valid) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2429 if ((keyevent->key_flags & Pk_KF_Key_Down) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2430 Pk_KF_Key_Down) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2431 pressed = SDL_TRUE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2432 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2433 pressed = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2434 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2435 scancode =
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2436 photon_to_sdl_keymap(keyevent->key_scan);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2437
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2438 /* Add details for the pressed key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2439 if ((keyevent->key_flags & Pk_KF_Cap_Valid) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2440 Pk_KF_Cap_Valid) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2441 switch (keyevent->key_cap) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2442 case Pk_Hyper_R: /* Right windows flag key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2443 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
2444 break;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2445 case Pk_Control_R: /* Right Ctrl key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2446 scancode = SDL_SCANCODE_RCTRL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2447 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2448 case Pk_Alt_R: /* Right Alt key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2449 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
2450 break;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2451 case Pk_Up: /* Up key but with invalid scan */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2452 if (scancode != SDL_SCANCODE_UP) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2453 /* This is a mouse wheel event */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2454 SDL_SendMouseWheel(0, 0, 1);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2455 return;
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2456 }
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2457 break;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2458 case Pk_KP_8: /* Up arrow or 8 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2459 scancode = SDL_SCANCODE_KP_8;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2460 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2461 case Pk_Down: /* Down key but with invalid scan */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2462 if (scancode != SDL_SCANCODE_DOWN) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2463 /* This is a mouse wheel event */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2464 SDL_SendMouseWheel(0, 0, -1);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2465 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2466 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2467 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2468 case Pk_KP_2: /* Down arrow or 2 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2469 scancode = SDL_SCANCODE_KP_2;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2470 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2471 case Pk_Left: /* Left arrow key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2472 scancode = SDL_SCANCODE_LEFT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2473 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2474 case Pk_KP_4: /* Left arrow or 4 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2475 scancode = SDL_SCANCODE_KP_4;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2476 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2477 case Pk_Right: /* Right arrow key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2478 scancode = SDL_SCANCODE_RIGHT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2479 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2480 case Pk_KP_6: /* Right arrow or 6 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2481 scancode = SDL_SCANCODE_KP_6;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2482 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2483 case Pk_Insert: /* Insert key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2484 scancode = SDL_SCANCODE_INSERT;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2485 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2486 case Pk_KP_0: /* Insert or 0 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2487 scancode = SDL_SCANCODE_KP_0;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2488 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2489 case Pk_Home: /* Home key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2490 scancode = SDL_SCANCODE_HOME;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2491 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2492 case Pk_KP_7: /* Home or 7 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2493 scancode = SDL_SCANCODE_KP_7;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2494 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2495 case Pk_Pg_Up: /* PageUp key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2496 scancode = SDL_SCANCODE_PAGEUP;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2497 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2498 case Pk_KP_9: /* PgUp or 9 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2499 scancode = SDL_SCANCODE_KP_9;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2500 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2501 case Pk_Delete: /* Delete key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2502 scancode = SDL_SCANCODE_DELETE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2503 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2504 case Pk_KP_Decimal: /* Del or . on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2505 scancode = SDL_SCANCODE_KP_PERIOD;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2506 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2507 case Pk_End: /* End key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2508 scancode = SDL_SCANCODE_END;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2509 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2510 case Pk_KP_1: /* End or 1 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2511 scancode = SDL_SCANCODE_KP_1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2512 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2513 case Pk_Pg_Down: /* PageDown key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2514 scancode = SDL_SCANCODE_PAGEDOWN;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2515 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2516 case Pk_KP_3: /* PgDn or 3 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2517 scancode = SDL_SCANCODE_KP_3;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2518 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2519 case Pk_KP_5: /* 5 on keypad */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2520 scancode = SDL_SCANCODE_KP_5;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2521 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2522 case Pk_KP_Enter:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2523 scancode = SDL_SCANCODE_KP_ENTER;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2524 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2525 case Pk_KP_Add:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2526 scancode = SDL_SCANCODE_KP_PLUS;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2527 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2528 case Pk_KP_Subtract:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2529 scancode = SDL_SCANCODE_KP_MINUS;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2530 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2531 case Pk_KP_Multiply:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2532 scancode = SDL_SCANCODE_KP_MULTIPLY;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2533 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2534 case Pk_KP_Divide:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2535 scancode = SDL_SCANCODE_KP_DIVIDE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2536 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2537 case Pk_Pause:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2538 scancode = SDL_SCANCODE_PAUSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2539 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2540 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2541 }
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2542
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2543 /* Finally check if scancode has been decoded */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2544 if (scancode == SDL_SCANCODE_UNKNOWN) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2545 /* Something was pressed, which is not supported */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2546 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2547 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2548
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2549 /* Report pressed/released key to SDL */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2550 if (pressed == SDL_TRUE) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2551 SDL_SendKeyboardKey(0, SDL_PRESSED, scancode);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2552 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2553 SDL_SendKeyboardKey(0, SDL_RELEASED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2554 scancode);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2555 }
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2556
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2557 /* Photon doesn't send a release event for PrnScr key */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2558 if ((scancode == SDL_SCANCODE_PRINTSCREEN)
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2559 && (pressed)) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2560 SDL_SendKeyboardKey(0, SDL_RELEASED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2561 scancode);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2562 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2563 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2564 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2565 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2566 case Ph_EV_SERVICE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2567 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2568 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2569 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2570 case Ph_EV_SYSTEM:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2571 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2572 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2573 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2574 case Ph_EV_WM:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2575 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2576 PhWindowEvent_t *wmevent = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2577
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2578 /* Get associated event data */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2579 wmevent = PhGetData(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2580 if (wmevent == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2581 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2582 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2583
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2584 switch (wmevent->event_f) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2585 case Ph_WM_CLOSE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2586 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2587 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2588 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2589 SDL_WINDOWEVENT_CLOSE,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2590 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2591 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2592 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2593 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2594 case Ph_WM_FOCUS:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2595 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2596 if (wmevent->event_state ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2597 Ph_WM_EVSTATE_FOCUS) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2598 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2599 PhRegion_t wregion;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2600
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2601 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2602 SDL_WINDOWEVENT_FOCUS_GAINED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2603 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2604 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
2605
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2606 /* Set window region sensible to mouse motion events */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2607 PhRegionQuery(PtWidgetRid
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2608 (wdata->window),
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2609 &wregion, NULL, NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2610 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2611 wregion.events_sense |=
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2612 Ph_EV_PTR_MOTION_BUTTON |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2613 Ph_EV_PTR_MOTION_NOBUTTON;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2614 PhRegionChange(Ph_REGION_EV_SENSE, 0,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2615 &wregion, NULL, NULL);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2616
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2617 /* If window got a focus, the it is visible */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2618 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2619 SDL_WINDOWEVENT_SHOWN,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2620 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2621 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2622 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2623 if (wmevent->event_state ==
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2624 Ph_WM_EVSTATE_FOCUSLOST) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2625 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2626 PhRegion_t wregion;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2627
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2628 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2629 SDL_WINDOWEVENT_FOCUS_LOST,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2630 0, 0);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2631
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2632 /* Set window region ignore mouse motion events */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2633 PhRegionQuery(PtWidgetRid
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2634 (wdata->window),
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2635 &wregion, NULL, NULL,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2636 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2637 wregion.events_sense &=
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2638 ~(Ph_EV_PTR_MOTION_BUTTON |
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2639 Ph_EV_PTR_MOTION_NOBUTTON);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2640 PhRegionChange(Ph_REGION_EV_SENSE, 0,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2641 &wregion, NULL, NULL);
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2642 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2643 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2644 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2645 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2646 case Ph_WM_MOVE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2647 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2648 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2649 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2650 SDL_WINDOWEVENT_MOVED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2651 wmevent->pos.x,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2652 wmevent->pos.y);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2653 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2654 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2655 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2656 case Ph_WM_RESIZE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2657 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2658 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2659 /* Set new window position after resize */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2660 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2661 SDL_WINDOWEVENT_MOVED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2662 wmevent->pos.x,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2663 wmevent->pos.y);
3193
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2664
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2665 /* 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
2666 if (wdata->uses_gles == SDL_TRUE) {
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2667 /* 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
2668 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
2669 }
64e4442676a6 Fixed problems with OpenGL ES window resizing.
Mike Gorchak <lestat@i.com.ua>
parents: 3186
diff changeset
2670
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2671 /* Set new window size after resize */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2672 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2673 SDL_WINDOWEVENT_RESIZED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2674 wmevent->size.w,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2675 wmevent->size.h);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2676 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2677 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2678 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2679 case Ph_WM_HIDE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2680 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2681 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2682 /* Send new window state: minimized */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2683 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2684 SDL_WINDOWEVENT_MINIMIZED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2685 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2686 /* In case window is minimized, then it is hidden */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2687 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2688 SDL_WINDOWEVENT_HIDDEN,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2689 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2690 }
3108
aa1897bee1e9 Continue working on QNX Photon with OpenGL ES support
Mike Gorchak <lestat@i.com.ua>
parents: 3092
diff changeset
2691 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2692 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2693 case Ph_WM_MAX:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2694 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2695 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2696 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2697 SDL_WINDOWEVENT_MAXIMIZED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2698 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2699 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2700 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2701 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2702 case Ph_WM_RESTORE:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2703 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2704 if (window != NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2705 SDL_SendWindowEvent(window->id,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2706 SDL_WINDOWEVENT_RESTORED,
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2707 0, 0);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2708 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2709 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2710 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2711 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2712 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2713 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2714 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2715 PtEventHandler(event);
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2716 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2717 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2718 case 0:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2719 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2720 /* All events are read */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2721 finish = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2722 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2723 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2724 case -1:
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2725 {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2726 /* Error occured in event reading */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2727 SDL_SetError("Photon: Can't read event");
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2728 return;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2729 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2730 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2731 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2732 if (finish != 0) {
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2733 break;
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2734 }
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2735 } while (1);
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2736 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2737
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2738 /*****************************************************************************/
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2739 /* SDL screen saver related functions */
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2740 /*****************************************************************************/
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2741 void
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2742 photon_suspendscreensaver(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2743 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2744 /* There is no screensaver in pure console, it may exist when running */
Sam Lantinga <slouken@libsdl.org>
parents: 3115
diff changeset
2745 /* 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
2746 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents: 3087
diff changeset
2747
3087
0b6f51c29267 Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
2748 /* vi: set ts=4 sw=4 expandtab: */