forked from enlightenment/efl
elm_glview: eo-fication for set function
remove elm_glveiw_XXX_set function and create event render_set-render init_set->created resize_set-> resized del_set -> destroyed
This commit is contained in:
parent
47172d7274
commit
570d532f11
|
@ -128,12 +128,16 @@ _render_cb(void *obj)
|
|||
// Call the init function if it hasn't been called already
|
||||
if (!sd->initialized)
|
||||
{
|
||||
//TODO:will be optimized
|
||||
eo_event_callback_call(obj, ELM_GLVIEW_EVENT_CREATED, NULL);
|
||||
if (sd->init_func) sd->init_func(obj);
|
||||
sd->initialized = EINA_TRUE;
|
||||
}
|
||||
|
||||
if (sd->resized)
|
||||
{
|
||||
//TODO:will be optimized
|
||||
eo_event_callback_call(obj, ELM_GLVIEW_EVENT_RESIZED, NULL);
|
||||
if (sd->resize_func) sd->resize_func(obj);
|
||||
sd->resized = EINA_FALSE;
|
||||
}
|
||||
|
@ -142,6 +146,8 @@ _render_cb(void *obj)
|
|||
evas_sync(evas_object_evas_get(obj));
|
||||
// Call the render function
|
||||
if (sd->render_func) sd->render_func(obj);
|
||||
//TODO:will be optimized
|
||||
eo_event_callback_call(obj, ELM_GLVIEW_EVENT_RENDER, NULL);
|
||||
|
||||
// Depending on the policy return true or false
|
||||
if (sd->render_policy == ELM_GLVIEW_RENDER_POLICY_ON_DEMAND)
|
||||
|
@ -276,6 +282,8 @@ _elm_glview_evas_object_smart_del(Eo *obj, Elm_Glview_Data *sd)
|
|||
evas_gl_make_current(sd->evasgl, sd->surface, sd->context);
|
||||
sd->del_func(obj);
|
||||
}
|
||||
//TODO:will be optimised
|
||||
eo_event_callback_call(obj, ELM_GLVIEW_EVENT_DESTROYED, NULL);
|
||||
|
||||
ecore_idle_enterer_del(sd->render_idle_enterer);
|
||||
evas_gl_make_current(sd->evasgl, NULL, NULL);
|
||||
|
@ -292,6 +300,25 @@ _elm_glview_evas_object_smart_del(Eo *obj, Elm_Glview_Data *sd)
|
|||
evas_obj_smart_del(eo_super(obj, MY_CLASS));
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_cb_added(void *data EINA_UNUSED, const Eo_Event *ev)
|
||||
{
|
||||
const Eo_Callback_Array_Item *event = ev->event_info;
|
||||
|
||||
ELM_GLVIEW_DATA_GET(ev->obj, sd);
|
||||
|
||||
if (event->desc == ELM_GLVIEW_EVENT_CREATED)
|
||||
{
|
||||
sd->initialized = EINA_FALSE;
|
||||
}
|
||||
else if (event->desc == ELM_GLVIEW_EVENT_RENDER)
|
||||
{
|
||||
_set_render_policy_callback(ev->obj);
|
||||
}
|
||||
|
||||
return EO_CALLBACK_CONTINUE;
|
||||
}
|
||||
|
||||
EAPI Evas_Object *
|
||||
elm_glview_add(Evas_Object *parent)
|
||||
{
|
||||
|
@ -319,6 +346,7 @@ _elm_glview_version_constructor(Eo *obj, Elm_Glview_Data *sd,
|
|||
evas_obj_type_set(obj, MY_CLASS_NAME_LEGACY);
|
||||
evas_obj_smart_callbacks_descriptions_set(obj, _smart_callbacks);
|
||||
elm_interface_atspi_accessible_role_set(obj, ELM_ATSPI_ROLE_ANIMATION);
|
||||
eo_event_callback_add(obj, EO_BASE_EVENT_CALLBACK_ADD, _cb_added, NULL);
|
||||
}
|
||||
|
||||
EOLIAN static Eo *
|
||||
|
@ -480,32 +508,6 @@ _elm_glview_efl_gfx_view_view_size_get(Eo *obj EINA_UNUSED, Elm_Glview_Data *sd,
|
|||
if (h) *h = sd->h;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_elm_glview_init_func_set(Eo *obj EINA_UNUSED, Elm_Glview_Data *sd, Elm_GLView_Func_Cb func)
|
||||
{
|
||||
sd->initialized = EINA_FALSE;
|
||||
sd->init_func = func;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_elm_glview_del_func_set(Eo *obj EINA_UNUSED, Elm_Glview_Data *sd, Elm_GLView_Func_Cb func)
|
||||
{
|
||||
sd->del_func = func;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_elm_glview_resize_func_set(Eo *obj EINA_UNUSED, Elm_Glview_Data *sd, Elm_GLView_Func_Cb func)
|
||||
{
|
||||
sd->resize_func = func;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_elm_glview_render_func_set(Eo *obj EINA_UNUSED, Elm_Glview_Data *sd, Elm_GLView_Func_Cb func)
|
||||
{
|
||||
sd->render_func = func;
|
||||
_set_render_policy_callback(obj);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_elm_glview_draw_request(Eo *obj, Elm_Glview_Data *sd)
|
||||
{
|
||||
|
@ -537,8 +539,7 @@ _elm_glview_class_constructor(Eo_Class *klass)
|
|||
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
|
||||
}
|
||||
|
||||
/* Legacy wrappers */
|
||||
|
||||
/* Legacy deprecated functions */
|
||||
EAPI void
|
||||
elm_glview_changed_set(Evas_Object *obj)
|
||||
{
|
||||
|
@ -558,4 +559,42 @@ elm_glview_size_set(Elm_Glview *obj, int w, int h)
|
|||
{
|
||||
efl_gfx_view_size_set(obj, w, h);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_glview_init_func_set(Elm_Glview *obj, Elm_GLView_Func_Cb func)
|
||||
{
|
||||
ELM_GLVIEW_CHECK(obj);
|
||||
ELM_GLVIEW_DATA_GET(obj, sd);
|
||||
|
||||
sd->initialized = EINA_FALSE;
|
||||
sd->init_func = func;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_glview_del_func_set(Elm_Glview *obj, Elm_GLView_Func_Cb func)
|
||||
{
|
||||
ELM_GLVIEW_CHECK(obj);
|
||||
ELM_GLVIEW_DATA_GET(obj, sd);
|
||||
|
||||
sd->del_func = func;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_glview_resize_func_set(Elm_Glview *obj, Elm_GLView_Func_Cb func)
|
||||
{
|
||||
ELM_GLVIEW_CHECK(obj);
|
||||
ELM_GLVIEW_DATA_GET(obj, sd);
|
||||
|
||||
sd->resize_func = func;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_glview_render_func_set(Elm_Glview *obj, Elm_GLView_Func_Cb func)
|
||||
{
|
||||
ELM_GLVIEW_CHECK(obj);
|
||||
ELM_GLVIEW_DATA_GET(obj, sd);
|
||||
|
||||
sd->render_func = func;
|
||||
_set_render_policy_callback(obj);
|
||||
}
|
||||
#include "elm_glview.eo.c"
|
||||
|
|
|
@ -104,48 +104,6 @@ class Elm.Glview (Elm.Widget, Efl.Gfx.View)
|
|||
policy: Elm.GLView.Resize.Policy; [[The scaling policy.]]
|
||||
}
|
||||
}
|
||||
@property resize_func {
|
||||
set {
|
||||
[[Set the resize function that gets called when resize happens.
|
||||
|
||||
The resize function gets called during the render loop.
|
||||
This function allows glview to hide all the rendering
|
||||
context/surface details and have the user just call GL
|
||||
alls that they desire when resize happens.
|
||||
]]
|
||||
}
|
||||
values {
|
||||
func: Elm_GLView_Func_Cb; [[The resize function to be registered.]]
|
||||
}
|
||||
}
|
||||
@property del_func {
|
||||
set {
|
||||
[[Set the render function that runs in the main loop.
|
||||
|
||||
The registered del function gets called when GLView object
|
||||
is deleted. This function allows glview to hide all the
|
||||
rendering context/surface details and have the user just
|
||||
call GL calls that they desire when delete happens.
|
||||
]]
|
||||
}
|
||||
values {
|
||||
func: Elm_GLView_Func_Cb @nullable; [[The delete function to be registered.]]
|
||||
}
|
||||
}
|
||||
@property init_func {
|
||||
set {
|
||||
[[Set the init function that runs once in the main loop.
|
||||
|
||||
The registered init function gets called once during the
|
||||
render loop. This function allows glview to hide all the
|
||||
rendering context/surface details and have the user just
|
||||
call GL calls that they desire for initialization GL calls.
|
||||
]]
|
||||
}
|
||||
values {
|
||||
func: Elm_GLView_Func_Cb @nullable; [[The init function to be registered.]]
|
||||
}
|
||||
}
|
||||
@property render_policy {
|
||||
set {
|
||||
[[Set the render policy for the glview object.
|
||||
|
@ -179,19 +137,6 @@ class Elm.Glview (Elm.Widget, Efl.Gfx.View)
|
|||
mode: Elm.GLView.Mode; [[The mode Options OR'ed enabling Alpha, Depth, Stencil, Direct.]]
|
||||
}
|
||||
}
|
||||
@property render_func {
|
||||
set {
|
||||
[[Set the render function that runs in the main loop.
|
||||
|
||||
The render function gets called in the main loop but whether
|
||||
it runs depends on the rendering policy and whether
|
||||
@.draw_request called.
|
||||
]]
|
||||
}
|
||||
values {
|
||||
func: Elm_GLView_Func_Cb @nullable; [[The render function to be registered.]]
|
||||
}
|
||||
}
|
||||
@property gl_api {
|
||||
get {
|
||||
[[Get the gl api struct for gl rendering.]]
|
||||
|
@ -241,6 +186,34 @@ class Elm.Glview (Elm.Widget, Efl.Gfx.View)
|
|||
Efl.Gfx.View.view_size.set;
|
||||
}
|
||||
events {
|
||||
created; [[Event dispatched when first render happens.
|
||||
|
||||
The callback function gets called once during the
|
||||
render loop. Callback function allows glview to hide all the
|
||||
rendering context/surface details and have the user just
|
||||
call GL calls that they desire for initialization GL calls.
|
||||
]]
|
||||
destroyed; [[Event dispatched when GLView object is deleted.
|
||||
|
||||
The registered destroyed function gets called when GLView object
|
||||
is deleted. Callback function allows glview to hide all the
|
||||
rendering context/surface details and have the user just
|
||||
call GL calls that they desire when delete happens.
|
||||
]]
|
||||
resized; [[Event dispatched when resize happens.
|
||||
|
||||
The resized event callback functions gets called
|
||||
during the render loop. The callback function allows
|
||||
glview to hide all the rendering context/surface
|
||||
details and have the user just call GL alls that
|
||||
they desire when resize happens.
|
||||
]]
|
||||
render; [[Event dispatched when GLView is rendered.
|
||||
|
||||
The callback function gets called in the main loop but whether
|
||||
it runs depends on the rendering policy and whether
|
||||
@.draw_request gets called.
|
||||
]]
|
||||
}
|
||||
constructors {
|
||||
.version_constructor;
|
||||
|
|
Loading…
Reference in New Issue