annotate src/video/photon/SDL_photon.c @ 4733:983eb9d5ed31

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