summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2015-10-14 14:47:38 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2015-10-14 14:50:54 +0900
commit620dc45af9aafa339229562019140c2a153d8f62 (patch)
treee293cee3eeb95c9fb61485972358f5b1c11f838c
parent094b781b7fa9674ebeccdb92adbdedb981c3b42f (diff)
evas - obj destructrion - handle when obj layer is partly destroyed
this should fix T2715 and anything similar as during destruction object internals are a bit weird.
-rw-r--r--src/lib/evas/canvas/evas_object_main.c12
-rw-r--r--src/modules/evas/engines/gl_x11/evas_engine.c2
2 files changed, 7 insertions, 7 deletions
diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c
index 91d6761b41..7338e31422 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -680,20 +680,20 @@ _evas_object_eo_base_destructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
680 if (obj->focused) 680 if (obj->focused)
681 { 681 {
682 obj->focused = EINA_FALSE; 682 obj->focused = EINA_FALSE;
683 if (obj->layer) 683 if ((obj->layer) && (obj->layer->evas))
684 obj->layer->evas->focused = NULL; 684 obj->layer->evas->focused = NULL;
685 _evas_object_event_new(); 685 _evas_object_event_new();
686 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FOCUS_OUT, NULL, _evas_event_counter); 686 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FOCUS_OUT, NULL, _evas_event_counter);
687 if (obj->layer) 687 if ((obj->layer) && (obj->layer->evas))
688 _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas); 688 _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
689 } 689 }
690 _evas_object_event_new(); 690 _evas_object_event_new();
691 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_DEL, NULL, _evas_event_counter); 691 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_DEL, NULL, _evas_event_counter);
692 if (obj->layer) 692 if ((obj->layer) && (obj->layer->evas))
693 _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas); 693 _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
694 if ((obj->mouse_grabbed > 0) && (obj->layer)) 694 if ((obj->mouse_grabbed > 0) && (obj->layer) && (obj->layer->evas))
695 obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed; 695 obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed;
696 if (((obj->mouse_in) || (obj->mouse_grabbed > 0)) && (obj->layer)) 696 if (((obj->mouse_in) || (obj->mouse_grabbed > 0)) && (obj->layer) && (obj->layer->evas))
697 obj->layer->evas->pointer.object.in = eina_list_remove(obj->layer->evas->pointer.object.in, eo_obj); 697 obj->layer->evas->pointer.object.in = eina_list_remove(obj->layer->evas->pointer.object.in, eo_obj);
698 obj->mouse_grabbed = 0; 698 obj->mouse_grabbed = 0;
699 obj->mouse_in = 0; 699 obj->mouse_in = 0;
@@ -739,7 +739,7 @@ _evas_object_eo_base_destructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
739 if (obj->is_smart) evas_object_smart_del(eo_obj); 739 if (obj->is_smart) evas_object_smart_del(eo_obj);
740 _evas_object_event_new(); 740 _evas_object_event_new();
741 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FREE, NULL, _evas_event_counter); 741 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FREE, NULL, _evas_event_counter);
742 if (obj->layer) 742 if ((obj->layer) && (obj->layer->evas))
743 _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas); 743 _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
744 evas_object_smart_cleanup(eo_obj); 744 evas_object_smart_cleanup(eo_obj);
745 obj->delete_me = 1; 745 obj->delete_me = 1;
diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c b/src/modules/evas/engines/gl_x11/evas_engine.c
index 3d4dd12c00..6c60a690ba 100644
--- a/src/modules/evas/engines/gl_x11/evas_engine.c
+++ b/src/modules/evas/engines/gl_x11/evas_engine.c
@@ -1366,7 +1366,7 @@ gl_extn_veto(Render_Engine *re)
1366 glsym_eglSetDamageRegionKHR = NULL; 1366 glsym_eglSetDamageRegionKHR = NULL;
1367 } 1367 }
1368 if (!strstr(str, "EGL_NOK_texture_from_pixmap")) 1368 if (!strstr(str, "EGL_NOK_texture_from_pixmap"))
1369 { 1369/ {
1370 extn_have_y_inverted = 0; 1370 extn_have_y_inverted = 0;
1371 } 1371 }
1372 else 1372 else