Clean up X11 OpenGL ES backend If you really need to switch between OpenGL and GLES context types, just issue a SDL_GL_UnloadLibrary manually.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
diff --git a/src/video/x11/SDL_x11opengles.c b/src/video/x11/SDL_x11opengles.c
index f5947e4..71517a8 100644
--- a/src/video/x11/SDL_x11opengles.c
+++ b/src/video/x11/SDL_x11opengles.c
@@ -36,6 +36,7 @@ X11_GLES_LoadLibrary(_THIS, const char *path) {
/* If the profile requested is not GL ES, switch over to X11_GL functions */
if (_this->gl_config.profile_mask != SDL_GL_CONTEXT_PROFILE_ES) {
#if SDL_VIDEO_OPENGL_GLX
+ X11_GLES_UnloadLibrary(_this);
_this->GL_LoadLibrary = X11_GL_LoadLibrary;
_this->GL_GetProcAddress = X11_GL_GetProcAddress;
_this->GL_UnloadLibrary = X11_GL_UnloadLibrary;
@@ -100,19 +101,6 @@ X11_GLES_CreateContext(_THIS, SDL_Window * window)
return context;
}
-void
-X11_GLES_DeleteContext(_THIS, SDL_GLContext context)
-{
- /* FIXME: This "crappy fix" comes from the previous GLES X11 code,
- * it's required so you can create a GLX context, destroy it and create a EGL one
- * To be able to fix this, we need to add a function SDL_GL_ResetContext and
- * disallow SDL_GL_MakeCurrent from taking a NULL pointer, thus ensuring we can
- * determine if it is a GLX or EGL context
- */
- SDL_EGL_DeleteContext(_this, context);
- X11_GLES_UnloadLibrary(_this);
-}
-
SDL_EGL_SwapWindow_impl(X11)
SDL_EGL_MakeCurrent_impl(X11)
diff --git a/src/video/x11/SDL_x11opengles.h b/src/video/x11/SDL_x11opengles.h
index 9574e1c..978f91f 100644
--- a/src/video/x11/SDL_x11opengles.h
+++ b/src/video/x11/SDL_x11opengles.h
@@ -38,13 +38,13 @@ typedef struct SDL_PrivateGLESData
#define X11_GLES_UnloadLibrary SDL_EGL_UnloadLibrary
#define X11_GLES_SetSwapInterval SDL_EGL_SetSwapInterval
#define X11_GLES_GetSwapInterval SDL_EGL_GetSwapInterval
+#define X11_GLES_DeleteContext SDL_EGL_DeleteContext
extern int X11_GLES_LoadLibrary(_THIS, const char *path);
extern XVisualInfo *X11_GLES_GetVisual(_THIS, Display * display, int screen);
extern SDL_GLContext X11_GLES_CreateContext(_THIS, SDL_Window * window);
extern void X11_GLES_SwapWindow(_THIS, SDL_Window * window);
extern int X11_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context);
-extern void X11_GLES_DeleteContext(_THIS, SDL_GLContext context);
#endif /* SDL_VIDEO_OPENGL_EGL */