vlc | branch: master | Alexandre Janniaux <aja...@videolabs.io> | Wed Jan 27 18:13:45 2021 +0100| [41b34d1188acd469d5bc2d3e83112162fd36a570] | committer: Alexandre Janniaux
opengl: api: drain error in case of error Otherwise, the error might be detected afterwards in an unrelated part of the code, leading to potential failure or assertion depending on the compilation options. Indeed, an OpenGL call can lead to multiple errors and glGetError must be called in loop, as mentioned by the documentation. https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetError.xhtml > To allow for distributed implementations, there may be several error > flags. If any single error flag has recorded an error, the value of > that flag is returned and that flag is reset to GL_NO_ERROR when > glGetError is called. If more than one flag has recorded an error, > glGetError returns and clears an arbitrary error flag value. Thus, > glGetError should always be called in a loop, until it returns > GL_NO_ERROR, if all error flags are to be reset. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=41b34d1188acd469d5bc2d3e83112162fd36a570 --- modules/video_output/opengl/gl_api.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/video_output/opengl/gl_api.c b/modules/video_output/opengl/gl_api.c index 1264dde2a1..d990493832 100644 --- a/modules/video_output/opengl/gl_api.c +++ b/modules/video_output/opengl/gl_api.c @@ -163,6 +163,10 @@ vlc_gl_api_Init(struct vlc_gl_api *api, vlc_gl_t *gl) */ api->supports_multisample = version >= 3 && error == GL_NO_ERROR; + /* Drain the errors before continuing. */ + while (error != GL_NO_ERROR) + error = api->vt.GetError(); + #ifdef USE_OPENGL_ES2 api->is_gles = true; /* OpenGL ES 2 includes support for non-power of 2 textures by specification _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits