<html><head></head><body><div class="gmail_quote">Le 21 juin 2017 16:14:31 GMT+03:00, Thomas Guillem <thomas@gllm.fr> a écrit :<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">Calling a EGL function while a GLX context is current or vice-versa seems to be<br />an undefined behaviour. See next commit.<br />---<br /> include/vlc_opengl.h              | 7 +++++++<br /> modules/video_output/glx.c        | 1 +<br /> modules/video_output/opengl/egl.c | 1 +<br /> modules/video_output/win32/wgl.c  | 1 +<br /> 4 files changed, 10 insertions(+)<br /><br />diff --git a/include/vlc_opengl.h b/include/vlc_opengl.h<br />index 6642f78554..7510e3dbb8 100644<br />--- a/include/vlc_opengl.h<br />+++ b/include/vlc_opengl.h<br />@@ -45,6 +45,13 @@ struct vlc_gl_t<br />     module_t *module;<br />     void *sys;<br /> <br />+    enum {<br />+        VLC_GL_EXT_CUSTOM,<br />+        VLC_GL_EXT_EGL,<br />+        VLC_GL_EXT_GLX,<br />+        VLC_GL_EXT_WGL,<br />+    } ext;<br />+<br />     int  (*makeCurrent)(vlc_gl_t *);<br />     void (*releaseCurrent)(vlc_gl_t *);<br />     void (*resize)(vlc_gl_t *, unsigned, unsigned);<br />diff --git a/modules/video_output/glx.c b/modules/video_output/glx.c<br />index dc692e9a59..5aab26cfe9 100644<br />--- a/modules/video_output/glx.c<br />+++ b/modules/video_output/glx.c<br />@@ -202,6 +202,7 @@ static int Open (vlc_object_t *obj)<br />     }<br /> <br />     /* Initialize OpenGL callbacks */<br />+    gl->ext = VLC_GL_EXT_GLX;<br />     gl->sys = sys;<br />     gl->makeCurrent = MakeCurrent;<br />     gl->releaseCurrent = ReleaseCurrent;<br />diff --git a/modules/video_output/opengl/egl.c b/modules/video_output/opengl/egl.c<br />index 22cf3545c9..085d513896 100644<br />--- a/modules/video_output/opengl/egl.c<br />+++ b/modules/video_output/opengl/egl.c<br />@@ -366,6 +366,7 @@ static int Open (vlc_object_t *obj, const struct gl_api *api)<br />     sys->context = ctx;<br /> <br />     /* Initialize OpenGL callbacks */<br />+    gl->ext = VLC_GL_EXT_EGL;<br />     gl->makeCurrent = MakeCurrent;<br />     gl->releaseCurrent = ReleaseCurrent;<br />     gl->resize = Resize;<br />diff --git a/modules/video_output/win32/wgl.c b/modules/video_output/win32/wgl.c<br />index 3baee6e350..665df7436f 100644<br />--- a/modules/video_output/win32/wgl.c<br />+++ b/modules/video_output/win32/wgl.c<br />@@ -214,6 +214,7 @@ static int Open(vlc_object_t *object)<br />     wglMakeCurrent(sys->hGLDC, NULL);<br /> #endif<br /> <br />+    gl->ext = VLC_GL_EXT_WGL;<br />     gl->makeCurrent = MakeCurrent;<br />     gl->releaseCurrent = ReleaseCurrent;<br />     gl->resize = NULL;</pre></blockquote></div><br clear="all">The whole point of separating provider and GL is that you don't call the provider-specific functions from the generic code.<br>
<br>
This patcj is a big layering violation. No thanks.<br>
-- <br>
Rémi Denis-Courmont<br>
Typed on an inconvenient virtual keyboard</body></html>