From df40d36d84fbdd3aae827b36d1a15739efb9225b Mon Sep 17 00:00:00 2001 From: Niklas Haas Date: Wed, 20 May 2020 07:01:47 +0200 Subject: 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 00afcdb..7e7771c 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); -- cgit v1.2.3