On Fri, 05 Feb 2016 18:00:23 +0000 Mike Blumenkrantz <michael.blumenkra...@gmail.com> said:
> 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. i am guessing that it's simple that events are queued and not yet processed and something is causing them to be processed after comp is shut down. that's what it looked like. emotion_shutdown does this to process queued events from thread back-ends to shut them down cleanly. this happens by luck to catch new x11 events too ... which all assume when they are called e_comp is always there and alive. there is no nice solution here except to "guard". > 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 > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ras...@rasterman.com ------------------------------------------------------------------------------ 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