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:
parent
1591e095d5
commit
398771bf8a
|
@ -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))
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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*
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue