forked from enlightenment/enlightenment
e: make it less anoying. Now E17 also remember you tainted it.
SVN revision: 78148
This commit is contained in:
parent
01883a4014
commit
0c356af7e2
|
@ -50,10 +50,12 @@ static int fa = 0, fh = 0, fw = 0;
|
||||||
static const char *title = NULL, *str1 = NULL, *str2 = NULL;
|
static const char *title = NULL, *str1 = NULL, *str2 = NULL;
|
||||||
static int ret = 0, sig = 0;
|
static int ret = 0, sig = 0;
|
||||||
static pid_t pid;
|
static pid_t pid;
|
||||||
|
static Eina_Bool tainted = EINA_TRUE;
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
const char *tmp;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
for (i = 1; i < argc; i++)
|
for (i = 1; i < argc; i++)
|
||||||
|
@ -74,6 +76,10 @@ main(int argc, char **argv)
|
||||||
comp_win = atoi(argv[i]); // Composite Alert Window
|
comp_win = atoi(argv[i]); // Composite Alert Window
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tmp = getenv("E17_TAINTED");
|
||||||
|
if (tmp && !strcmp(tmp, "NO"))
|
||||||
|
tainted = EINA_FALSE;
|
||||||
|
|
||||||
if (!ecore_init()) return EXIT_FAILURE;
|
if (!ecore_init()) return EXIT_FAILURE;
|
||||||
ecore_app_args_set(argc, (const char **)argv);
|
ecore_app_args_set(argc, (const char **)argv);
|
||||||
|
|
||||||
|
@ -447,15 +453,26 @@ _e_alert_draw_text(void)
|
||||||
char warn[1024], msg[4096], line[1024];
|
char warn[1024], msg[4096], line[1024];
|
||||||
unsigned int i = 0, j = 0, k = 0;
|
unsigned int i = 0, j = 0, k = 0;
|
||||||
|
|
||||||
snprintf(msg, sizeof(msg),
|
if (!tainted)
|
||||||
"This is not meant to happen and is likely a sign of \n"
|
{
|
||||||
"a bug in Enlightenment or the libraries it relies \n"
|
snprintf(msg, sizeof(msg),
|
||||||
"on. You can gdb attach to this process (%d) now \n"
|
"This is not meant to happen and is likely a sign of \n"
|
||||||
"to try debug it or you could exit, or just hit \n"
|
"a bug in Enlightenment or the libraries it relies \n"
|
||||||
"restart to try and get your desktop back the way \n"
|
"on. You can gdb attach to this process (%d) now \n"
|
||||||
"it was.\n"
|
"to try debug it or you could exit, or just hit \n"
|
||||||
"\n"
|
"restart to try and get your desktop back the way \n"
|
||||||
"Please compile everything with -g in your CFLAGS.", pid);
|
"it was.\n"
|
||||||
|
"\n"
|
||||||
|
"Please compile everything with -g in your CFLAGS.", pid);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
snprintf(msg, sizeof(msg),
|
||||||
|
"This is not meant to happen and is likely a sign of \n"
|
||||||
|
"a bug, but you are using non supported modules. Before\n"
|
||||||
|
"reporting this issue, please unload them and try to see\n"
|
||||||
|
"if the bug is still there.\n");
|
||||||
|
}
|
||||||
|
|
||||||
strcpy(warn, "");
|
strcpy(warn, "");
|
||||||
|
|
||||||
|
|
|
@ -661,6 +661,7 @@ e_config_init(void)
|
||||||
E_CONFIG_VAL(D, T, no_module_delay, INT); /**/
|
E_CONFIG_VAL(D, T, no_module_delay, INT); /**/
|
||||||
E_CONFIG_VAL(D, T, desklock_language, STR); /**/
|
E_CONFIG_VAL(D, T, desklock_language, STR); /**/
|
||||||
E_CONFIG_LIST(D, T, modules, _e_config_module_edd); /**/
|
E_CONFIG_LIST(D, T, modules, _e_config_module_edd); /**/
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_LIST_STRING(D, T, "bad_modules", bad_modules);
|
||||||
E_CONFIG_LIST(D, T, font_fallbacks, _e_config_font_fallback_edd); /**/
|
E_CONFIG_LIST(D, T, font_fallbacks, _e_config_font_fallback_edd); /**/
|
||||||
E_CONFIG_LIST(D, T, font_defaults, _e_config_font_default_edd); /**/
|
E_CONFIG_LIST(D, T, font_defaults, _e_config_font_default_edd); /**/
|
||||||
E_CONFIG_LIST(D, T, themes, _e_config_theme_edd); /**/
|
E_CONFIG_LIST(D, T, themes, _e_config_theme_edd); /**/
|
||||||
|
|
|
@ -70,6 +70,7 @@ struct _E_Config
|
||||||
const char *language; // GUI
|
const char *language; // GUI
|
||||||
const char *desklock_language; // GUI
|
const char *desklock_language; // GUI
|
||||||
Eina_List *modules; // GUI
|
Eina_List *modules; // GUI
|
||||||
|
Eina_List *bad_modules; // GUI
|
||||||
Eina_List *font_fallbacks; // GUI
|
Eina_List *font_fallbacks; // GUI
|
||||||
Eina_List *font_defaults; // GUI
|
Eina_List *font_defaults; // GUI
|
||||||
Eina_List *themes; // GUI
|
Eina_List *themes; // GUI
|
||||||
|
|
|
@ -602,11 +602,36 @@ _e_module_event_update_free(void *data __UNUSED__, void *event)
|
||||||
E_FREE(ev);
|
E_FREE(ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_cleanup_cb(void *data, E_Dialog *dialog)
|
||||||
|
{
|
||||||
|
Eina_List *badl = data;
|
||||||
|
const char *s;
|
||||||
|
|
||||||
|
e_object_del(E_OBJECT(dialog));
|
||||||
|
EINA_LIST_FREE(badl, s)
|
||||||
|
eina_stringshare_del(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_ignore_cb(void *data, E_Dialog *dialog)
|
||||||
|
{
|
||||||
|
const char *s;
|
||||||
|
|
||||||
|
e_object_del(E_OBJECT(dialog));
|
||||||
|
|
||||||
|
EINA_LIST_FREE(e_config->bad_modules, s)
|
||||||
|
eina_stringshare_del(s);
|
||||||
|
e_config->bad_modules = data;
|
||||||
|
e_config_save_queue();
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_module_whitelist_check(void)
|
_e_module_whitelist_check(void)
|
||||||
{
|
{
|
||||||
Eina_List *l, *badl = NULL;
|
Eina_List *l, *badl = NULL;
|
||||||
E_Module *m;
|
E_Module *m;
|
||||||
|
unsigned int known = 0;
|
||||||
int i;
|
int i;
|
||||||
const char *s;
|
const char *s;
|
||||||
const char *goodmods[] =
|
const char *goodmods[] =
|
||||||
|
@ -691,10 +716,32 @@ _e_module_whitelist_check(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!ok) badl = eina_list_append(badl, m->name);
|
if (!ok) badl = eina_list_append(badl, eina_stringshare_add(m->name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (badl)
|
EINA_LIST_FOREACH(badl, l, s)
|
||||||
|
{
|
||||||
|
const char *tmp;
|
||||||
|
Eina_List *ll;
|
||||||
|
Eina_Bool found = EINA_FALSE;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(e_config->bad_modules, ll, tmp)
|
||||||
|
{
|
||||||
|
if (!strcmp(s, tmp))
|
||||||
|
{
|
||||||
|
found = EINA_TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found) break;
|
||||||
|
known++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (badl) e_env_set("E17_TAINTED", "YES");
|
||||||
|
else e_env_set("E17_TAINTED", "NO");
|
||||||
|
|
||||||
|
if (eina_list_count(badl) != known)
|
||||||
{
|
{
|
||||||
E_Dialog *dia;
|
E_Dialog *dia;
|
||||||
Eina_Strbuf *sbuf;
|
Eina_Strbuf *sbuf;
|
||||||
|
@ -721,7 +768,7 @@ _e_module_whitelist_check(void)
|
||||||
"<br>"
|
"<br>"
|
||||||
"The module list is as follows:<br>"
|
"The module list is as follows:<br>"
|
||||||
"<br>"));
|
"<br>"));
|
||||||
EINA_LIST_FREE(badl, s)
|
EINA_LIST_FOREACH(badl, l, s)
|
||||||
{
|
{
|
||||||
eina_strbuf_append(sbuf, s);
|
eina_strbuf_append(sbuf, s);
|
||||||
eina_strbuf_append(sbuf, "<br>");
|
eina_strbuf_append(sbuf, "<br>");
|
||||||
|
@ -730,9 +777,15 @@ _e_module_whitelist_check(void)
|
||||||
e_dialog_title_set(dia, _("Unstable module tainting"));
|
e_dialog_title_set(dia, _("Unstable module tainting"));
|
||||||
e_dialog_icon_set(dia, "enlightenment", 64);
|
e_dialog_icon_set(dia, "enlightenment", 64);
|
||||||
e_dialog_text_set(dia, eina_strbuf_string_get(sbuf));
|
e_dialog_text_set(dia, eina_strbuf_string_get(sbuf));
|
||||||
e_dialog_button_add(dia, _("OK"), NULL, NULL, NULL);
|
e_dialog_button_add(dia, _("OK"), NULL, _cleanup_cb, badl);
|
||||||
|
e_dialog_button_add(dia, _("I know"), NULL, _ignore_cb, badl);
|
||||||
e_win_centered_set(dia->win, 1);
|
e_win_centered_set(dia->win, 1);
|
||||||
e_dialog_show(dia);
|
e_dialog_show(dia);
|
||||||
eina_strbuf_free(sbuf);
|
eina_strbuf_free(sbuf);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EINA_LIST_FREE(badl, s)
|
||||||
|
eina_stringshare_del(s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue