I would much prefer figuring out what the underlying issue is here rather than having to consistently add impossible-case null checks everywhere a global variable (which should exist for all normal use cases) is dereferenced.
On Fri, Feb 5, 2016 at 4:36 AM Carsten Haitzler <ras...@rasterman.com> wrote: > 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) > > -- > > > ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel