From 2725a248c993856d70323c3a0bb0d859d7501789 Mon Sep 17 00:00:00 2001 From: Chris Michael Date: Thu, 19 Mar 2015 16:09:23 -0400 Subject: [PATCH] evas-software-generic: Allow future rendering calls if evas has to skip a frame Summary: If we do not get a new_region_for_update from an engine, it could mean that the engine has skipped a frame. In that case, we still want to try and render any future frames. Before this commit, evas would never try to re-render anything again once it hit a failed frame. To fix this, we test for a valid returned region, and if we don't get one, mark this frame as failed so we can try again. NB: Thanks for the help Cedric !! :) @fix Signed-off-by: Chris Michael --- src/modules/evas/engines/software_generic/evas_engine.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c index f053ace..dc4d7b3 100644 --- a/src/modules/evas/engines/software_generic/evas_engine.c +++ b/src/modules/evas/engines/software_generic/evas_engine.c @@ -3376,8 +3376,10 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i surface = re->outbuf_new_region_for_update(re->ob, *x, *y, *w, *h, cx, cy, cw, ch); - if (!re->cur_rect) + if ((!re->cur_rect) || (!surface)) { + evas_common_tilebuf_free_render_rects(re->rects); + re->rects = NULL; re->end = 1; } return surface; -- 2.7.4