From 6fe17048d97f3d91a051d210d672be37ca78ef11 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 19 Jul 2012 09:36:58 -0700 Subject: [PATCH] More OpenGL ES fixes from Scott Percival --- src/video/x11/SDL_x11opengl.c | 7 +++++-- src/video/x11/SDL_x11opengles.c | 7 +++++-- src/video/x11/SDL_x11window.c | 8 +++++++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/video/x11/SDL_x11opengl.c b/src/video/x11/SDL_x11opengl.c index b10dab23d..a0e3e91c6 100755 --- a/src/video/x11/SDL_x11opengl.c +++ b/src/video/x11/SDL_x11opengl.c @@ -128,9 +128,9 @@ X11_GL_LoadLibrary(_THIS, const char *path) return -1; } -#if SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 /* If SDL_GL_CONTEXT_EGL has been changed to 1, switch over to X11_GLES functions */ if (_this->gl_config.use_egl == 1) { +#if SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 _this->GL_LoadLibrary = X11_GLES_LoadLibrary; _this->GL_GetProcAddress = X11_GLES_GetProcAddress; _this->GL_UnloadLibrary = X11_GLES_UnloadLibrary; @@ -141,8 +141,11 @@ X11_GL_LoadLibrary(_THIS, const char *path) _this->GL_SwapWindow = X11_GLES_SwapWindow; _this->GL_DeleteContext = X11_GLES_DeleteContext; return X11_GLES_LoadLibrary(_this, path); - } +#else + SDL_SetError("SDL not configured with OpenGL ES/EGL support"); + return -1; #endif + } /* Load the OpenGL library */ diff --git a/src/video/x11/SDL_x11opengles.c b/src/video/x11/SDL_x11opengles.c index 7269bcb00..03599e89d 100755 --- a/src/video/x11/SDL_x11opengles.c +++ b/src/video/x11/SDL_x11opengles.c @@ -99,9 +99,9 @@ X11_GLES_LoadLibrary(_THIS, const char *path) return -1; } -#if SDL_VIDEO_OPENGL_GLX /* If SDL_GL_CONTEXT_EGL has been changed to 0, switch over to X11_GL functions */ if (_this->gl_config.use_egl == 0) { +#if SDL_VIDEO_OPENGL_GLX _this->GL_LoadLibrary = X11_GL_LoadLibrary; _this->GL_GetProcAddress = X11_GL_GetProcAddress; _this->GL_UnloadLibrary = X11_GL_UnloadLibrary; @@ -112,8 +112,11 @@ X11_GLES_LoadLibrary(_THIS, const char *path) _this->GL_SwapWindow = X11_GL_SwapWindow; _this->GL_DeleteContext = X11_GL_DeleteContext; return X11_GL_LoadLibrary(_this, path); - } +#else + SDL_SetError("SDL not configured with OpenGL/GLX support"); + return -1; #endif + } #ifdef RTLD_GLOBAL dlopen_flags = RTLD_LAZY | RTLD_GLOBAL; diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c index f4482d2e0..ce980351b 100755 --- a/src/video/x11/SDL_x11window.c +++ b/src/video/x11/SDL_x11window.c @@ -391,7 +391,12 @@ X11_CreateWindow(_THIS, SDL_Window * window) return -1; } #if SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 - if (window->flags & SDL_WINDOW_OPENGL) { + if ((window->flags & SDL_WINDOW_OPENGL) && (_this->gl_config.use_egl == 1)) { + if (!_this->gles_data) { + XDestroyWindow(display, w); + return -1; + } + /* Create the GLES window surface */ _this->gles_data->egl_surface = _this->gles_data->eglCreateWindowSurface(_this->gles_data-> @@ -401,6 +406,7 @@ X11_CreateWindow(_THIS, SDL_Window * window) if (_this->gles_data->egl_surface == EGL_NO_SURFACE) { SDL_SetError("Could not create GLES window surface"); + XDestroyWindow(display, w); return -1; } }