]> git.sesse.net Git - vlc/blobdiff - modules/video_output/glx.c
macosx: video effects: fix threshold checkbox visibility
[vlc] / modules / video_output / glx.c
index a1ff22d12e5db6c079f8c2921be160df28859265..dc692e9a59c397b44523d8adf4195b7cd481de3f 100644 (file)
 #include <vlc_vout_window.h>
 #include <vlc_xlib.h>
 
-static int Open (vlc_object_t *);
-static void Close (vlc_object_t *);
-
-vlc_module_begin ()
-    set_shortname (N_("GLX"))
-    set_description (N_("GLX extension for OpenGL"))
-    set_category (CAT_VIDEO)
-    set_subcategory (SUBCAT_VIDEO_VOUT)
-    set_capability ("opengl", 20)
-    set_callbacks (Open, Close)
-vlc_module_end ()
-
 typedef struct vlc_gl_sys_t
 {
     Display *display;
@@ -54,10 +42,38 @@ typedef struct vlc_gl_sys_t
     GLXContext ctx;
 } vlc_gl_sys_t;
 
-static int MakeCurrent (vlc_gl_t *);
-static void ReleaseCurrent (vlc_gl_t *);
-static void SwapBuffers (vlc_gl_t *);
-static void *GetSymbol(vlc_gl_t *, const char *);
+static int MakeCurrent (vlc_gl_t *gl)
+{
+    vlc_gl_sys_t *sys = gl->sys;
+
+    if (!glXMakeContextCurrent (sys->display, sys->win, sys->win, sys->ctx))
+        return VLC_EGENERIC;
+    return VLC_SUCCESS;
+}
+
+static void ReleaseCurrent (vlc_gl_t *gl)
+{
+    vlc_gl_sys_t *sys = gl->sys;
+
+    glXMakeContextCurrent (sys->display, None, None, NULL);
+}
+
+static void SwapBuffers (vlc_gl_t *gl)
+{
+    vlc_gl_sys_t *sys = gl->sys;
+
+    glXSwapBuffers (sys->display, sys->win);
+}
+
+static void *GetSymbol(vlc_gl_t *gl, const char *procname)
+{
+    (void) gl;
+#ifdef GLX_ARB_get_proc_address
+    return glXGetProcAddressARB ((const GLubyte *)procname);
+#else
+    return NULL;
+#endif
+}
 
 static bool CheckGLX (vlc_object_t *vd, Display *dpy)
 {
@@ -101,7 +117,7 @@ static int Open (vlc_object_t *obj)
 {
     vlc_gl_t *gl = (vlc_gl_t *)obj;
 
-    if (!vlc_xlib_init (obj))
+    if (gl->surface->type != VOUT_WINDOW_TYPE_XID || !vlc_xlib_init (obj))
         return VLC_EGENERIC;
 
     /* Initialize GLX display */
@@ -189,10 +205,9 @@ static int Open (vlc_object_t *obj)
     gl->sys = sys;
     gl->makeCurrent = MakeCurrent;
     gl->releaseCurrent = ReleaseCurrent;
+    gl->resize = NULL;
     gl->swap = SwapBuffers;
     gl->getProcAddress = GetSymbol;
-    gl->lock = NULL;
-    gl->unlock = NULL;
 
 #ifdef GLX_ARB_get_proc_address
     bool is_swap_interval_set = false;
@@ -242,35 +257,11 @@ static void Close (vlc_object_t *obj)
     free (sys);
 }
 
-static int MakeCurrent (vlc_gl_t *gl)
-{
-    vlc_gl_sys_t *sys = gl->sys;
-
-    if (!glXMakeContextCurrent (sys->display, sys->win, sys->win, sys->ctx))
-        return VLC_EGENERIC;
-    return VLC_SUCCESS;
-}
-
-static void ReleaseCurrent (vlc_gl_t *gl)
-{
-    vlc_gl_sys_t *sys = gl->sys;
-
-    glXMakeContextCurrent (sys->display, None, None, NULL);
-}
-
-static void SwapBuffers (vlc_gl_t *gl)
-{
-    vlc_gl_sys_t *sys = gl->sys;
-
-    glXSwapBuffers (sys->display, sys->win);
-}
-
-static void *GetSymbol(vlc_gl_t *gl, const char *procname)
-{
-    (void) gl;
-#ifdef GLX_ARB_get_proc_address
-    return glXGetProcAddressARB ((const GLubyte *)procname);
-#else
-    return NULL;
-#endif
-}
+vlc_module_begin ()
+    set_shortname (N_("GLX"))
+    set_description (N_("GLX extension for OpenGL"))
+    set_category (CAT_VIDEO)
+    set_subcategory (SUBCAT_VIDEO_VOUT)
+    set_capability ("opengl", 20)
+    set_callbacks (Open, Close)
+vlc_module_end ()