e_startup: check for efreet errors

for the case efreet does not come up with any event, give a error to the
  user
This commit is contained in:
Marcel Hollerbach 2017-08-01 22:20:00 +02:00
parent 3051df7fee
commit 5820015f77
1 changed files with 15 additions and 1 deletions

View File

@ -9,17 +9,19 @@
static void _e_startup(void); static void _e_startup(void);
static void _e_startup_next_cb(void *data); static void _e_startup_next_cb(void *data);
static Eina_Bool _e_startup_event_cb(void *data, int ev_type, void *ev); static Eina_Bool _e_startup_event_cb(void *data, int ev_type, void *ev);
static Eina_Bool _e_startup_time_exceeded(void *data);
/* local subsystem globals */ /* local subsystem globals */
static E_Order *startup_apps = NULL; static E_Order *startup_apps = NULL;
static int start_app_pos = -1; static int start_app_pos = -1;
static Ecore_Event_Handler *desktop_cache_update_handler = NULL; static Ecore_Event_Handler *desktop_cache_update_handler = NULL;
static Ecore_Timer *timer;
static Eina_Bool desktop_cache_update = EINA_FALSE; static Eina_Bool desktop_cache_update = EINA_FALSE;
static Eina_Bool started = EINA_FALSE; static Eina_Bool started = EINA_FALSE;
/* externally accessible functions */ /* externally accessible functions */
E_API void E_API void
e_startup_mode_set(E_Startup_Mode mode) e_startup_mode_set(E_Startup_Mode mode)
{ {
@ -41,6 +43,7 @@ e_startup_mode_set(E_Startup_Mode mode)
ecore_event_handler_add(EFREET_EVENT_DESKTOP_CACHE_BUILD, ecore_event_handler_add(EFREET_EVENT_DESKTOP_CACHE_BUILD,
_e_startup_event_cb, _e_startup_event_cb,
strdup(buf)); strdup(buf));
timer = ecore_timer_add(5.0, _e_startup_time_exceeded, NULL);
e_init_undone(); e_init_undone();
} }
@ -110,6 +113,9 @@ _e_startup_event_cb(void *data, int ev_type EINA_UNUSED, void *ev)
char *buf; char *buf;
Efreet_Event_Cache_Update *e; Efreet_Event_Cache_Update *e;
ecore_timer_del(timer);
timer = NULL;
e = ev; e = ev;
if ((e) && (e->error)) if ((e) && (e->error))
{ {
@ -129,3 +135,11 @@ _e_startup_event_cb(void *data, int ev_type EINA_UNUSED, void *ev)
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON;
} }
static Eina_Bool
_e_startup_time_exceeded(void *data EINA_UNUSED)
{
fprintf(stderr, "E: efreet didnt notify about cache update\n");
_e_startup_error_dialog("E: Efreet did not update cache. "
"Please check your Efreet setup");
return ECORE_CALLBACK_CANCEL;
}