forked from enlightenment/enlightenment
add module whitelist with complaints about modules that are not e's
set. after yet more repords of bugs from modules not in core. SVN revision: 78045
This commit is contained in:
parent
02afeb3308
commit
90b6406b04
|
@ -14,11 +14,13 @@ static void _e_module_cb_dialog_disable(void *data, E_Dialog *dia);
|
||||||
static void _e_module_event_update_free(void *data, void *event);
|
static void _e_module_event_update_free(void *data, void *event);
|
||||||
static Eina_Bool _e_module_cb_idler(void *data);
|
static Eina_Bool _e_module_cb_idler(void *data);
|
||||||
static int _e_module_sort_priority(const void *d1, const void *d2);
|
static int _e_module_sort_priority(const void *d1, const void *d2);
|
||||||
|
static void _e_module_whitelist_check(void);
|
||||||
|
|
||||||
/* local subsystem globals */
|
/* local subsystem globals */
|
||||||
static Eina_List *_e_modules = NULL;
|
static Eina_List *_e_modules = NULL;
|
||||||
static Ecore_Idle_Enterer *_e_module_idler = NULL;
|
static Ecore_Idle_Enterer *_e_module_idler = NULL;
|
||||||
static Eina_List *_e_modules_delayed = NULL;
|
static Eina_List *_e_modules_delayed = NULL;
|
||||||
|
static Eina_Bool _e_modules_initting = EINA_FALSE;
|
||||||
|
|
||||||
EAPI int E_EVENT_MODULE_UPDATE = 0;
|
EAPI int E_EVENT_MODULE_UPDATE = 0;
|
||||||
EAPI int E_EVENT_MODULE_INIT_END = 0;
|
EAPI int E_EVENT_MODULE_INIT_END = 0;
|
||||||
|
@ -72,6 +74,8 @@ e_module_all_load(void)
|
||||||
E_Config_Module *em;
|
E_Config_Module *em;
|
||||||
char buf[128];
|
char buf[128];
|
||||||
|
|
||||||
|
_e_modules_initting = EINA_TRUE;
|
||||||
|
|
||||||
e_config->modules =
|
e_config->modules =
|
||||||
eina_list_sort(e_config->modules, 0, _e_module_sort_priority);
|
eina_list_sort(e_config->modules, 0, _e_module_sort_priority);
|
||||||
|
|
||||||
|
@ -102,7 +106,11 @@ e_module_all_load(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_e_modules_delayed)
|
if (!_e_modules_delayed)
|
||||||
ecore_event_add(E_EVENT_MODULE_INIT_END, NULL, NULL, NULL);
|
{
|
||||||
|
ecore_event_add(E_EVENT_MODULE_INIT_END, NULL, NULL, NULL);
|
||||||
|
_e_modules_initting = EINA_FALSE;
|
||||||
|
_e_module_whitelist_check();
|
||||||
|
}
|
||||||
|
|
||||||
unsetenv("E_MODULE_LOAD");
|
unsetenv("E_MODULE_LOAD");
|
||||||
}
|
}
|
||||||
|
@ -288,6 +296,8 @@ e_module_enable(E_Module *m)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!_e_modules_initting)
|
||||||
|
_e_module_whitelist_check();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -564,6 +574,9 @@ _e_module_cb_idler(void *data __UNUSED__)
|
||||||
}
|
}
|
||||||
|
|
||||||
ecore_event_add(E_EVENT_MODULE_INIT_END, NULL, NULL, NULL);
|
ecore_event_add(E_EVENT_MODULE_INIT_END, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
_e_modules_initting = EINA_FALSE;
|
||||||
|
_e_module_whitelist_check();
|
||||||
|
|
||||||
_e_module_idler = NULL;
|
_e_module_idler = NULL;
|
||||||
return ECORE_CALLBACK_CANCEL;
|
return ECORE_CALLBACK_CANCEL;
|
||||||
|
@ -589,3 +602,137 @@ _e_module_event_update_free(void *data __UNUSED__, void *event)
|
||||||
E_FREE(ev);
|
E_FREE(ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_module_whitelist_check(void)
|
||||||
|
{
|
||||||
|
Eina_List *l, *badl = NULL;
|
||||||
|
E_Module *m;
|
||||||
|
int i;
|
||||||
|
const char *s;
|
||||||
|
const char *goodmods[] =
|
||||||
|
{
|
||||||
|
"access",
|
||||||
|
"backlight",
|
||||||
|
"battery",
|
||||||
|
"bluez",
|
||||||
|
"clock",
|
||||||
|
"comp",
|
||||||
|
"conf",
|
||||||
|
"conf_applications",
|
||||||
|
"conf_dialogs",
|
||||||
|
"conf_display",
|
||||||
|
"conf_edgebindings",
|
||||||
|
"conf_interaction",
|
||||||
|
"conf_intl",
|
||||||
|
"conf_keybindings",
|
||||||
|
"conf_menus",
|
||||||
|
"conf_paths",
|
||||||
|
"conf_performance",
|
||||||
|
"conf_randr",
|
||||||
|
"conf_shelves",
|
||||||
|
"conf_theme",
|
||||||
|
"conf_wallpaper2",
|
||||||
|
"conf_window_manipulation",
|
||||||
|
"conf_window_remembers",
|
||||||
|
"connman",
|
||||||
|
"cpufreq",
|
||||||
|
"dropshadow",
|
||||||
|
"everything",
|
||||||
|
"fileman",
|
||||||
|
"fileman_opinfo",
|
||||||
|
"gadman",
|
||||||
|
"ibar",
|
||||||
|
"ibox",
|
||||||
|
"illume2",
|
||||||
|
"illume-bluetooth",
|
||||||
|
"illume-home",
|
||||||
|
"illume-home-toggle",
|
||||||
|
"illume-indicator",
|
||||||
|
"illume-kbd-toggle",
|
||||||
|
"illume-keyboard",
|
||||||
|
"illume-mode-toggle",
|
||||||
|
"illume-softkey",
|
||||||
|
"layout",
|
||||||
|
"mixer",
|
||||||
|
"msgbus",
|
||||||
|
"notification",
|
||||||
|
"ofono",
|
||||||
|
"pager",
|
||||||
|
"physics",
|
||||||
|
"quickaccess",
|
||||||
|
"shot",
|
||||||
|
"start",
|
||||||
|
"syscon",
|
||||||
|
"systray",
|
||||||
|
"tasks",
|
||||||
|
"temperature",
|
||||||
|
"tiling",
|
||||||
|
"winlist",
|
||||||
|
"wizard",
|
||||||
|
"wl_drm",
|
||||||
|
"wl_screenshot",
|
||||||
|
"wl_shell",
|
||||||
|
"xkbswitch",
|
||||||
|
|
||||||
|
NULL // end marker
|
||||||
|
};
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(_e_modules, l, m)
|
||||||
|
{
|
||||||
|
Eina_Bool ok;
|
||||||
|
|
||||||
|
if (!m->name) continue;
|
||||||
|
ok = EINA_FALSE;
|
||||||
|
for (i = 0; goodmods[i]; i++)
|
||||||
|
{
|
||||||
|
if (!strcmp(m->name, goodmods[i]))
|
||||||
|
{
|
||||||
|
ok = EINA_TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!ok) badl = eina_list_append(badl, m->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (badl)
|
||||||
|
{
|
||||||
|
E_Dialog *dia;
|
||||||
|
Eina_Strbuf *sbuf;
|
||||||
|
|
||||||
|
dia = e_dialog_new(e_container_current_get(e_manager_current_get()),
|
||||||
|
"E", "_module_whitelist_dialog");
|
||||||
|
if (!dia)
|
||||||
|
{
|
||||||
|
eina_list_free(badl);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sbuf = eina_strbuf_new();
|
||||||
|
if (!sbuf)
|
||||||
|
{
|
||||||
|
eina_list_free(badl);
|
||||||
|
e_object_del(E_OBJECT(dia));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
eina_strbuf_append
|
||||||
|
(sbuf, _("The following modules are not standard ones for<br>"
|
||||||
|
"Enlightenment and may cause bugs and crashes.<br>"
|
||||||
|
"Please remove them before reporting any bugs.<br>"
|
||||||
|
"<br>"
|
||||||
|
"The module list is as follows:<br>"
|
||||||
|
"<br>"));
|
||||||
|
EINA_LIST_FREE(badl, s)
|
||||||
|
{
|
||||||
|
eina_strbuf_append(sbuf, s);
|
||||||
|
eina_strbuf_append(sbuf, "<br>");
|
||||||
|
}
|
||||||
|
|
||||||
|
e_dialog_title_set(dia, _("Unstable module tainting"));
|
||||||
|
e_dialog_icon_set(dia, "enlightenment", 64);
|
||||||
|
e_dialog_text_set(dia, eina_strbuf_string_get(sbuf));
|
||||||
|
e_dialog_button_add(dia, _("OK"), NULL, NULL, NULL);
|
||||||
|
e_win_centered_set(dia->win, 1);
|
||||||
|
e_dialog_show(dia);
|
||||||
|
eina_strbuf_free(sbuf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue