summaryrefslogtreecommitdiffstats
path: root/video/out/opengl/egl_helpers.c
diff options
context:
space:
mode:
Diffstat (limited to 'video/out/opengl/egl_helpers.c')
-rw-r--r--video/out/opengl/egl_helpers.c21
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);