Commit cff9eac637a600034077271f9342072e44c36716

Sam Lantinga 2014-06-22T09:48:46

Fixed bug 2579 - SDL fails to compile on Windows when only EGL+OpenGL ES defined callow.mark Compiling with SDL_VIDEO_RENDER_OGL=0, SDL_VIDEO_OPENGL=0, SDL_VIDEO_OPENGL_WGL=0, SDL_VIDEO_RENDER_OGL_ES2=1, SDL_VIDEO_OPENGL_ES2=1 and SDL_VIDEO_OPENGL_EGL=1 set in SDL_config_windows.h fails. A patch is attached. See bug #2570 for reasons you might want to compile this way.

diff --git a/src/video/windows/SDL_windowsopengles.c b/src/video/windows/SDL_windowsopengles.c
index a921ba8..544fe52 100644
--- a/src/video/windows/SDL_windowsopengles.c
+++ b/src/video/windows/SDL_windowsopengles.c
@@ -64,6 +64,7 @@ WIN_GLES_CreateContext(_THIS, SDL_Window * window)
     SDL_GLContext context;
     SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
 
+#if SDL_VIDEO_OPENGL_WGL
     if (_this->gl_config.profile_mask != SDL_GL_CONTEXT_PROFILE_ES) {
         /* Switch to WGL based functions */
         WIN_GLES_UnloadLibrary(_this);
@@ -83,6 +84,7 @@ WIN_GLES_CreateContext(_THIS, SDL_Window * window)
 
         return WIN_GL_CreateContext(_this, window);
     }
+#endif
 
     context = SDL_EGL_CreateContext(_this, data->egl_surface);
     return context;
diff --git a/src/video/windows/SDL_windowsvideo.c b/src/video/windows/SDL_windowsvideo.c
index 12eca03..bb64d91 100644
--- a/src/video/windows/SDL_windowsvideo.c
+++ b/src/video/windows/SDL_windowsvideo.c
@@ -159,6 +159,17 @@ WIN_CreateDevice(int devindex)
     device->GL_GetSwapInterval = WIN_GL_GetSwapInterval;
     device->GL_SwapWindow = WIN_GL_SwapWindow;
     device->GL_DeleteContext = WIN_GL_DeleteContext;
+#elif SDL_VIDEO_OPENGL_EGL        
+    /* Use EGL based functions */
+    device->GL_LoadLibrary = WIN_GLES_LoadLibrary;
+    device->GL_GetProcAddress = WIN_GLES_GetProcAddress;
+    device->GL_UnloadLibrary = WIN_GLES_UnloadLibrary;
+    device->GL_CreateContext = WIN_GLES_CreateContext;
+    device->GL_MakeCurrent = WIN_GLES_MakeCurrent;
+    device->GL_SetSwapInterval = WIN_GLES_SetSwapInterval;
+    device->GL_GetSwapInterval = WIN_GLES_GetSwapInterval;
+    device->GL_SwapWindow = WIN_GLES_SwapWindow;
+    device->GL_DeleteContext = WIN_GLES_DeleteContext;
 #endif
     device->StartTextInput = WIN_StartTextInput;
     device->StopTextInput = WIN_StopTextInput;