From 6d9484a543333e8de953e0b67d066e0621891741 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sun, 12 Nov 2006 02:16:16 +0000 Subject: [PATCH] fix signal name for init splash - add "bad init splash" detection timeout. SVN revision: 27060 --- data/init/default.edc | 4 ++-- src/bin/e_init.c | 34 ++++++++++++++++++++++++++++------ 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/data/init/default.edc b/data/init/default.edc index bbdfd95b9..96f162485 100644 --- a/data/init/default.edc +++ b/data/init/default.edc @@ -1336,8 +1336,8 @@ collections { program { name: "done1"; - signal: "e.state.done"; - source: ""; + signal: "e,state,done"; + source: "e"; script { new val; diff --git a/src/bin/e_init.c b/src/bin/e_init.c index 0284ec301..d88f0d300 100644 --- a/src/bin/e_init.c +++ b/src/bin/e_init.c @@ -8,6 +8,7 @@ static void _e_init_cb_signal_disable(void *data, Evas_Object *obj, const char * static void _e_init_cb_signal_enable(void *data, Evas_Object *obj, const char *emission, const char *source); static void _e_init_cb_signal_done_ok(void *data, Evas_Object *obj, const char *emission, const char *source); static int _e_init_cb_window_configure(void *data, int ev_type, void *ev); +static int _e_init_cb_timeout(void *data); /* local subsystem globals */ static Ecore_X_Window _e_init_root_win = 0; @@ -17,8 +18,9 @@ static Evas *_e_init_evas = NULL; static Evas_Object *_e_init_object = NULL; static Evas_Object *_e_init_icon_box = NULL; static E_Pointer *_e_init_pointer = NULL; -static Ecore_Event_Handler *e_init_configure_handler = NULL; - +static Ecore_Event_Handler *_e_init_configure_handler = NULL; +static Ecore_Timer *_e_init_timeout_timer = NULL; + /* startup icons */ static Evas_Coord _e_init_icon_size = 0; static Evas_List *_e_init_icon_list = NULL; @@ -35,7 +37,7 @@ e_init_init(void) Evas_List *l, *screens; const char *s; - e_init_configure_handler = + _e_init_configure_handler = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CONFIGURE, _e_init_cb_window_configure, NULL); @@ -121,8 +123,8 @@ e_init_init(void) EAPI int e_init_shutdown(void) { - ecore_event_handler_del(e_init_configure_handler); - e_init_configure_handler = NULL; + ecore_event_handler_del(_e_init_configure_handler); + _e_init_configure_handler = NULL; e_init_hide(); e_canvas_cache_flush(); return 1; @@ -192,7 +194,8 @@ EAPI void e_init_done(void) { if (!_e_init_object) return; - edje_object_signal_emit(_e_init_object, "e.state.done", ""); + edje_object_signal_emit(_e_init_object, "e,state,done", "e"); + _e_init_timeout_timer = ecore_timer_add(30.0, _e_init_cb_timeout, NULL); } EAPI void @@ -275,6 +278,11 @@ static void _e_init_cb_signal_done_ok(void *data, Evas_Object *obj, const char *emission, const char *source) { e_init_hide(); + if (_e_init_timeout_timer) + { + ecore_timer_del(_e_init_timeout_timer); + _e_init_timeout_timer = NULL; + } } static int @@ -290,3 +298,17 @@ _e_init_cb_window_configure(void *data, int ev_type, void *ev) evas_object_resize(_e_init_object, e->w, e->h); return 1; } + +static int +_e_init_cb_timeout(void *data) +{ + e_init_hide(); + _e_init_timeout_timer = NULL; + e_util_dialog_internal(_("Theme Bug Detected"), + _("The theme you are using for your init splash
" + "has a bug. It does not respond to signals when
" + "startup is complete. You should use an init
" + "splash theme that is correctly made or fix the
" + "one you use.")); + return 0; +}