summaryrefslogtreecommitdiff
path: root/src/lib/evas
diff options
context:
space:
mode:
authorShinwoo Kim <cinoo.kim@samsung.com>2020-09-24 12:16:49 +0900
committerHermet Park <chuneon.park@samsung.com>2020-09-24 12:16:49 +0900
commit46eca1108c6982fbb26bc60ff5bc6a1f92444bc2 (patch)
treee96c60449f4731356de2f137d6a9adc05ff58299 /src/lib/evas
parentf3014132cec677eb774d252e4be089604fb0af4c (diff)
evas vg: check vg changed
Summary: It is not able to render even though vg object has a chance to render, because evas_object_smart_changed_get checks only Evas_Object_Protected_Data, when Efl_Canvas_Vg_Object_Data.changed is TRUE. Reviewers: Hermet, jsuya, herb Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12152
Diffstat (limited to 'src/lib/evas')
-rw-r--r--src/lib/evas/canvas/efl_canvas_vg_object.c8
-rw-r--r--src/lib/evas/canvas/evas_object_smart.c5
-rw-r--r--src/lib/evas/include/evas_private.h2
3 files changed, 14 insertions, 1 deletions
diff --git a/src/lib/evas/canvas/efl_canvas_vg_object.c b/src/lib/evas/canvas/efl_canvas_vg_object.c
index 1c49ac5ac1..5317c375a6 100644
--- a/src/lib/evas/canvas/efl_canvas_vg_object.c
+++ b/src/lib/evas/canvas/efl_canvas_vg_object.c
@@ -384,6 +384,7 @@ _efl_canvas_vg_object_efl_object_constructor(Eo *eo_obj, Efl_Canvas_Vg_Object_Da
384 obj->func = &object_func; 384 obj->func = &object_func;
385 obj->private_data = efl_data_ref(eo_obj, MY_CLASS); 385 obj->private_data = efl_data_ref(eo_obj, MY_CLASS);
386 obj->type = o_type; 386 obj->type = o_type;
387 obj->is_vg_object = EINA_TRUE;
387 388
388 /* default root node */ 389 /* default root node */
389 pd->obj = obj; 390 pd->obj = obj;
@@ -1163,5 +1164,12 @@ evas_object_vg_fill_mode_get(const Evas_Object *obj)
1163 return _efl_ui_canvas_object_vg_fill_mode_to_evas_object_vg_fill_mode(efl_canvas_vg_object_fill_mode_get(obj)); 1164 return _efl_ui_canvas_object_vg_fill_mode_to_evas_object_vg_fill_mode(efl_canvas_vg_object_fill_mode_get(obj));
1164} 1165}
1165 1166
1167Eina_Bool
1168evas_object_vg_changed_get(Evas_Object_Protected_Data *obj)
1169{
1170 Efl_Canvas_Vg_Object_Data *pd = obj->private_data;
1171 return pd->changed;
1172}
1173
1166#include "efl_canvas_vg_object.eo.c" 1174#include "efl_canvas_vg_object.eo.c"
1167#include "efl_canvas_vg_object_eo.legacy.c" 1175#include "efl_canvas_vg_object_eo.legacy.c"
diff --git a/src/lib/evas/canvas/evas_object_smart.c b/src/lib/evas/canvas/evas_object_smart.c
index 2a27d7b1e8..cc0ab2c09d 100644
--- a/src/lib/evas/canvas/evas_object_smart.c
+++ b/src/lib/evas/canvas/evas_object_smart.c
@@ -1392,7 +1392,10 @@ evas_object_smart_changed_get(Evas_Object_Protected_Data *obj)
1392 if (has_map) 1392 if (has_map)
1393 { 1393 {
1394 if ((obj->need_surface_clear && obj->changed && !obj->is_smart) || 1394 if ((obj->need_surface_clear && obj->changed && !obj->is_smart) ||
1395 ((obj->changed_pchange) && (obj->changed_map))) 1395 ((obj->changed_pchange) && (obj->changed_map)) ||
1396 /* A condition for a rare case which has obj->changed is FALSE,
1397 but Efl_Canvas_Vg_Object_Data.changed is TRUE. */
1398 (obj->is_vg_object && evas_object_vg_changed_get(obj)))
1396 return EINA_TRUE; 1399 return EINA_TRUE;
1397 } 1400 }
1398 } 1401 }
diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h
index d270b2be65..1af914f51c 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -825,6 +825,7 @@ struct _Evas_Object_Protected_Data
825 Eina_Bool events_filter_enabled : 1; 825 Eina_Bool events_filter_enabled : 1;
826 Eina_Bool is_pointer_inside_legacy : 1; 826 Eina_Bool is_pointer_inside_legacy : 1;
827 Eina_Bool is_filter_object : 1; 827 Eina_Bool is_filter_object : 1;
828 Eina_Bool is_vg_object : 1;
828}; 829};
829 830
830struct _Evas_Data_Node 831struct _Evas_Data_Node
@@ -1251,6 +1252,7 @@ void evas_call_smarts_calculate(Evas *e);
1251void evas_object_smart_bounding_box_update(Evas_Object_Protected_Data *obj); 1252void evas_object_smart_bounding_box_update(Evas_Object_Protected_Data *obj);
1252void evas_object_smart_need_bounding_box_update(Evas_Smart_Data *o, Evas_Object_Protected_Data *obj); 1253void evas_object_smart_need_bounding_box_update(Evas_Smart_Data *o, Evas_Object_Protected_Data *obj);
1253Eina_Bool evas_object_smart_changed_get(Evas_Object_Protected_Data *obj); 1254Eina_Bool evas_object_smart_changed_get(Evas_Object_Protected_Data *obj);
1255Eina_Bool evas_object_vg_changed_get(Evas_Object_Protected_Data *obj);
1254void evas_object_smart_attach(Evas_Object *eo_obj, Evas_Smart *s); 1256void evas_object_smart_attach(Evas_Object *eo_obj, Evas_Smart *s);
1255void _evas_post_event_callback_call_real(Evas *e, Evas_Public_Data* e_pd, int min_event_id); 1257void _evas_post_event_callback_call_real(Evas *e, Evas_Public_Data* e_pd, int min_event_id);
1256#define _evas_post_event_callback_call(e, pd, id) do { \ 1258#define _evas_post_event_callback_call(e, pd, id) do { \