summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2016-05-11 15:33:08 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2016-05-11 15:40:10 -0400
commit4a47f74b3ae3d26e867bf2ef0879768a9a938716 (patch)
tree1a068dfa1501a2f9709a9b9cc48844002fc6f160
parent6d397e313b9c402167cc3206b19a8ca60a2525ea (diff)
enforce setting alpha on comp objects only after image data has been set
setting alpha can trigger a render sync, crashing if the old data is no longer valid
-rw-r--r--src/bin/e_comp_object.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index db9c7e63d..174810470 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -3824,10 +3824,7 @@ e_comp_object_render(Evas_Object *obj)
3824 3824
3825 if (e_comp->comp_type == E_PIXMAP_TYPE_WL) 3825 if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
3826 { 3826 {
3827 Eina_Bool alpha = e_pixmap_image_is_argb(cw->ec->pixmap);
3828
3829 pix = e_pixmap_image_data_get(cw->ec->pixmap); 3827 pix = e_pixmap_image_data_get(cw->ec->pixmap);
3830 evas_object_image_alpha_set(cw->obj, alpha);
3831 ret = EINA_TRUE; 3828 ret = EINA_TRUE;
3832 goto end; 3829 goto end;
3833 } 3830 }
@@ -3887,9 +3884,11 @@ e_comp_object_render(Evas_Object *obj)
3887 eina_iterator_free(it); 3884 eina_iterator_free(it);
3888end: 3885end:
3889 evas_object_image_data_set(cw->obj, cw->blanked ? NULL : pix); 3886 evas_object_image_data_set(cw->obj, cw->blanked ? NULL : pix);
3887 _e_comp_object_alpha_set(cw);
3890 EINA_LIST_FOREACH(cw->obj_mirror, l, o) 3888 EINA_LIST_FOREACH(cw->obj_mirror, l, o)
3891 { 3889 {
3892 evas_object_image_data_set(o, pix); 3890 evas_object_image_data_set(o, pix);
3891 evas_object_image_alpha_set(o, evas_object_image_alpha_get(cw->obj));
3893 evas_object_image_pixels_dirty_set(o, EINA_FALSE); 3892 evas_object_image_pixels_dirty_set(o, EINA_FALSE);
3894 } 3893 }
3895 3894