evas-software-generic: Allow future rendering calls if evas has to skip a frame
authorChris Michael <cp.michael@samsung.com>
Thu, 19 Mar 2015 20:09:23 +0000 (16:09 -0400)
committerChris Michael <cp.michael@samsung.com>
Thu, 19 Mar 2015 20:17:25 +0000 (16:17 -0400)
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 <cp.michael@samsung.com>
src/modules/evas/engines/software_generic/evas_engine.c

index f053ace..dc4d7b3 100644 (file)
@@ -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;