evas engines - fix partial swap to not skip swaps if full mode used

@fix
This commit is contained in:
Carsten Haitzler 2015-10-06 14:37:10 +09:00
parent ab1734ea19
commit f05686c051
3 changed files with 7 additions and 3 deletions

View File

@ -1556,7 +1556,8 @@ eng_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode render_mode)
{
ob->info->callback.pre_swap(ob->info->callback.data, ob->evas);
}
if ((glsym_eglSwapBuffersWithDamage) && (ob->swap_mode != MODE_FULL))
if ((glsym_eglSwapBuffersWithDamage) && (rects) &&
(ob->swap_mode != MODE_FULL))
{
EGLint num = 0, *result = NULL, i = 0;
Tilebuf_Rect *r;

View File

@ -3594,7 +3594,9 @@ 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) || (!surface))
if ((re->swap_mode == MODE_AUTO) ||
(re->swap_mode == MODE_FULL) ||
(!surface))
{
evas_common_tilebuf_free_render_rects(re->rects);
re->rects = NULL;

View File

@ -508,7 +508,8 @@ eng_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode render_mode)
if (ob->info->callback.pre_swap)
ob->info->callback.pre_swap(ob->info->callback.data, ob->evas);
if ((glsym_eglSwapBuffersWithDamage) && (ob->swap_mode != MODE_FULL))
if ((glsym_eglSwapBuffersWithDamage) && (rects) &&
(ob->swap_mode != MODE_FULL))
{
EGLint num = 0, *result = NULL, i = 0;
Tilebuf_Rect *r;