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
|
// Call the init function if it hasn't been called already
|
||||||
if (!sd->initialized)
|
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);
|
if (sd->init_func) sd->init_func(obj);
|
||||||
sd->initialized = EINA_TRUE;
|
sd->initialized = EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sd->resized)
|
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);
|
if (sd->resize_func) sd->resize_func(obj);
|
||||||
sd->resized = EINA_FALSE;
|
sd->resized = EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
@ -142,6 +146,8 @@ _render_cb(void *obj)
|
||||||
evas_sync(evas_object_evas_get(obj));
|
evas_sync(evas_object_evas_get(obj));
|
||||||
// Call the render function
|
// Call the render function
|
||||||
if (sd->render_func) sd->render_func(obj);
|
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
|
// Depending on the policy return true or false
|
||||||
if (sd->render_policy == ELM_GLVIEW_RENDER_POLICY_ON_DEMAND)
|
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);
|
evas_gl_make_current(sd->evasgl, sd->surface, sd->context);
|
||||||
sd->del_func(obj);
|
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);
|
ecore_idle_enterer_del(sd->render_idle_enterer);
|
||||||
evas_gl_make_current(sd->evasgl, NULL, NULL);
|
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));
|
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 *
|
EAPI Evas_Object *
|
||||||
elm_glview_add(Evas_Object *parent)
|
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_type_set(obj, MY_CLASS_NAME_LEGACY);
|
||||||
evas_obj_smart_callbacks_descriptions_set(obj, _smart_callbacks);
|
evas_obj_smart_callbacks_descriptions_set(obj, _smart_callbacks);
|
||||||
elm_interface_atspi_accessible_role_set(obj, ELM_ATSPI_ROLE_ANIMATION);
|
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 *
|
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;
|
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
|
EOLIAN static void
|
||||||
_elm_glview_draw_request(Eo *obj, Elm_Glview_Data *sd)
|
_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);
|
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Legacy wrappers */
|
/* Legacy deprecated functions */
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
elm_glview_changed_set(Evas_Object *obj)
|
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);
|
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"
|
#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.]]
|
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 {
|
@property render_policy {
|
||||||
set {
|
set {
|
||||||
[[Set the render policy for the glview object.
|
[[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.]]
|
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 {
|
@property gl_api {
|
||||||
get {
|
get {
|
||||||
[[Get the gl api struct for gl rendering.]]
|
[[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;
|
Efl.Gfx.View.view_size.set;
|
||||||
}
|
}
|
||||||
events {
|
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 {
|
constructors {
|
||||||
.version_constructor;
|
.version_constructor;
|
||||||
|
|
Loading…
Reference in New Issue