Skip to content

Commit e53b4b4

Browse files
author
Cedric PAILLE
committed
Fix for EGL preserve buffer
1 parent 8be6e5c commit e53b4b4

File tree

3 files changed

+341
-31
lines changed

3 files changed

+341
-31
lines changed

include/SDL_config.h

Lines changed: 328 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* include/SDL_config.h. Generated from SDL_config.h.in by configure. */
12
/*
23
Simple DirectMedia Layer
34
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
@@ -22,34 +23,338 @@
2223
#ifndef _SDL_config_h
2324
#define _SDL_config_h
2425

25-
#include "SDL_platform.h"
26-
2726
/**
28-
* \file SDL_config.h
27+
* \file SDL_config.h.in
28+
*
29+
* This is a set of defines to configure the SDL features
2930
*/
3031

31-
/* Add any platform that doesn't build using the configure system. */
32-
#ifdef USING_PREMAKE_CONFIG_H
33-
#include "SDL_config_premake.h"
34-
#elif defined(__WIN32__)
35-
#include "SDL_config_windows.h"
36-
#elif defined(__WINRT__)
37-
#include "SDL_config_winrt.h"
38-
#elif defined(__MACOSX__)
39-
#include "SDL_config_macosx.h"
40-
#elif defined(__IPHONEOS__)
41-
#include "SDL_config_iphoneos.h"
42-
#elif defined(__ANDROID__)
43-
#include "SDL_config_android.h"
44-
#elif defined(__PSP__)
45-
#include "SDL_config_psp.h"
32+
/* General platform specific identifiers */
33+
#include "SDL_platform.h"
34+
35+
/* Make sure that this isn't included by Visual C++ */
36+
#ifdef _MSC_VER
37+
#error You should run hg revert SDL_config.h
38+
#endif
39+
40+
/* C language features */
41+
/* #undef const */
42+
/* #undef inline */
43+
/* #undef volatile */
44+
45+
/* C datatypes */
46+
#ifdef __LP64__
47+
#define SIZEOF_VOIDP 8
4648
#else
47-
/* This is a minimal configuration just to get SDL running on new platforms */
48-
#include "SDL_config_minimal.h"
49-
#endif /* platform config */
49+
#define SIZEOF_VOIDP 4
50+
#endif
51+
#define HAVE_GCC_ATOMICS 1
52+
/* #undef HAVE_GCC_SYNC_LOCK_TEST_AND_SET */
53+
54+
/* #undef HAVE_DDRAW_H */
55+
/* #undef HAVE_DINPUT_H */
56+
/* #undef HAVE_DSOUND_H */
57+
/* #undef HAVE_DXGI_H */
58+
/* #undef HAVE_XINPUT_H */
59+
60+
/* Comment this if you want to build without any C library requirements */
61+
#define HAVE_LIBC 1
62+
#if HAVE_LIBC
5063

51-
#ifdef USING_GENERATED_CONFIG_H
52-
#error Wrong SDL_config.h, check your include path?
64+
/* Useful headers */
65+
#define HAVE_ALLOCA_H 1
66+
#define HAVE_SYS_TYPES_H 1
67+
#define HAVE_STDIO_H 1
68+
#define STDC_HEADERS 1
69+
#define HAVE_STDLIB_H 1
70+
#define HAVE_STDARG_H 1
71+
#define HAVE_MALLOC_H 1
72+
#define HAVE_MEMORY_H 1
73+
#define HAVE_STRING_H 1
74+
#define HAVE_STRINGS_H 1
75+
#define HAVE_INTTYPES_H 1
76+
#define HAVE_STDINT_H 1
77+
#define HAVE_CTYPE_H 1
78+
#define HAVE_MATH_H 1
79+
#define HAVE_ICONV_H 1
80+
#define HAVE_SIGNAL_H 1
81+
/* #undef HAVE_ALTIVEC_H */
82+
/* #undef HAVE_PTHREAD_NP_H */
83+
#define HAVE_LIBUDEV_H 1
84+
#define HAVE_DBUS_DBUS_H 1
85+
/* #undef HAVE_IBUS_IBUS_H */
86+
87+
/* C library functions */
88+
#define HAVE_MALLOC 1
89+
#define HAVE_CALLOC 1
90+
#define HAVE_REALLOC 1
91+
#define HAVE_FREE 1
92+
#define HAVE_ALLOCA 1
93+
#ifndef __WIN32__ /* Don't use C runtime versions of these on Windows */
94+
#define HAVE_GETENV 1
95+
#define HAVE_SETENV 1
96+
#define HAVE_PUTENV 1
97+
#define HAVE_UNSETENV 1
5398
#endif
99+
#define HAVE_QSORT 1
100+
#define HAVE_ABS 1
101+
#define HAVE_BCOPY 1
102+
#define HAVE_MEMSET 1
103+
#define HAVE_MEMCPY 1
104+
#define HAVE_MEMMOVE 1
105+
#define HAVE_MEMCMP 1
106+
#define HAVE_STRLEN 1
107+
/* #undef HAVE_STRLCPY */
108+
/* #undef HAVE_STRLCAT */
109+
#define HAVE_STRDUP 1
110+
/* #undef HAVE__STRREV */
111+
/* #undef HAVE__STRUPR */
112+
/* #undef HAVE__STRLWR */
113+
/* #undef HAVE_INDEX */
114+
/* #undef HAVE_RINDEX */
115+
#define HAVE_STRCHR 1
116+
#define HAVE_STRRCHR 1
117+
#define HAVE_STRSTR 1
118+
/* #undef HAVE_ITOA */
119+
/* #undef HAVE__LTOA */
120+
/* #undef HAVE__UITOA */
121+
/* #undef HAVE__ULTOA */
122+
#define HAVE_STRTOL 1
123+
#define HAVE_STRTOUL 1
124+
/* #undef HAVE__I64TOA */
125+
/* #undef HAVE__UI64TOA */
126+
#define HAVE_STRTOLL 1
127+
#define HAVE_STRTOULL 1
128+
#define HAVE_STRTOD 1
129+
#define HAVE_ATOI 1
130+
#define HAVE_ATOF 1
131+
#define HAVE_STRCMP 1
132+
#define HAVE_STRNCMP 1
133+
/* #undef HAVE__STRICMP */
134+
#define HAVE_STRCASECMP 1
135+
/* #undef HAVE__STRNICMP */
136+
#define HAVE_STRNCASECMP 1
137+
/* #undef HAVE_SSCANF */
138+
#define HAVE_VSSCANF 1
139+
/* #undef HAVE_SNPRINTF */
140+
#define HAVE_VSNPRINTF 1
141+
#define HAVE_M_PI /**/
142+
#define HAVE_ATAN 1
143+
#define HAVE_ATAN2 1
144+
#define HAVE_ACOS 1
145+
#define HAVE_ASIN 1
146+
#define HAVE_CEIL 1
147+
#define HAVE_COPYSIGN 1
148+
#define HAVE_COS 1
149+
#define HAVE_COSF 1
150+
#define HAVE_FABS 1
151+
#define HAVE_FLOOR 1
152+
#define HAVE_LOG 1
153+
#define HAVE_POW 1
154+
#define HAVE_SCALBN 1
155+
#define HAVE_SIN 1
156+
#define HAVE_SINF 1
157+
#define HAVE_SQRT 1
158+
#define HAVE_SQRTF 1
159+
#define HAVE_TAN 1
160+
#define HAVE_TANF 1
161+
#define HAVE_FSEEKO 1
162+
#define HAVE_FSEEKO64 1
163+
#define HAVE_SIGACTION 1
164+
#define HAVE_SA_SIGACTION 1
165+
#define HAVE_SETJMP 1
166+
#define HAVE_NANOSLEEP 1
167+
#define HAVE_SYSCONF 1
168+
/* #undef HAVE_SYSCTLBYNAME */
169+
#define HAVE_CLOCK_GETTIME 1
170+
/* #undef HAVE_GETPAGESIZE */
171+
#define HAVE_MPROTECT 1
172+
#define HAVE_ICONV 1
173+
#define HAVE_PTHREAD_SETNAME_NP 1
174+
/* #undef HAVE_PTHREAD_SET_NAME_NP */
175+
#define HAVE_SEM_TIMEDWAIT 1
176+
177+
#else
178+
#define HAVE_STDARG_H 1
179+
#define HAVE_STDDEF_H 1
180+
#define HAVE_STDINT_H 1
181+
#endif /* HAVE_LIBC */
182+
183+
/* SDL internal assertion support */
184+
/* #undef SDL_DEFAULT_ASSERT_LEVEL */
185+
186+
/* Allow disabling of core subsystems */
187+
/* #undef SDL_ATOMIC_DISABLED */
188+
/* #undef SDL_AUDIO_DISABLED */
189+
/* #undef SDL_CPUINFO_DISABLED */
190+
/* #undef SDL_EVENTS_DISABLED */
191+
/* #undef SDL_FILE_DISABLED */
192+
/* #undef SDL_JOYSTICK_DISABLED */
193+
/* #undef SDL_HAPTIC_DISABLED */
194+
/* #undef SDL_LOADSO_DISABLED */
195+
/* #undef SDL_RENDER_DISABLED */
196+
/* #undef SDL_THREADS_DISABLED */
197+
/* #undef SDL_TIMERS_DISABLED */
198+
/* #undef SDL_VIDEO_DISABLED */
199+
/* #undef SDL_POWER_DISABLED */
200+
/* #undef SDL_FILESYSTEM_DISABLED */
201+
202+
/* Enable various audio drivers */
203+
/* #undef SDL_AUDIO_DRIVER_ALSA */
204+
/* #undef SDL_AUDIO_DRIVER_ALSA_DYNAMIC */
205+
/* #undef SDL_AUDIO_DRIVER_ARTS */
206+
/* #undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC */
207+
/* #undef SDL_AUDIO_DRIVER_PULSEAUDIO */
208+
/* #undef SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC */
209+
/* #undef SDL_AUDIO_DRIVER_HAIKU */
210+
/* #undef SDL_AUDIO_DRIVER_BSD */
211+
/* #undef SDL_AUDIO_DRIVER_COREAUDIO */
212+
#define SDL_AUDIO_DRIVER_DISK 1
213+
#define SDL_AUDIO_DRIVER_DUMMY 1
214+
/* #undef SDL_AUDIO_DRIVER_ANDROID */
215+
/* #undef SDL_AUDIO_DRIVER_XAUDIO2 */
216+
/* #undef SDL_AUDIO_DRIVER_DSOUND */
217+
/* #undef SDL_AUDIO_DRIVER_ESD */
218+
/* #undef SDL_AUDIO_DRIVER_ESD_DYNAMIC */
219+
/* #undef SDL_AUDIO_DRIVER_NACL */
220+
/* #undef SDL_AUDIO_DRIVER_NAS */
221+
/* #undef SDL_AUDIO_DRIVER_NAS_DYNAMIC */
222+
/* #undef SDL_AUDIO_DRIVER_SNDIO */
223+
/* #undef SDL_AUDIO_DRIVER_SNDIO_DYNAMIC */
224+
#define SDL_AUDIO_DRIVER_OSS 1
225+
/* #undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H */
226+
/* #undef SDL_AUDIO_DRIVER_PAUDIO */
227+
/* #undef SDL_AUDIO_DRIVER_QSA */
228+
/* #undef SDL_AUDIO_DRIVER_SUNAUDIO */
229+
/* #undef SDL_AUDIO_DRIVER_WINMM */
230+
/* #undef SDL_AUDIO_DRIVER_FUSIONSOUND */
231+
/* #undef SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC */
232+
/* #undef SDL_AUDIO_DRIVER_EMSCRIPTEN */
233+
234+
/* Enable various input drivers */
235+
#define SDL_INPUT_LINUXEV 1
236+
#define SDL_INPUT_LINUXKD 1
237+
/* #undef SDL_INPUT_TSLIB */
238+
/* #undef SDL_JOYSTICK_HAIKU */
239+
/* #undef SDL_JOYSTICK_DINPUT */
240+
/* #undef SDL_JOYSTICK_XINPUT */
241+
/* #undef SDL_JOYSTICK_DUMMY */
242+
/* #undef SDL_JOYSTICK_IOKIT */
243+
#define SDL_JOYSTICK_LINUX 1
244+
/* #undef SDL_JOYSTICK_ANDROID */
245+
/* #undef SDL_JOYSTICK_WINMM */
246+
/* #undef SDL_JOYSTICK_USBHID */
247+
/* #undef SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H */
248+
/* #undef SDL_JOYSTICK_EMSCRIPTEN */
249+
/* #undef SDL_HAPTIC_DUMMY */
250+
#define SDL_HAPTIC_LINUX 1
251+
/* #undef SDL_HAPTIC_IOKIT */
252+
/* #undef SDL_HAPTIC_DINPUT */
253+
/* #undef SDL_HAPTIC_XINPUT */
254+
255+
/* Enable various shared object loading systems */
256+
/* #undef SDL_LOADSO_HAIKU */
257+
#define SDL_LOADSO_DLOPEN 1
258+
/* #undef SDL_LOADSO_DUMMY */
259+
/* #undef SDL_LOADSO_LDG */
260+
/* #undef SDL_LOADSO_WINDOWS */
261+
262+
/* Enable various threading systems */
263+
#define SDL_THREAD_PTHREAD 1
264+
#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1
265+
/* #undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP */
266+
/* #undef SDL_THREAD_WINDOWS */
267+
268+
/* Enable various timer systems */
269+
/* #undef SDL_TIMER_HAIKU */
270+
/* #undef SDL_TIMER_DUMMY */
271+
#define SDL_TIMER_UNIX 1
272+
/* #undef SDL_TIMER_WINDOWS */
273+
274+
/* Enable various video drivers */
275+
/* #undef SDL_VIDEO_DRIVER_HAIKU */
276+
/* #undef SDL_VIDEO_DRIVER_COCOA */
277+
/* #undef SDL_VIDEO_DRIVER_DIRECTFB */
278+
/* #undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC */
279+
#define SDL_VIDEO_DRIVER_DUMMY 1
280+
/* #undef SDL_VIDEO_DRIVER_WINDOWS */
281+
/* #undef SDL_VIDEO_DRIVER_WAYLAND */
282+
/* #undef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
283+
/* #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC */
284+
/* #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL */
285+
/* #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR */
286+
/* #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON */
287+
/* #undef SDL_VIDEO_DRIVER_MIR */
288+
/* #undef SDL_VIDEO_DRIVER_MIR_DYNAMIC */
289+
/* #undef SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON */
290+
/* #undef SDL_VIDEO_DRIVER_X11 */
291+
#define SDL_VIDEO_DRIVER_RPI 1
292+
/* #undef SDL_VIDEO_DRIVER_ANDROID */
293+
/* #undef SDL_VIDEO_DRIVER_EMSCRIPTEN */
294+
/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC */
295+
/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT */
296+
/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR */
297+
/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA */
298+
/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 */
299+
/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR */
300+
/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS */
301+
/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE */
302+
/* #undef SDL_VIDEO_DRIVER_X11_XCURSOR */
303+
/* #undef SDL_VIDEO_DRIVER_X11_XDBE */
304+
/* #undef SDL_VIDEO_DRIVER_X11_XINERAMA */
305+
/* #undef SDL_VIDEO_DRIVER_X11_XINPUT2 */
306+
/* #undef SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH */
307+
/* #undef SDL_VIDEO_DRIVER_X11_XRANDR */
308+
/* #undef SDL_VIDEO_DRIVER_X11_XSCRNSAVER */
309+
/* #undef SDL_VIDEO_DRIVER_X11_XSHAPE */
310+
/* #undef SDL_VIDEO_DRIVER_X11_XVIDMODE */
311+
/* #undef SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS */
312+
/* #undef SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY */
313+
/* #undef SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM */
314+
/* #undef SDL_VIDEO_DRIVER_NACL */
315+
/* #undef SDL_VIDEO_DRIVER_VIVANTE */
316+
/* #undef SDL_VIDEO_DRIVER_VIVANTE_VDK */
317+
318+
/* #undef SDL_VIDEO_RENDER_D3D */
319+
/* #undef SDL_VIDEO_RENDER_D3D11 */
320+
/* #undef SDL_VIDEO_RENDER_OGL */
321+
#define SDL_VIDEO_RENDER_OGL_ES 1
322+
#define SDL_VIDEO_RENDER_OGL_ES2 1
323+
/* #undef SDL_VIDEO_RENDER_DIRECTFB */
324+
325+
/* Enable OpenGL support */
326+
/* #undef SDL_VIDEO_OPENGL */
327+
#define SDL_VIDEO_OPENGL_ES 1
328+
#define SDL_VIDEO_OPENGL_ES2 1
329+
/* #undef SDL_VIDEO_OPENGL_BGL */
330+
/* #undef SDL_VIDEO_OPENGL_CGL */
331+
#define SDL_VIDEO_OPENGL_EGL 1
332+
/* #undef SDL_VIDEO_OPENGL_GLX */
333+
/* #undef SDL_VIDEO_OPENGL_WGL */
334+
/* #undef SDL_VIDEO_OPENGL_OSMESA */
335+
/* #undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC */
336+
337+
/* Enable system power support */
338+
#define SDL_POWER_LINUX 1
339+
/* #undef SDL_POWER_WINDOWS */
340+
/* #undef SDL_POWER_MACOSX */
341+
/* #undef SDL_POWER_HAIKU */
342+
/* #undef SDL_POWER_ANDROID */
343+
/* #undef SDL_POWER_EMSCRIPTEN */
344+
/* #undef SDL_POWER_HARDWIRED */
345+
346+
/* Enable system filesystem support */
347+
/* #undef SDL_FILESYSTEM_HAIKU */
348+
/* #undef SDL_FILESYSTEM_COCOA */
349+
/* #undef SDL_FILESYSTEM_DUMMY */
350+
#define SDL_FILESYSTEM_UNIX 1
351+
/* #undef SDL_FILESYSTEM_WINDOWS */
352+
/* #undef SDL_FILESYSTEM_NACL */
353+
/* #undef SDL_FILESYSTEM_ANDROID */
354+
/* #undef SDL_FILESYSTEM_EMSCRIPTEN */
355+
356+
/* Enable assembly routines */
357+
#define SDL_ASSEMBLY_ROUTINES 1
358+
/* #undef SDL_ALTIVEC_BLITTERS */
54359

55360
#endif /* _SDL_config_h */

src/video/SDL_egl.c

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa
265265
LOAD_FUNC(eglWaitGL);
266266
LOAD_FUNC(eglBindAPI);
267267
LOAD_FUNC(eglQueryString);
268-
268+
LOAD_FUNC(eglSurfaceAttrib);
269269
#if !defined(__WINRT__)
270270
_this->egl_data->egl_display = _this->egl_data->eglGetDisplay(native_display);
271271
if (!_this->egl_data->egl_display) {
@@ -606,12 +606,17 @@ SDL_EGL_CreateSurface(_THIS, NativeWindowType nw)
606606

607607
ANativeWindow_setBuffersGeometry(nw, 0, 0, format);
608608
}
609-
#endif
610-
611-
return _this->egl_data->eglCreateWindowSurface(
612-
_this->egl_data->egl_display,
613-
_this->egl_data->egl_config,
614-
nw, NULL);
609+
#endif
610+
611+
EGLSurface surface = _this->egl_data->eglCreateWindowSurface(
612+
_this->egl_data->egl_display,
613+
_this->egl_data->egl_config,
614+
nw, NULL);
615+
616+
if (_this->egl_data->eglSurfaceAttrib(_this->egl_data->egl_display, surface, EGL_SWAP_BEHAVIOR, EGL_BUFFER_PRESERVED) == EGL_FALSE)
617+
printf("Cannot set EGL_BUFFER_PRESERVED\n");
618+
619+
return surface;
615620
}
616621

617622
void

0 commit comments

Comments
 (0)