2004-11-24 19:37:45 -08:00
|
|
|
#include "e.h"
|
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API int E_EVENT_INIT_DONE = 0;
|
2010-02-10 06:13:29 -08:00
|
|
|
|
2009-08-12 10:38:17 -07:00
|
|
|
/* local variables */
|
2007-09-23 18:16:47 -07:00
|
|
|
static int done = 0;
|
|
|
|
static int undone = 0;
|
2013-04-18 00:28:59 -07:00
|
|
|
static Evas_Object *_e_init_object = NULL;
|
|
|
|
static Eina_List *splash_objs = NULL;
|
|
|
|
static Ecore_Timer *_e_init_timeout_timer = NULL;
|
|
|
|
|
|
|
|
static Eina_Bool
|
2015-03-18 15:09:09 -07:00
|
|
|
_e_init_cb_timeout(void *data EINA_UNUSED)
|
2013-04-18 00:28:59 -07:00
|
|
|
{
|
|
|
|
_e_init_timeout_timer = NULL;
|
|
|
|
e_init_hide();
|
|
|
|
return ECORE_CALLBACK_CANCEL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2015-03-18 15:09:09 -07:00
|
|
|
_e_init_cb_signal_done_ok(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
|
2013-04-18 00:28:59 -07:00
|
|
|
{
|
|
|
|
e_init_hide();
|
|
|
|
}
|
2007-09-23 18:16:47 -07:00
|
|
|
|
2009-08-12 10:38:17 -07:00
|
|
|
/* public functions */
|
2010-11-22 07:21:32 -08:00
|
|
|
EINTERN int
|
2007-09-23 18:16:47 -07:00
|
|
|
e_init_init(void)
|
2007-10-30 19:41:52 -07:00
|
|
|
{
|
2010-02-10 06:13:29 -08:00
|
|
|
E_EVENT_INIT_DONE = ecore_event_type_new();
|
2013-04-18 00:28:59 -07:00
|
|
|
|
2007-09-23 18:16:47 -07:00
|
|
|
done = 0;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2010-11-22 07:21:32 -08:00
|
|
|
EINTERN int
|
2007-09-23 18:16:47 -07:00
|
|
|
e_init_shutdown(void)
|
|
|
|
{
|
|
|
|
/* if not killed, kill init */
|
|
|
|
e_init_hide();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API void
|
2007-09-23 18:16:47 -07:00
|
|
|
e_init_show(void)
|
|
|
|
{
|
2013-04-18 00:28:59 -07:00
|
|
|
Evas_Object *o;
|
|
|
|
E_Zone *zone;
|
|
|
|
Eina_List *l;
|
2007-09-23 18:16:47 -07:00
|
|
|
/* exec init */
|
|
|
|
|
2015-01-05 12:27:41 -08:00
|
|
|
EINA_LIST_FOREACH(e_comp->zones, l, zone)
|
2013-04-18 00:28:59 -07:00
|
|
|
{
|
2015-01-05 12:27:41 -08:00
|
|
|
o = edje_object_add(e_comp->evas);
|
2013-04-18 00:28:59 -07:00
|
|
|
if (!zone->num)
|
|
|
|
{
|
2013-10-31 07:36:22 -07:00
|
|
|
e_theme_edje_object_set(o, NULL, "e/init/splash");
|
2013-04-18 00:28:59 -07:00
|
|
|
evas_object_name_set(o, "_e_init_object");
|
|
|
|
_e_init_object = o;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2013-10-31 07:36:22 -07:00
|
|
|
e_theme_edje_object_set(o, NULL, "e/init/extra_screen");
|
2013-04-18 00:28:59 -07:00
|
|
|
evas_object_name_set(o, "_e_init_extra_screen");
|
|
|
|
}
|
|
|
|
evas_object_clip_set(o, zone->bg_clip_object);
|
|
|
|
evas_object_move(o, zone->x, zone->y);
|
|
|
|
evas_object_resize(o, zone->w, zone->h);
|
2015-07-10 11:21:50 -07:00
|
|
|
evas_object_layer_set(o, E_LAYER_MAX - 1000);
|
2013-04-18 00:28:59 -07:00
|
|
|
evas_object_show(o);
|
|
|
|
splash_objs = eina_list_append(splash_objs, o);
|
|
|
|
}
|
|
|
|
edje_object_part_text_set(_e_init_object, "e.text.disable_text",
|
|
|
|
"Disable splash screen");
|
|
|
|
edje_object_signal_callback_add(_e_init_object, "e,state,done_ok", "e",
|
|
|
|
_e_init_cb_signal_done_ok, NULL);
|
|
|
|
_e_init_timeout_timer = ecore_timer_add(240.0, _e_init_cb_timeout, NULL);
|
2013-12-26 19:27:23 -08:00
|
|
|
e_init_title_set(_("Enlightenment"));
|
|
|
|
e_init_version_set(VERSION);
|
2007-09-23 18:16:47 -07:00
|
|
|
}
|
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API void
|
2007-09-23 18:16:47 -07:00
|
|
|
e_init_hide(void)
|
|
|
|
{
|
2013-04-18 00:28:59 -07:00
|
|
|
E_FREE_LIST(splash_objs, evas_object_del);
|
2015-03-13 13:31:22 -07:00
|
|
|
e_comp_shape_queue();
|
2013-04-18 00:28:59 -07:00
|
|
|
_e_init_object = NULL;
|
|
|
|
E_FREE_FUNC(_e_init_timeout_timer, ecore_timer_del);
|
2007-09-23 18:16:47 -07:00
|
|
|
}
|
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API void
|
2007-09-23 18:16:47 -07:00
|
|
|
e_init_title_set(const char *str)
|
|
|
|
{
|
2013-04-18 00:28:59 -07:00
|
|
|
if (!_e_init_object) return;
|
|
|
|
edje_object_part_text_set(_e_init_object, "e.text.title", str);
|
2007-09-23 18:16:47 -07:00
|
|
|
}
|
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API void
|
2007-09-23 18:16:47 -07:00
|
|
|
e_init_version_set(const char *str)
|
|
|
|
{
|
2013-04-18 00:28:59 -07:00
|
|
|
if (!_e_init_object) return;
|
|
|
|
edje_object_part_text_set(_e_init_object, "e.text.version", str);
|
2007-09-23 18:16:47 -07:00
|
|
|
}
|
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API void
|
2007-09-23 18:16:47 -07:00
|
|
|
e_init_status_set(const char *str)
|
|
|
|
{
|
2013-04-18 00:28:59 -07:00
|
|
|
if (!_e_init_object) return;
|
|
|
|
edje_object_part_text_set(_e_init_object, "e.text.status", str);
|
2007-09-23 18:16:47 -07:00
|
|
|
}
|
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API void
|
2007-09-23 18:16:47 -07:00
|
|
|
e_init_done(void)
|
|
|
|
{
|
|
|
|
undone--;
|
|
|
|
if (undone > 0) return;
|
|
|
|
done = 1;
|
2010-02-10 06:13:29 -08:00
|
|
|
ecore_event_add(E_EVENT_INIT_DONE, NULL, NULL, NULL);
|
2008-09-24 18:34:39 -07:00
|
|
|
// printf("---DONE %p\n", client);
|
2013-04-18 00:28:59 -07:00
|
|
|
edje_object_signal_emit(_e_init_object, "e,state,done", "e");
|
2007-09-23 18:16:47 -07:00
|
|
|
}
|
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API void
|
2007-09-23 18:16:47 -07:00
|
|
|
e_init_undone(void)
|
|
|
|
{
|
|
|
|
undone++;
|
|
|
|
}
|
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API int
|
2010-02-10 06:13:29 -08:00
|
|
|
e_init_count_get(void)
|
|
|
|
{
|
|
|
|
return undone;
|
|
|
|
}
|