From df40d36d84fbdd3aae827b36d1a15739efb9225b Mon Sep 17 00:00:00 2001 From: Niklas Haas <git@haasn.xyz> Date: Wed, 20 May 2020 07:01:47 +0200 Subject: [PATCH] dav1dplay: don't freeze on render errors Returning out of this function when pl_render_image() fails is the wrong thing to do, since that leaves the swapchain frame acquired but never submitted. Instead, just clear the target FBO to blank red (to make it clear that something went wrong) and continue on with presentation. --- examples/dp_renderer_placebo.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/dp_renderer_placebo.c b/examples/dp_renderer_placebo.c index 00afcdbc1..7e7771cb3 100644 --- a/examples/dp_renderer_placebo.c +++ b/examples/dp_renderer_placebo.c @@ -328,8 +328,7 @@ static void placebo_render(void *cookie, const Dav1dPlaySettings *settings) if (!pl_render_image(rd_priv_ctx->renderer, &rd_priv_ctx->image, &target, &render_params)) { fprintf(stderr, "Failed rendering frame!\n"); - SDL_UnlockMutex(rd_priv_ctx->lock); - return; + pl_tex_clear(rd_priv_ctx->gpu, target.fbo, (float[4]){ 1.0 }); } ok = pl_swapchain_submit_frame(rd_priv_ctx->swapchain); -- GitLab