evas_engines: Add fn_evas_changed callback

To allow using the pageflip completion event to drive timing in the DRM
engine we need to know as soon as possible that a render has been after
a render has been considered if it will cause a page flip or not.

The fn_evas_changed callback sends this information.
This commit is contained in:
Derek Foreman 2016-08-30 15:47:17 -05:00
parent 1591e095d5
commit 398771bf8a
14 changed files with 45 additions and 10 deletions

View File

@ -175,6 +175,13 @@ _ecore_evas_idle_enter(void *data EINA_UNUSED)
{
if (ee->engine.func->fn_render)
rend |= ee->engine.func->fn_render(ee);
/*
* Some engines that generate their own ticks based on hardware
* events need to know that render has been considered, and
* whether it will actually generate a new image or not
*/
if (ee->engine.func->fn_evas_changed)
ee->engine.func->fn_evas_changed(ee, rend);
}
#ifdef ECORE_EVAS_ASYNC_RENDER_DEBUG
if ((ee->in_async_render) && (ee->async_render_start <= 0.0))

View File

@ -606,6 +606,8 @@ static Ecore_Evas_Engine_Func _ecore_buffer_engine_func =
NULL, // fn_animator_register
NULL, // fn_animator_unregister
NULL, // fn_evas_changed
};
static void *

View File

@ -719,6 +719,8 @@ static const Ecore_Evas_Engine_Func _ecore_ews_engine_func =
NULL, // fn_animator_register
NULL, // fn_animator_unregister
NULL, // fn_evas_changed
};
void

View File

@ -156,6 +156,8 @@ struct _Ecore_Evas_Engine_Func
void (*fn_animator_register) (Ecore_Evas *ee);
void (*fn_animator_unregister)(Ecore_Evas *ee);
void (*fn_evas_changed)(Ecore_Evas *ee, Eina_Bool changed);
};
struct _Ecore_Evas_Interface

View File

@ -673,7 +673,9 @@ static Ecore_Evas_Engine_Func _ecore_cocoa_engine_func =
NULL, // fn_aux_hints_set
NULL, // fn_animator_register
NULL // fn_animator_unregister
NULL, // fn_animator_unregister
NULL, // fn_evas_changed
};
static Ecore_Cocoa_Window *

View File

@ -663,7 +663,9 @@ static Ecore_Evas_Engine_Func _ecore_evas_drm_engine_func =
NULL, // aux_hints_set
NULL, // animator_register
NULL // animator_unregister
NULL, // animator_unregister
NULL // evas_changed
};
EAPI Ecore_Evas *

View File

@ -913,7 +913,9 @@ static const Ecore_Evas_Engine_Func _ecore_extn_plug_engine_func =
NULL, // aux_hints_set
NULL, // fn_animator_register
NULL // fn_animator_unregister
NULL, // fn_animator_unregister
NULL, // fn_evas_changed
};
static Eina_Bool
@ -2078,6 +2080,8 @@ static const Ecore_Evas_Engine_Func _ecore_extn_socket_engine_func =
NULL, // fn_animator_register
NULL, // fn_animator_unregister
NULL, // fn_evas_changed
};
EAPI Ecore_Evas *

View File

@ -641,7 +641,9 @@ static Ecore_Evas_Engine_Func _ecore_fb_engine_func =
NULL, // aux_hints_set
NULL, // fn_animator_register
NULL // fn_animator_unregister
NULL, // fn_animator_unregister
NULL, // fn_evas_changed
};
EAPI Ecore_Evas *

View File

@ -463,7 +463,9 @@ static Ecore_Evas_Engine_Func _ecore_psl1ght_engine_func =
NULL, // aux_hints_set
NULL, // fn_animator_register
NULL // fn_animator_unregister
NULL, // fn_animator_unregister
NULL, // fn_evas_changed
};
EAPI Ecore_Evas *

View File

@ -552,7 +552,9 @@ static Ecore_Evas_Engine_Func _ecore_sdl_engine_func =
NULL, // aux_hints_set
NULL, // fn_animator_register
NULL // fn_animator_unregister
NULL, // fn_animator_unregister
NULL, // fn_evas_changed
};
static Ecore_Evas*

View File

@ -115,7 +115,9 @@ static Ecore_Evas_Engine_Func _ecore_wl_engine_func =
NULL, // aux_hints_set
NULL, // fn_animator_register
NULL // fn_animator_unregister
NULL, // fn_animator_unregister
NULL, // fn_evas_changed
};
/* external variables */

View File

@ -112,7 +112,9 @@ static Ecore_Evas_Engine_Func _ecore_wl_engine_func =
NULL, // aux_hints_set
NULL, // fn_animator_register
NULL // fn_animator_unregister
NULL, // fn_animator_unregister
NULL, // fn_evas_changed
};
/* external variables */

View File

@ -1203,7 +1203,9 @@ static Ecore_Evas_Engine_Func _ecore_win32_engine_func =
NULL, // aux_hints_set
NULL, // fn_animator_register
NULL // fn_animator_unregister
NULL, // fn_animator_unregister
NULL, // fn_evas_changed
};
#endif /* BUILD_ECORE_EVAS_WIN32 */

View File

@ -3744,7 +3744,9 @@ static Ecore_Evas_Engine_Func _ecore_x_engine_func =
_ecore_evas_x_aux_hints_set,
NULL, // fn_animator_register
NULL // fn_animator_unregister
NULL, // fn_animator_unregister
NULL, // fn_evas_changed
};
/*