First steps to support -vo gl with SDL-based Window handling.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31062 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
reimar 2010-04-24 16:46:47 +00:00
parent 976d35bc6b
commit 6e4458ffa3
2 changed files with 40 additions and 0 deletions

View File

@ -1842,8 +1842,36 @@ static int x11_check_events(void) {
}
#endif
#ifdef CONFIG_GL_SDL
#ifdef CONFIG_SDL_SDL_H
#include <SDL/SDL.h>
#else
#include <SDL.h>
#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));

View File

@ -372,6 +372,7 @@ void glDisableYUVConversion(GLenum target, int type);
enum MPGLType {
GLTYPE_W32,
GLTYPE_X11,
GLTYPE_SDL,
};
typedef struct MPGLContext {