diff --git a/libvo/gl_common.c b/libvo/gl_common.c index e8b66e1ccc..91281a3c00 100644 --- a/libvo/gl_common.c +++ b/libvo/gl_common.c @@ -1842,8 +1842,36 @@ static int x11_check_events(void) { } #endif +#ifdef CONFIG_GL_SDL +#ifdef CONFIG_SDL_SDL_H +#include +#else +#include +#endif + +static void swapGlBuffers_sdl(MPGLContext *ctx) { + SDL_GL_SwapBuffers(); +} + +#endif + +static int setGlWindow_dummy(MPGLContext *ctx) { + getFunctions(setNull, NULL); + return SET_WINDOW_OK; +} + +static void releaseGlContext_dummy(MPGLContext *ctx) { +} + +static int dummy_check_events(void) { + return 0; +} + int init_mpglcontext(MPGLContext *ctx, enum MPGLType type) { memset(ctx, 0, sizeof(*ctx)); + ctx->setGlWindow = setGlWindow_dummy; + ctx->releaseGlContext = releaseGlContext_dummy; + ctx->check_events = dummy_check_events; ctx->type = type; switch (ctx->type) { #ifdef CONFIG_GL_WIN32 @@ -1869,6 +1897,12 @@ int init_mpglcontext(MPGLContext *ctx, enum MPGLType type) { ctx->fullscreen = vo_x11_fullscreen; ctx->ontop = vo_x11_ontop; return vo_init(); +#endif +#ifdef CONFIG_GL_SDL + case GLTYPE_SDL: + SDL_Init(SDL_INIT_VIDEO); + ctx->swapGlBuffers = swapGlBuffers_sdl; + return 1; #endif default: return 0; @@ -1887,6 +1921,11 @@ void uninit_mpglcontext(MPGLContext *ctx) { case GLTYPE_X11: vo_x11_uninit(); break; +#endif +#ifdef CONFIG_GL_SDL + case GLTYPE_SDL: + SDL_QuitSubSystem(SDL_INIT_VIDEO); + break; #endif } memset(ctx, 0, sizeof(*ctx)); diff --git a/libvo/gl_common.h b/libvo/gl_common.h index ef38f58808..f6f6a4f234 100644 --- a/libvo/gl_common.h +++ b/libvo/gl_common.h @@ -372,6 +372,7 @@ void glDisableYUVConversion(GLenum target, int type); enum MPGLType { GLTYPE_W32, GLTYPE_X11, + GLTYPE_SDL, }; typedef struct MPGLContext {