diff --git a/video/out/opengl/egl_helpers.c b/video/out/opengl/egl_helpers.c index 55bf376973..2de02b3eb4 100644 --- a/video/out/opengl/egl_helpers.c +++ b/video/out/opengl/egl_helpers.c @@ -108,6 +108,11 @@ static bool create_context(struct ra_ctx *ctx, EGLDisplay display, int chosen = 0; if (cb.refine_config) chosen = cb.refine_config(cb.user_data, configs, num_configs); + if (chosen < 0) { + talloc_free(configs); + MP_MSG(ctx, msgl, "Could not choose EGLConfig!\n"); + return false; + } EGLConfig config = configs[chosen]; talloc_free(configs); diff --git a/video/out/opengl/egl_helpers.h b/video/out/opengl/egl_helpers.h index eaaf9d7a48..df489daf0c 100644 --- a/video/out/opengl/egl_helpers.h +++ b/video/out/opengl/egl_helpers.h @@ -15,7 +15,9 @@ bool mpegl_create_context(struct ra_ctx *ctx, EGLDisplay display, struct mpegl_cb { // if set, pick the desired config from the given list and return its index - // defaults to 0 (they are sorted by eglChooseConfig) + // defaults to 0 (they are sorted by eglChooseConfig). return a negative + // number to indicate an error condition or that no suitable configs could + // be found. int (*refine_config)(void *user_data, EGLConfig *configs, int num_configs); void *user_data; };