forked from enlightenment/enlightenment
When e segfaults during startup (module load), e now disables that module correctly after a restart and tells the user about that. TODO: Disable all modules correctly when not sure which one did the segfault during startup...
SVN revision: 48332
This commit is contained in:
parent
56259ca821
commit
b7c95b0a13
|
@ -1010,27 +1010,54 @@ main(int argc, char **argv)
|
||||||
/* load modules */
|
/* load modules */
|
||||||
e_init_status_set(_("Load Modules"));
|
e_init_status_set(_("Load Modules"));
|
||||||
TS("load modules");
|
TS("load modules");
|
||||||
if (!safe_mode)
|
if (safe_mode)
|
||||||
e_module_all_load();
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
e_int_config_modules(e_container_current_get(e_manager_current_get()), NULL);
|
E_Module *m;
|
||||||
e_error_message_show
|
char *crashmodule;
|
||||||
(_("Enlightenment crashed early on start and has<br>"
|
|
||||||
"been restarted. All modules have been disabled<br>"
|
crashmodule = getenv("E_MODULE_LOAD");
|
||||||
"and will not be loaded to help remove any problem<br>"
|
if (crashmodule) m = e_module_new(crashmodule);
|
||||||
"modules from your configuration. The module<br>"
|
|
||||||
"configuration dialog should let you select your<br>"
|
if (crashmodule && m)
|
||||||
"modules again."));
|
{
|
||||||
e_util_dialog_show
|
e_module_disable(m);
|
||||||
(_("Enlightenment crashed early on start and has been restarted"),
|
e_object_del(E_OBJECT(m));
|
||||||
_("Enlightenment crashed early on start and has been restarted.<br>"
|
e_config_save_queue();
|
||||||
"All modules have been disabled and will not be loaded to help<br>"
|
|
||||||
"remove any problem modules from your configuration.<br><br>"
|
e_int_config_modules(e_container_current_get(e_manager_current_get()), NULL);
|
||||||
"The module configuration dialog should let you select your<br>"
|
e_error_message_show
|
||||||
"modules again."));
|
(_("Enlightenment crashed early on start and has<br>"
|
||||||
e_config_save_queue();
|
"been restarted. There was an error loading<br>"
|
||||||
|
"module named: %s. This module has been disabled<br>"
|
||||||
|
"and will not be loaded."), crashmodule);
|
||||||
|
e_util_dialog_show
|
||||||
|
(_("Enlightenment crashed early on start and has been restarted"),
|
||||||
|
_("Enlightenment crashed early on start and has been restarted.<br>"
|
||||||
|
"There was an error loading module named: %s<br><br>"
|
||||||
|
"This module has been disabled and will not be loaded."), crashmodule);
|
||||||
|
e_module_all_load();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
e_int_config_modules(e_container_current_get(e_manager_current_get()), NULL);
|
||||||
|
e_error_message_show
|
||||||
|
(_("Enlightenment crashed early on start and has<br>"
|
||||||
|
"been restarted. All modules have been disabled<br>"
|
||||||
|
"and will not be loaded to help remove any problem<br>"
|
||||||
|
"modules from your configuration. The module<br>"
|
||||||
|
"configuration dialog should let you select your<br>"
|
||||||
|
"modules again."));
|
||||||
|
e_util_dialog_show
|
||||||
|
(_("Enlightenment crashed early on start and has been restarted"),
|
||||||
|
_("Enlightenment crashed early on start and has been restarted.<br>"
|
||||||
|
"All modules have been disabled and will not be loaded to help<br>"
|
||||||
|
"remove any problem modules from your configuration.<br><br>"
|
||||||
|
"The module configuration dialog should let you select your<br>"
|
||||||
|
"modules again."));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
e_module_all_load();
|
||||||
|
|
||||||
TS("init properites");
|
TS("init properites");
|
||||||
if (!nostartup)
|
if (!nostartup)
|
||||||
|
|
|
@ -69,6 +69,7 @@ e_module_all_load(void)
|
||||||
{
|
{
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
E_Config_Module *em;
|
E_Config_Module *em;
|
||||||
|
char buf[128];
|
||||||
|
|
||||||
e_config->modules = eina_list_sort(e_config->modules,
|
e_config->modules = eina_list_sort(e_config->modules,
|
||||||
eina_list_count(e_config->modules),
|
eina_list_count(e_config->modules),
|
||||||
|
@ -89,7 +90,13 @@ e_module_all_load(void)
|
||||||
else if (em->enabled)
|
else if (em->enabled)
|
||||||
{
|
{
|
||||||
m = NULL;
|
m = NULL;
|
||||||
if (em->name) m = e_module_new(em->name);
|
if (!em->name) continue;
|
||||||
|
|
||||||
|
setenv("E_MODULE_LOAD", em->name, 1);
|
||||||
|
snprintf (buf, sizeof(buf), _("Loading Module: %s"), em->name);
|
||||||
|
e_init_status_set(em->name);
|
||||||
|
|
||||||
|
m = e_module_new(em->name);
|
||||||
if (m) e_module_enable(m);
|
if (m) e_module_enable(m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -98,6 +105,7 @@ e_module_all_load(void)
|
||||||
{
|
{
|
||||||
ecore_event_add(E_EVENT_MODULE_INIT_END, NULL, NULL, NULL);
|
ecore_event_add(E_EVENT_MODULE_INIT_END, NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
unsetenv("E_MODULE_LOAD");
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI E_Module *
|
EAPI E_Module *
|
||||||
|
|
Loading…
Reference in New Issue