summaryrefslogtreecommitdiffstats
path: root/libvo/gl_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'libvo/gl_common.h')
-rw-r--r--libvo/gl_common.h161
1 files changed, 110 insertions, 51 deletions
diff --git a/libvo/gl_common.h b/libvo/gl_common.h
index 56fcbba0e3..5a3b4c4163 100644
--- a/libvo/gl_common.h
+++ b/libvo/gl_common.h
@@ -31,21 +31,24 @@
#include <windows.h>
#include <GL/gl.h>
#include "w32_common.h"
-#else
+#endif
+#ifdef CONFIG_X11
#include <GL/gl.h>
#include <X11/Xlib.h>
#include <GL/glx.h>
#include "x11_common.h"
+// This old-vo wrapper macro would conflict with the struct member
+#undef update_xinerama_info
#endif
// workaround for some gl.h headers
-#ifndef APIENTRY
-#ifdef GLAPIENTRY
-#define APIENTRY GLAPIENTRY
+#ifndef GLAPIENTRY
+#ifdef APIENTRY
+#define GLAPIENTRY APIENTRY
#elif defined(GL_WIN32)
-#define APIENTRY __stdcall
+#define GLAPIENTRY __stdcall
#else
-#define APIENTRY
+#define GLAPIENTRY
#endif
#endif
@@ -352,60 +355,116 @@ void glDisableYUVConversion(GLenum target, int type);
#define SET_WINDOW_REINIT 1
/** \} */
+enum MPGLType {
+ GLTYPE_W32,
+ GLTYPE_X11,
+};
+
+typedef struct MPGLContext {
+ enum MPGLType type;
+ union {
+ int w32;
+#ifdef CONFIG_X11
+ XVisualInfo *x11;
+#endif
+ } vinfo;
+ union {
#ifdef GL_WIN32
-#define vo_gl_border(vo) vo_w32_border()
-#define vo_check_events() vo_w32_check_events()
-#define vo_fullscreen() vo_w32_fullscreen()
-#define vo_gl_ontop() vo_w32_ontop()
-#define vo_uninit() vo_w32_uninit()
-int setGlWindow(int *vinfo, HGLRC *context, HWND win);
-void releaseGlContext(int *vinfo, HGLRC *context);
-#else
-#define vo_gl_border(vo) vo_x11_border(vo)
-#define vo_check_events() vo_x11_check_events(mDisplay)
-#define vo_fullscreen() vo_x11_fullscreen()
-#define vo_gl_ontop() vo_x11_ontop()
-#define vo_uninit() vo_x11_uninit()
-int setGlWindow(XVisualInfo **vinfo, GLXContext *context, Window win);
-void releaseGlContext(XVisualInfo **vinfo, GLXContext *context);
-#endif
-void swapGlBuffers(void);
+ HGLRC w32;
+#endif
+#ifdef CONFIG_X11
+ GLXContext x11;
+#endif
+ } context;
+ int (*setGlWindow)(struct MPGLContext *);
+ void (*releaseGlContext)(struct MPGLContext *);
+ void (*swapGlBuffers)(struct MPGLContext *);
+ void (*update_xinerama_info)(void);
+ void (*border)(void);
+ int (*check_events)(void);
+ void (*fullscreen)(void);
+ void (*ontop)(void);
+} MPGLContext;
+
+int init_mpglcontext(MPGLContext *ctx, enum MPGLType type);
+void uninit_mpglcontext(MPGLContext *ctx);
+
+extern void (GLAPIENTRY *Begin)(GLenum);
+extern void (GLAPIENTRY *End)(void);
+extern void (GLAPIENTRY *Viewport)(GLint, GLint, GLsizei, GLsizei);
+extern void (GLAPIENTRY *MatrixMode)(GLenum);
+extern void (GLAPIENTRY *LoadIdentity)(void);
+extern void (GLAPIENTRY *Scaled)(double, double, double);
+extern void (GLAPIENTRY *Ortho)(double, double, double, double, double, double);
+extern void (GLAPIENTRY *PushMatrix)(void);
+extern void (GLAPIENTRY *PopMatrix)(void);
+extern void (GLAPIENTRY *Clear)(GLbitfield);
+extern GLuint (GLAPIENTRY *GenLists)(GLsizei);
+extern void (GLAPIENTRY *DeleteLists)(GLuint, GLsizei);
+extern void (GLAPIENTRY *NewList)(GLuint, GLenum);
+extern void (GLAPIENTRY *EndList)(void);
+extern void (GLAPIENTRY *CallList)(GLuint);
+extern void (GLAPIENTRY *CallLists)(GLsizei, GLenum, const GLvoid *);
+extern void (GLAPIENTRY *GenTextures)(GLsizei, GLuint *);
+extern void (GLAPIENTRY *DeleteTextures)(GLsizei, const GLuint *);
+extern void (GLAPIENTRY *TexEnvi)(GLenum, GLenum, GLint);
+extern void (GLAPIENTRY *Color4ub)(GLubyte, GLubyte, GLubyte, GLubyte);
+extern void (GLAPIENTRY *Color3f)(GLfloat, GLfloat, GLfloat);
+extern void (GLAPIENTRY *ClearColor)(GLclampf, GLclampf, GLclampf, GLclampf);
+extern void (GLAPIENTRY *Enable)(GLenum);
+extern void (GLAPIENTRY *Disable)(GLenum);
+extern const GLubyte *(GLAPIENTRY *GetString)(GLenum);
+extern void (GLAPIENTRY *DrawBuffer)(GLenum);
+extern void (GLAPIENTRY *DepthMask)(GLboolean);
+extern void (GLAPIENTRY *BlendFunc)(GLenum, GLenum);
+extern void (GLAPIENTRY *Flush)(void);
+extern void (GLAPIENTRY *Finish)(void);
+extern void (GLAPIENTRY *PixelStorei)(GLenum, GLint);
+extern void (GLAPIENTRY *TexImage1D)(GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+extern void (GLAPIENTRY *TexImage2D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+extern void (GLAPIENTRY *TexSubImage2D)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+extern void (GLAPIENTRY *TexParameteri)(GLenum, GLenum, GLint);
+extern void (GLAPIENTRY *TexParameterf)(GLenum, GLenum, GLfloat);
+extern void (GLAPIENTRY *TexParameterfv)(GLenum, GLenum, const GLfloat *);
+extern void (GLAPIENTRY *TexCoord2f)(GLfloat, GLfloat);
+extern void (GLAPIENTRY *Vertex2f)(GLfloat, GLfloat);
+extern void (GLAPIENTRY *GetIntegerv)(GLenum, GLint *);
-extern void (APIENTRY *GenBuffers)(GLsizei, GLuint *);
-extern void (APIENTRY *DeleteBuffers)(GLsizei, const GLuint *);
-extern void (APIENTRY *BindBuffer)(GLenum, GLuint);
-extern GLvoid* (APIENTRY *MapBuffer)(GLenum, GLenum);
-extern GLboolean (APIENTRY *UnmapBuffer)(GLenum);
-extern void (APIENTRY *BufferData)(GLenum, intptr_t, const GLvoid *, GLenum);
-extern void (APIENTRY *CombinerParameterfv)(GLenum, const GLfloat *);
-extern void (APIENTRY *CombinerParameteri)(GLenum, GLint);
-extern void (APIENTRY *CombinerInput)(GLenum, GLenum, GLenum, GLenum, GLenum,
+extern void (GLAPIENTRY *GenBuffers)(GLsizei, GLuint *);
+extern void (GLAPIENTRY *DeleteBuffers)(GLsizei, const GLuint *);
+extern void (GLAPIENTRY *BindBuffer)(GLenum, GLuint);
+extern GLvoid* (GLAPIENTRY *MapBuffer)(GLenum, GLenum);
+extern GLboolean (GLAPIENTRY *UnmapBuffer)(GLenum);
+extern void (GLAPIENTRY *BufferData)(GLenum, intptr_t, const GLvoid *, GLenum);
+extern void (GLAPIENTRY *CombinerParameterfv)(GLenum, const GLfloat *);
+extern void (GLAPIENTRY *CombinerParameteri)(GLenum, GLint);
+extern void (GLAPIENTRY *CombinerInput)(GLenum, GLenum, GLenum, GLenum, GLenum,
GLenum);
-extern void (APIENTRY *CombinerOutput)(GLenum, GLenum, GLenum, GLenum, GLenum,
+extern void (GLAPIENTRY *CombinerOutput)(GLenum, GLenum, GLenum, GLenum, GLenum,
GLenum, GLenum, GLboolean, GLboolean,
GLboolean);
-extern void (APIENTRY *BeginFragmentShader)(void);
-extern void (APIENTRY *EndFragmentShader)(void);
-extern void (APIENTRY *SampleMap)(GLuint, GLuint, GLenum);
-extern void (APIENTRY *ColorFragmentOp2)(GLenum, GLuint, GLuint, GLuint, GLuint,
+extern void (GLAPIENTRY *BeginFragmentShader)(void);
+extern void (GLAPIENTRY *EndFragmentShader)(void);
+extern void (GLAPIENTRY *SampleMap)(GLuint, GLuint, GLenum);
+extern void (GLAPIENTRY *ColorFragmentOp2)(GLenum, GLuint, GLuint, GLuint, GLuint,
GLuint, GLuint, GLuint, GLuint, GLuint);
-extern void (APIENTRY *ColorFragmentOp3)(GLenum, GLuint, GLuint, GLuint, GLuint,
+extern void (GLAPIENTRY *ColorFragmentOp3)(GLenum, GLuint, GLuint, GLuint, GLuint,
GLuint, GLuint, GLuint, GLuint, GLuint,
GLuint, GLuint, GLuint);
-extern void (APIENTRY *SetFragmentShaderConstant)(GLuint, const GLfloat *);
-extern void (APIENTRY *ActiveTexture)(GLenum);
-extern void (APIENTRY *BindTexture)(GLenum, GLuint);
-extern void (APIENTRY *MultiTexCoord2f)(GLenum, GLfloat, GLfloat);
-extern void (APIENTRY *GenPrograms)(GLsizei, GLuint *);
-extern void (APIENTRY *DeletePrograms)(GLsizei, const GLuint *);
-extern void (APIENTRY *BindProgram)(GLenum, GLuint);
-extern void (APIENTRY *ProgramString)(GLenum, GLenum, GLsizei, const GLvoid *);
-extern void (APIENTRY *ProgramEnvParameter4f)(GLenum, GLuint, GLfloat, GLfloat,
+extern void (GLAPIENTRY *SetFragmentShaderConstant)(GLuint, const GLfloat *);
+extern void (GLAPIENTRY *ActiveTexture)(GLenum);
+extern void (GLAPIENTRY *BindTexture)(GLenum, GLuint);
+extern void (GLAPIENTRY *MultiTexCoord2f)(GLenum, GLfloat, GLfloat);
+extern void (GLAPIENTRY *GenPrograms)(GLsizei, GLuint *);
+extern void (GLAPIENTRY *DeletePrograms)(GLsizei, const GLuint *);
+extern void (GLAPIENTRY *BindProgram)(GLenum, GLuint);
+extern void (GLAPIENTRY *ProgramString)(GLenum, GLenum, GLsizei, const GLvoid *);
+extern void (GLAPIENTRY *ProgramEnvParameter4f)(GLenum, GLuint, GLfloat, GLfloat,
GLfloat, GLfloat);
-extern int (APIENTRY *SwapInterval)(int);
-extern void (APIENTRY *TexImage3D)(GLenum, GLint, GLenum, GLsizei, GLsizei,
+extern int (GLAPIENTRY *SwapInterval)(int);
+extern void (GLAPIENTRY *TexImage3D)(GLenum, GLint, GLenum, GLsizei, GLsizei,
GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-extern void* (APIENTRY *AllocateMemoryMESA)(void *, int, size_t, float, float, float);
-extern void (APIENTRY *FreeMemoryMESA)(void *, int, void *);
+extern void* (GLAPIENTRY *AllocateMemoryMESA)(void *, int, size_t, float, float, float);
+extern void (GLAPIENTRY *FreeMemoryMESA)(void *, int, void *);
#endif /* MPLAYER_GL_COMMON_H */