diff options
author | wm4 <wm4@nowhere> | 2017-10-02 17:30:27 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2017-10-02 17:30:27 +0200 |
commit | 0c04ce5f0d9c4fb7311edf0ae7bdf1eef0f61235 (patch) | |
tree | 8c205467cd0020a512f128e570f2da29d0f8d0f6 /video/out/opengl/common.c | |
parent | 51985e3dd630a5fc212f643781b4a0ca7f590782 (diff) |
vo_gpu: gl: implement proper extension string search
The existing code in check_ext() avoided false positive due to
sub-strings, but allowed false negatives. Fix this with slightly better
search code, and make it available as function to other source files.
(There are some cases of strstr() still around.)
Diffstat (limited to 'video/out/opengl/common.c')
-rw-r--r-- | video/out/opengl/common.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/video/out/opengl/common.c b/video/out/opengl/common.c index db317ee843..be3ff8e438 100644 --- a/video/out/opengl/common.c +++ b/video/out/opengl/common.c @@ -31,6 +31,7 @@ #include "common.h" #include "common/common.h" +#include "utils.h" // This guesses if the current GL context is a suspected software renderer. static bool is_software_gl(GL *gl) @@ -49,14 +50,6 @@ static void GLAPIENTRY dummy_glBindFramebuffer(GLenum target, GLuint framebuffer assert(framebuffer == 0); } -static bool check_ext(GL *gl, const char *name) -{ - const char *exts = gl->extensions; - char *s = strstr(exts, name); - char *e = s ? s + strlen(name) : NULL; - return s && (s == exts || s[-1] == ' ') && (e[0] == ' ' || !e[0]); -} - #define FN_OFFS(name) offsetof(GL, name) #define DEF_FN(name) {FN_OFFS(name), "gl" # name} @@ -581,8 +574,8 @@ void mpgl_load_functions2(GL *gl, void *(*get_fn)(void *ctx, const char *n), if (ver_core) must_exist = version >= ver_core; - if (section->extension && check_ext(gl, section->extension)) - exists = true; + if (section->extension) + exists = gl_check_extension(gl->extensions, section->extension); exists |= must_exist; if (!exists) |