raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=26a7ba3a58d573121b1dfbbca9f72988ecd8a891

commit 26a7ba3a58d573121b1dfbbca9f72988ecd8a891
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Thu Feb 4 23:58:05 2016 +0900

    e comp: fix crashes on exit/restart when e_comp is NULL
    
    when we are shutting down i seem to get into a state where e_comp is
    null yet we are still processing events. this fixes that and checks.
---
 src/bin/e_comp.c   | 1 +
 src/bin/e_comp_x.c | 8 ++++++++
 2 files changed, 9 insertions(+)

diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c
index 4bce85d..5232d35 100644
--- a/src/bin/e_comp.c
+++ b/src/bin/e_comp.c
@@ -1574,6 +1574,7 @@ e_comp_block_window_del(void)
 E_API E_Comp *
 e_comp_find_by_window(Ecore_Window win)
 {
+   if (!e_comp) return NULL;
    if ((e_comp->win == win) || (e_comp->ee_win == win) || (e_comp->root == 
win)) return e_comp;
    return NULL;
 }
diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index 015f740..6cb50b5 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -1238,6 +1238,7 @@ _e_comp_x_show_request(void *data EINA_UNUSED, int type 
EINA_UNUSED, Ecore_X_Eve
    E_Client *ec;
 
    //INF("X SHOW REQ: %u", ev->win);
+   if (!e_comp) return ECORE_CALLBACK_RENEW;
    ec = _e_comp_x_client_find_by_window(ev->win);
    if (e_comp_ignore_win_find(ev->win) ||
      (ec && (ec->ignored || ec->override)) ||
@@ -2210,6 +2211,7 @@ _e_comp_x_mapping_change(void *data EINA_UNUSED, int type 
EINA_UNUSED, Ecore_X_E
    const Eina_List *l;
    E_Client *ec;
 
+   if (!e_comp) return ECORE_CALLBACK_RENEW;
    if (_e_comp_x_mapping_change_disabled) return ECORE_CALLBACK_RENEW;
    e_comp_canvas_keys_ungrab();
    EINA_LIST_FOREACH(e_comp->clients, l, ec)
@@ -2241,6 +2243,7 @@ _e_comp_x_mouse_in(void *data EINA_UNUSED, int type 
EINA_UNUSED, Ecore_X_Event_M
 {
    E_Client *ec;
 
+   if (!e_comp) return ECORE_CALLBACK_RENEW;
    if (e_comp->comp_type != E_PIXMAP_TYPE_X) return ECORE_CALLBACK_RENEW;
    ec = _e_comp_x_client_find_by_window(ev->win);
    if (!ec) return ECORE_CALLBACK_RENEW;
@@ -2269,6 +2272,7 @@ _e_comp_x_mouse_out(void *data EINA_UNUSED, int type 
EINA_UNUSED, Ecore_X_Event_
 {
    E_Client *ec;
 
+   if (!e_comp) return ECORE_CALLBACK_RENEW;
    if (e_comp->comp_type != E_PIXMAP_TYPE_X) return ECORE_CALLBACK_RENEW;
    if ((ev->mode == ECORE_X_EVENT_MODE_UNGRAB) &&
        (ev->detail == ECORE_X_EVENT_DETAIL_INFERIOR))
@@ -2292,6 +2296,7 @@ _e_comp_x_mouse_wheel(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_Event_Mouse_
    E_Client *ec;
    E_Binding_Event_Wheel ev2;
 
+   if (!e_comp) return ECORE_CALLBACK_RENEW;
    if (e_comp->comp_type != E_PIXMAP_TYPE_X) return ECORE_CALLBACK_RENEW;
    //if (action_input_win)
      //ec = action_border;
@@ -2315,6 +2320,7 @@ _e_comp_x_mouse_up(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_Event_Mouse_But
    E_Client *ec;
    E_Binding_Event_Mouse_Button ev2;
 
+   if (!e_comp) return ECORE_CALLBACK_RENEW;
    if (e_comp->comp_type != E_PIXMAP_TYPE_X) return ECORE_CALLBACK_RENEW;
    //if (action_input_win)
      //ec = action_border;
@@ -2343,6 +2349,7 @@ _e_comp_x_mouse_down(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_Event_Mouse_B
    E_Client *ec;
    E_Binding_Event_Mouse_Button ev2;
 
+   if (!e_comp) return ECORE_CALLBACK_RENEW;
    if (e_comp->comp_type != E_PIXMAP_TYPE_X) return ECORE_CALLBACK_RENEW;
    if (e_client_action_get()) return ECORE_CALLBACK_RENEW; //block extra mouse 
buttons during action
    //if (action_input_win)
@@ -2365,6 +2372,7 @@ _e_comp_x_mouse_move(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_Event_Mouse_M
 {
    E_Client *ec;
 
+   if (!e_comp) return ECORE_CALLBACK_RENEW;
    if (e_comp->comp_type != E_PIXMAP_TYPE_X) return ECORE_CALLBACK_RENEW;
    ec = e_client_action_get();
    if (!ec)

-- 


Reply via email to