diff --git a/src/bin/e_container.c b/src/bin/e_container.c index 610835a4b..573e284a8 100644 --- a/src/bin/e_container.c +++ b/src/bin/e_container.c @@ -123,6 +123,7 @@ e_container_new(E_Manager *man) for (i = 0; i < 7; i++) { con->layers[i].win = ecore_x_window_input_new(con->win, 0, 0, 1, 1); + ecore_x_window_lower(con->layers[i].win); if (i > 0) ecore_x_window_configure(con->layers[i].win, @@ -130,8 +131,6 @@ e_container_new(E_Manager *man) ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE, 0, 0, 0, 0, 0, con->layers[i - 1].win, ECORE_X_WINDOW_STACK_ABOVE); - else - ecore_x_window_raise(con->layers[i].win); } /* Put init win on top */ diff --git a/src/bin/e_init.c b/src/bin/e_init.c index 8123e0389..4528201b6 100644 --- a/src/bin/e_init.c +++ b/src/bin/e_init.c @@ -12,6 +12,7 @@ static Ecore_Event_Handler *exe_del_handler = NULL; static Ecore_Ipc_Client *client = NULL; static int done = 0; static int undone = 0; +static Evas_List *stats = NULL; static int _e_init_cb_exe_event_del(void *data, int type, void *event) @@ -115,8 +116,14 @@ e_init_version_set(const char *str) EAPI void e_init_status_set(const char *str) { + if (!init_exe) return; printf("---STAT %p %s\n", client, str); - if (!client) return; + if (!client) + { + stats = evas_list_append(stats, evas_stringshare_add(str)); + return; + } + printf("---SEND\n"); ecore_ipc_client_send(client, E_IPC_DOMAIN_INIT, 1, 0, 0, 0, str, strlen(str) + 1); ecore_ipc_client_flush(client); } @@ -171,6 +178,16 @@ e_init_client_data(Ecore_Ipc_Event_Client_Data *e) } } } + while (stats) + { + const char *s; + + s = stats->data; + stats = evas_list_remove_list(stats, stats); + printf("---SPOOL %s\n", s); + e_init_status_set(s); + evas_stringshare_del(s); + } } else if (e->minor == 2) { diff --git a/src/bin/e_init_main.c b/src/bin/e_init_main.c index 2b083b390..9ad35ecc4 100644 --- a/src/bin/e_init_main.c +++ b/src/bin/e_init_main.c @@ -48,6 +48,13 @@ static Ecore_X_Window *initwins = NULL; static int initwins_num = 0; static Ecore_Ipc_Server *server = NULL; +static int +delayed_ok(void *data) +{ + kill(getppid(), SIGUSR2); + return 0; +} + int main(int argc, char **argv) { @@ -81,6 +88,7 @@ main(int argc, char **argv) evas_init(); ecore_evas_init(); edje_init(); + edje_frametime_set(1.0 / 60.0); ecore_file_init(); ecore_ipc_init(); @@ -91,6 +99,7 @@ main(int argc, char **argv) e_init_title_set(title); e_init_version_set(verstr); e_init_status_set(""); + ecore_timer_add(0.2, delayed_ok, NULL); ecore_main_loop_begin(); } @@ -430,20 +439,13 @@ _e_init_evas_new(Ecore_X_Window root, int w, int h, Ecore_X_Window *winret) Evas *e; Evas_List *l; - if (engine == 0) + if ((engine == 0) || (engine == 1)) { ee = ecore_evas_software_x11_new(NULL, root, 0, 0, w, h); ecore_evas_override_set(ee, 1); ecore_evas_software_x11_direct_resize_set(ee, 1); *winret = ecore_evas_software_x11_window_get(ee); } - else if (engine == 1) - { - ee = ecore_evas_xrender_x11_new(NULL, root, 0, 0, w, h); - ecore_evas_override_set(ee, 1); - ecore_evas_xrender_x11_direct_resize_set(ee, 1); - *winret = ecore_evas_xrender_x11_window_get(ee); - } else if (engine == 2) { ee = ecore_evas_gl_x11_new(NULL, root, 0, 0, w, h); @@ -451,6 +453,13 @@ _e_init_evas_new(Ecore_X_Window root, int w, int h, Ecore_X_Window *winret) ecore_evas_gl_x11_direct_resize_set(ee, 1); *winret = ecore_evas_gl_x11_window_get(ee); } + else if (engine == 3) + { + ee = ecore_evas_xrender_x11_new(NULL, root, 0, 0, w, h); + ecore_evas_override_set(ee, 1); + ecore_evas_xrender_x11_direct_resize_set(ee, 1); + *winret = ecore_evas_xrender_x11_window_get(ee); + } e = ecore_evas_get(ee); diff --git a/src/bin/e_main.c b/src/bin/e_main.c index 553e8784c..f0a5c4c68 100644 --- a/src/bin/e_main.c +++ b/src/bin/e_main.c @@ -446,6 +446,94 @@ main(int argc, char **argv) "Ecore and check they support the Software Buffer rendering engine.")); _e_main_shutdown(-1); } +// ecore_evas closes evas - deletes objs - deletes fm widgets which tries to +// ipc to slave to stop monitoring - but ipc has been shut down. dont shut +// down. +// _e_main_shutdown_push(ecore_evas_shutdown); + TS("test done"); + + /*** Finished loading subsystems, Loading WM Specifics ***/ + + TS("dirs"); + /* setup directories we will be using for configurations storage etc. */ + if (!_e_main_dirs_init()) + { + e_error_message_show(_("Enlightenment cannot create directories in your home directory.\n" + "Perhaps you have no home directory or the disk is full?")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(_e_main_dirs_shutdown); + TS("filereg"); + /* setup file registry */ + if (!e_filereg_init()) + { + e_error_message_show(_("Enlightenment cannot set up its file registry system.")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_filereg_shutdown); + TS("config"); + /* init config system */ + if (!e_config_init()) + { + e_error_message_show(_("Enlightenment cannot set up its config system.")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_config_shutdown); + TS("path"); + /* setup paths for finding things */ + if (!_e_main_path_init()) + { + e_error_message_show(_("Enlightenment cannot set up paths for finding files.\n" + "Perhaps you are out of memory?")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(_e_main_path_shutdown); + TS("ipc"); + /* setup e ipc service */ + if (e_ipc_init()) + _e_main_shutdown_push(e_ipc_shutdown); + + /* setup edje to animate @ e_config->framerate frames per sec. */ + edje_frametime_set(1.0 / e_config->framerate); + + TS("font"); + /* init font system */ + if (!e_font_init()) + { + e_error_message_show(_("Enlightenment cannot set up its font system.")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_font_shutdown); + e_font_apply(); + e_canvas_recache(); + + TS("theme"); + /* init theme system */ + if (!e_theme_init()) + { + e_error_message_show(_("Enlightenment cannot set up its theme system.")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_theme_shutdown); + + TS("splash"); + if (!((!e_config->show_splash) || (after_restart))) + { + /* setup init status window/screen */ + if (!e_init_init()) + { + e_error_message_show(_("Enlightenment cannot set up init screen.\n" + "Perhaps you are out of memory?")); + _e_main_shutdown(-1); + } + e_init_title_set(_("Enlightenment")); + e_init_version_set(VERSION); + e_init_show(); + _e_main_shutdown_push(e_init_shutdown); + pause(); + } + + e_init_status_set(_("Testing Format Support")); TS("test file format support"); { Ecore_Evas *ee; @@ -490,48 +578,8 @@ main(int argc, char **argv) evas_object_del(im); ecore_evas_free(ee); } -// ecore_evas closes evas - deletes objs - deletes fm widgets which tries to -// ipc to slave to stop monitoring - but ipc has been shut down. dont shut -// down. -// _e_main_shutdown_push(ecore_evas_shutdown); - TS("test done"); - /*** Finished loading subsystems, Loading WM Specifics ***/ - - TS("dirs"); - /* setup directories we will be using for configurations storage etc. */ - if (!_e_main_dirs_init()) - { - e_error_message_show(_("Enlightenment cannot create directories in your home directory.\n" - "Perhaps you have no home directory or the disk is full?")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(_e_main_dirs_shutdown); - TS("filereg"); - /* setup file registry */ - if (!e_filereg_init()) - { - e_error_message_show(_("Enlightenment cannot set up its file registry system.")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(e_filereg_shutdown); - TS("config"); - /* init config system */ - if (!e_config_init()) - { - e_error_message_show(_("Enlightenment cannot set up its config system.")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(e_config_shutdown); - TS("path"); - /* setup paths for finding things */ - if (!_e_main_path_init()) - { - e_error_message_show(_("Enlightenment cannot set up paths for finding files.\n" - "Perhaps you are out of memory?")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(_e_main_path_shutdown); + e_init_status_set(_("Starting International Support")); TS("intl post"); /* init intl system */ if (!e_intl_post_init()) @@ -540,50 +588,6 @@ main(int argc, char **argv) _e_main_shutdown(-1); } _e_main_shutdown_push(e_intl_post_shutdown); - TS("ipc"); - /* setup e ipc service */ - if (e_ipc_init()) - _e_main_shutdown_push(e_ipc_shutdown); - - /* setup edje to animate @ e_config->framerate frames per sec. */ - edje_frametime_set(1.0 / e_config->framerate); - - TS("font"); - /* init font system */ - if (!e_font_init()) - { - e_error_message_show(_("Enlightenment cannot set up its font system.")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(e_font_shutdown); - e_font_apply(); - e_canvas_recache(); - - TS("theme"); - /* init theme system */ - if (!e_theme_init()) - { - e_error_message_show(_("Enlightenment cannot set up its theme system.")); - _e_main_shutdown(-1); - } - _e_main_shutdown_push(e_theme_shutdown); - - TS("splash"); - if (!((!e_config->show_splash) || (after_restart))) - { - /* setup init status window/screen */ - if (!e_init_init()) - { - e_error_message_show(_("Enlightenment cannot set up init screen.\n" - "Perhaps you are out of memory?")); - _e_main_shutdown(-1); - } - e_init_title_set(_("Enlightenment")); - e_init_version_set(VERSION); - e_init_show(); - _e_main_shutdown_push(e_init_shutdown); - } - TS("efreet"); e_init_status_set(_("Starting Efreet")); /* init FDO desktop */ diff --git a/src/bin/e_startup.c b/src/bin/e_startup.c index 61005e812..d6639bdfa 100644 --- a/src/bin/e_startup.c +++ b/src/bin/e_startup.c @@ -29,6 +29,7 @@ e_startup(E_Startup_Mode mode) else if (mode == E_STARTUP_RESTART) snprintf(buf, sizeof(buf), "%s/.e/e/applications/restart/.order", homedir); startup_apps = e_order_new(buf); + printf("startup_apps = %p\n", startup_apps); if (!startup_apps) return; start_app_pos = 0; e_init_undone(); diff --git a/src/bin/e_sys.c b/src/bin/e_sys.c index 87ee117c8..a2de52cb4 100644 --- a/src/bin/e_sys.c +++ b/src/bin/e_sys.c @@ -41,8 +41,8 @@ e_sys_init(void) /* this is not optimal - but it does work cleanly */ _e_sys_exe_exit_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _e_sys_cb_exit, NULL); - /* delay this for 2.0 seconds while the rest of e starts up */ - ecore_timer_add(2.0, _e_sys_cb_timer, NULL); + /* delay this for 1.0 seconds while the rest of e starts up */ + ecore_timer_add(1.0, _e_sys_cb_timer, NULL); return 1; } @@ -124,7 +124,8 @@ _e_sys_cb_timer(void *data) * things */ char buf[4096]; - + + e_init_status_set(_("Checking System Permissions")); snprintf(buf, sizeof(buf), "%s/enlightenment_sys -t halt", e_prefix_bin_get()); _e_sys_halt_check_exe = ecore_exe_run(buf, NULL); snprintf(buf, sizeof(buf), "%s/enlightenment_sys -t reboot", e_prefix_bin_get()); @@ -161,6 +162,7 @@ _e_sys_cb_exit(void *data, int type, void *event) } if ((_e_sys_halt_check_exe) && (ev->exe == _e_sys_halt_check_exe)) { + e_init_status_set(_("System Check Done")); /* exit_code: 0 == OK, 5 == suid root removed, 7 == group id error * 10 == permission denied, 20 == action undefined */ if (ev->exit_code == 0) @@ -171,6 +173,7 @@ _e_sys_cb_exit(void *data, int type, void *event) } else if ((_e_sys_reboot_check_exe) && (ev->exe == _e_sys_reboot_check_exe)) { + e_init_status_set(_("System Check Done")); if (ev->exit_code == 0) { _e_sys_can_reboot = 1; @@ -179,6 +182,7 @@ _e_sys_cb_exit(void *data, int type, void *event) } else if ((_e_sys_suspend_check_exe) && (ev->exe == _e_sys_suspend_check_exe)) { + e_init_status_set(_("System Check Done")); if (ev->exit_code == 0) { _e_sys_can_suspend = 1; @@ -187,6 +191,7 @@ _e_sys_cb_exit(void *data, int type, void *event) } else if ((_e_sys_hibernate_check_exe) && (ev->exe == _e_sys_hibernate_check_exe)) { + e_init_status_set(_("System Check Done")); if (ev->exit_code == 0) { _e_sys_can_hibernate = 1;