diff options
-rw-r--r-- | video/out/opengl/egl_helpers.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/video/out/opengl/egl_helpers.c b/video/out/opengl/egl_helpers.c index 3d937a57aa..05f594f4e0 100644 --- a/video/out/opengl/egl_helpers.c +++ b/video/out/opengl/egl_helpers.c @@ -70,24 +70,23 @@ static bool create_context(EGLDisplay display, struct mp_log *log, bool probing, EGL_NONE }; - EGLint config_count; - EGLConfig *configs = NULL; + EGLint num_configs; + if (!eglChooseConfig(display, attributes, NULL, 0, &num_configs)) + num_configs = 0; - eglChooseConfig(display, attributes, NULL, 0, &config_count); + EGLConfig *configs = talloc_array(NULL, EGLConfig, num_configs); + if (!eglChooseConfig(display, attributes, configs, num_configs, &num_configs)) + num_configs = 0; - if (config_count) { - configs = talloc_array(NULL, EGLConfig, config_count); - eglChooseConfig(display, attributes, configs, config_count, &config_count); - } - - if (!config_count) { - mp_msg(log, msgl, "Could not find EGL configuration!\n"); + if (!num_configs) { + talloc_free(configs); + mp_msg(log, msgl, "Could not choose EGLConfig!\n"); return false; } int chosen = 0; if (opts->refine_config) - chosen = opts->refine_config(opts->user_data, configs, config_count); + chosen = opts->refine_config(opts->user_data, configs, num_configs); EGLConfig config = configs[chosen]; talloc_free(configs); |