diff options
author | Shinwoo Kim <cinoo.kim@samsung.com> | 2020-09-24 12:16:49 +0900 |
---|---|---|
committer | Hermet Park <chuneon.park@samsung.com> | 2020-09-24 12:16:49 +0900 |
commit | 46eca1108c6982fbb26bc60ff5bc6a1f92444bc2 (patch) | |
tree | e96c60449f4731356de2f137d6a9adc05ff58299 /src/lib/evas | |
parent | f3014132cec677eb774d252e4be089604fb0af4c (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.c | 8 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_object_smart.c | 5 | ||||
-rw-r--r-- | src/lib/evas/include/evas_private.h | 2 |
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 | ||
1167 | Eina_Bool | ||
1168 | evas_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 | ||
830 | struct _Evas_Data_Node | 831 | struct _Evas_Data_Node |
@@ -1251,6 +1252,7 @@ void evas_call_smarts_calculate(Evas *e); | |||
1251 | void evas_object_smart_bounding_box_update(Evas_Object_Protected_Data *obj); | 1252 | void evas_object_smart_bounding_box_update(Evas_Object_Protected_Data *obj); |
1252 | void evas_object_smart_need_bounding_box_update(Evas_Smart_Data *o, Evas_Object_Protected_Data *obj); | 1253 | void evas_object_smart_need_bounding_box_update(Evas_Smart_Data *o, Evas_Object_Protected_Data *obj); |
1253 | Eina_Bool evas_object_smart_changed_get(Evas_Object_Protected_Data *obj); | 1254 | Eina_Bool evas_object_smart_changed_get(Evas_Object_Protected_Data *obj); |
1255 | Eina_Bool evas_object_vg_changed_get(Evas_Object_Protected_Data *obj); | ||
1254 | void evas_object_smart_attach(Evas_Object *eo_obj, Evas_Smart *s); | 1256 | void evas_object_smart_attach(Evas_Object *eo_obj, Evas_Smart *s); |
1255 | void _evas_post_event_callback_call_real(Evas *e, Evas_Public_Data* e_pd, int min_event_id); | 1257 | void _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 { \ |