void *sys;
int (*makeCurrent)(vlc_gl_t *);
+ void (*releaseCurrent)(vlc_gl_t *);
void (*swap)(vlc_gl_t *);
int (*lock)(vlc_gl_t *);
void (*unlock)(vlc_gl_t *);
return gl->makeCurrent(gl);
}
+static inline void vlc_gl_ReleaseCurrent(vlc_gl_t *gl)
+{
+ gl->releaseCurrent(gl);
+}
+
static inline int vlc_gl_Lock(vlc_gl_t *gl)
{
return (gl->lock != NULL) ? gl->lock(gl) : VLC_SUCCESS;
/* OpenGL callbacks */
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 *);
/* Initialize OpenGL callbacks */
gl->sys = sys;
gl->makeCurrent = MakeCurrent;
+ gl->releaseCurrent = ReleaseCurrent;
gl->swap = SwapBuffers;
gl->getProcAddress = GetSymbol;
gl->lock = NULL;
return VLC_SUCCESS;
}
+static void ReleaseCurrent (vlc_gl_t *gl)
+{
+ vlc_gl_sys_t *sys = gl->sys;
+
+ eglMakeCurrent (sys->display, EGL_NO_SURFACE, EGL_NO_SURFACE,
+ EGL_NO_CONTEXT);
+}
+
static void SwapBuffers (vlc_gl_t *gl)
{
vlc_gl_sys_t *sys = gl->sys;
} 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 *);
goto error;
}
+ /* Initialize OpenGL callbacks */
+ gl->sys = sys;
+ gl->makeCurrent = MakeCurrent;
+ gl->releaseCurrent = ReleaseCurrent;
+ gl->swap = SwapBuffers;
+ gl->getProcAddress = GetSymbol;
+ gl->lock = NULL;
+ gl->unlock = NULL;
+
#ifdef GLX_ARB_get_proc_address
bool is_swap_interval_set = false;
# ifdef GLX_SGI_swap_control
# endif
#endif
- /* Initialize OpenGL callbacks */
- gl->sys = sys;
- gl->makeCurrent = MakeCurrent;
- gl->swap = SwapBuffers;
- gl->getProcAddress = GetSymbol;
- gl->lock = NULL;
- gl->unlock = NULL;
return VLC_SUCCESS;
error:
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;