On 01/27/2011 05:01 PM, Sebastian Dransfeld wrote: > On 01/27/2011 10:23 PM, Christopher Michael wrote: >> On 01/27/2011 04:14 PM, Enlightenment SVN wrote: >>> Log: >>> Wait for cache update before e_startup >>> >>> We need to wait for the cache build to complete, else we might have no >>> cache, and get no startup apps. >>> >>> Author: englebass >>> Date: 2011-01-27 13:14:30 -0800 (Thu, 27 Jan 2011) >>> New Revision: 56332 >>> Trac: http://trac.enlightenment.org/e/changeset/56332 >>> >>> Modified: >>> trunk/e/src/bin/e_startup.c >>> >>> Modified: trunk/e/src/bin/e_startup.c >>> =================================================================== >>> --- trunk/e/src/bin/e_startup.c 2011-01-27 21:08:59 UTC (rev 56331) >>> +++ trunk/e/src/bin/e_startup.c 2011-01-27 21:14:30 UTC (rev 56332) >>> @@ -8,10 +8,12 @@ >>> /* local subsystem functions */ >>> static void _e_startup(void); >>> static void _e_startup_next_cb(void *data); >>> +static Eina_Bool _e_startup_event_cb(void *data, int ev_type, void *ev); >>> >>> /* local subsystem globals */ >>> static E_Order *startup_apps = NULL; >>> static int start_app_pos = -1; >>> +static Ecore_Event_Handler *desktop_cache_update_handler = NULL; >>> >>> /* externally accessible functions */ >>> EAPI void >>> @@ -31,11 +33,11 @@ >>> if (!ecore_file_exists(buf)) >>> e_prefix_data_concat_static(buf, >>> "data/applications/restart/.order"); >>> } >>> - startup_apps = e_order_new(buf); >>> - if (!startup_apps) return; >>> - start_app_pos = 0; >>> + desktop_cache_update_handler = >>> + ecore_event_handler_add(EFREET_EVENT_DESKTOP_CACHE_UPDATE, >>> + _e_startup_event_cb, >>> + strdup(buf)); >>> e_init_undone(); >>> - _e_startup(); >>> } >>> >>> /* local subsystem functions */ >>> @@ -71,3 +73,18 @@ >>> { >>> _e_startup(); >>> } >>> + >>> +static Eina_Bool >>> +_e_startup_event_cb(void *data, int ev_type __UNUSED__, void *ev >>> __UNUSED__) >>> +{ >>> + char *buf; >>> + >>> + ecore_event_handler_del(desktop_cache_update_handler); >>> + buf = data; >>> + startup_apps = e_order_new(buf); >>> + if (startup_apps) >>> + start_app_pos = 0; >>> + free(buf); >>> + _e_startup(); >>> + return ECORE_CALLBACK_PASS_ON; >>> +} >>> >> >> Wouldn't ECORE_CALLBACK_CANCEL be better here ? > > ECORE_CALLBACK_CANCEL isn't an option here, either pass on the callback, > or stop the callback from propagating (ECORE_CALLBACK_DONE). > > S.
Ahhh, I confused the two...meant ECORE_CALLBACK_DONE .. but either way I suppose it doesn't matter as the event_handler gets deleted anyway so it would not be called again regardless. dh ------------------------------------------------------------------------------ Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)! Finally, a world-class log management solution at an even better price-free! Download using promo code Free_Logger_4_Dev2Dev. Offer expires February 28th, so secure your free ArcSight Logger TODAY! http://p.sf.net/sfu/arcsight-sfd2d _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel