forked from enlightenment/enlightenment
add config for disabling delayed modules. this actually drastically
speeds up e startup - but this i mean the shelf comes up instantly populated rather than taking 2 or 3 seconds to figure its life out. SVN revision: 77558
This commit is contained in:
parent
7bb9376863
commit
35773a3241
|
@ -20,6 +20,7 @@ group "E_Config" struct {
|
||||||
value "show_desktop_icons" int: 1;
|
value "show_desktop_icons" int: 1;
|
||||||
value "edge_flip_dragging" int: 0;
|
value "edge_flip_dragging" int: 0;
|
||||||
value "use_composite" int: 0;
|
value "use_composite" int: 0;
|
||||||
|
value "no_module_delay" int: 1;
|
||||||
group "modules" list {
|
group "modules" list {
|
||||||
group "E_Config_Module" struct {
|
group "E_Config_Module" struct {
|
||||||
value "name" string: "wizard";
|
value "name" string: "wizard";
|
||||||
|
|
|
@ -219,6 +219,7 @@ group "E_Config" struct {
|
||||||
value "powersave.extreme" double: 1200.0;
|
value "powersave.extreme" double: 1200.0;
|
||||||
value "powersave.min" int: 0;
|
value "powersave.min" int: 0;
|
||||||
value "powersave.max" int: 5;
|
value "powersave.max" int: 5;
|
||||||
|
value "no_module_delay" int: 1;
|
||||||
group "syscon.actions" list {
|
group "syscon.actions" list {
|
||||||
group "E_Config_Syscon_Action" struct {
|
group "E_Config_Syscon_Action" struct {
|
||||||
value "action" string: "halt";
|
value "action" string: "halt";
|
||||||
|
|
|
@ -212,6 +212,7 @@ group "E_Config" struct {
|
||||||
value "powersave.extreme" double: 1200.0;
|
value "powersave.extreme" double: 1200.0;
|
||||||
value "powersave.min" int: 0;
|
value "powersave.min" int: 0;
|
||||||
value "powersave.max" int: 5;
|
value "powersave.max" int: 5;
|
||||||
|
value "no_module_delay" int: 1;
|
||||||
group "syscon.actions" list {
|
group "syscon.actions" list {
|
||||||
group "E_Config_Syscon_Action" struct {
|
group "E_Config_Syscon_Action" struct {
|
||||||
value "action" string: "halt";
|
value "action" string: "halt";
|
||||||
|
|
|
@ -658,6 +658,7 @@ e_config_init(void)
|
||||||
E_CONFIG_VAL(D, T, edge_flip_dragging, INT); /**/
|
E_CONFIG_VAL(D, T, edge_flip_dragging, INT); /**/
|
||||||
E_CONFIG_VAL(D, T, use_composite, INT); /**/
|
E_CONFIG_VAL(D, T, use_composite, INT); /**/
|
||||||
E_CONFIG_VAL(D, T, language, STR); /**/
|
E_CONFIG_VAL(D, T, language, STR); /**/
|
||||||
|
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); /**/
|
||||||
E_CONFIG_LIST(D, T, font_fallbacks, _e_config_font_fallback_edd); /**/
|
E_CONFIG_LIST(D, T, font_fallbacks, _e_config_font_fallback_edd); /**/
|
||||||
|
|
|
@ -66,6 +66,7 @@ struct _E_Config
|
||||||
int show_desktop_icons; // GUI
|
int show_desktop_icons; // GUI
|
||||||
int edge_flip_dragging; // GUI
|
int edge_flip_dragging; // GUI
|
||||||
int use_composite; // GUI
|
int use_composite; // GUI
|
||||||
|
int no_module_delay; // GUI
|
||||||
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
|
||||||
|
|
|
@ -80,9 +80,9 @@ static void e_gadcon_layout_pack_aspect_pad_set(Evas_Object
|
||||||
static void e_gadcon_layout_unpack(Evas_Object *obj);
|
static void e_gadcon_layout_unpack(Evas_Object *obj);
|
||||||
static void _e_gadcon_provider_populate_request(E_Gadcon *gc, const E_Gadcon_Client_Class *cc);
|
static void _e_gadcon_provider_populate_request(E_Gadcon *gc, const E_Gadcon_Client_Class *cc);
|
||||||
static void _e_gadcon_provider_populate_unrequest(const E_Gadcon_Client_Class *cc);
|
static void _e_gadcon_provider_populate_unrequest(const E_Gadcon_Client_Class *cc);
|
||||||
static Eina_Bool _e_gadcon_provider_populate_idler(void *data);
|
static void _e_gadcon_provider_populate_job(void *data);
|
||||||
static void _e_gadcon_event_populate_free(void *data __UNUSED__, void *event);
|
static void _e_gadcon_event_populate_free(void *data __UNUSED__, void *event);
|
||||||
static Eina_Bool _e_gadcon_custom_populate_idler(void *data);
|
static void _e_gadcon_custom_populate_job(void *data);
|
||||||
|
|
||||||
static int _e_gadcon_location_change(E_Gadcon_Client *gcc, E_Gadcon_Location *src, E_Gadcon_Location *dst);
|
static int _e_gadcon_location_change(E_Gadcon_Client *gcc, E_Gadcon_Location *src, E_Gadcon_Location *dst);
|
||||||
|
|
||||||
|
@ -190,9 +190,9 @@ static Eina_Hash *providers = NULL;
|
||||||
static Eina_List *providers_list = NULL;
|
static Eina_List *providers_list = NULL;
|
||||||
static Eina_List *gadcons = NULL;
|
static Eina_List *gadcons = NULL;
|
||||||
static Eina_List *dummies = NULL;
|
static Eina_List *dummies = NULL;
|
||||||
static Ecore_Idler *populate_idler = NULL;
|
static Ecore_Job *populate_job = NULL;
|
||||||
static Eina_List *custom_populate_requests = NULL;
|
static Eina_List *custom_populate_requests = NULL;
|
||||||
static Ecore_Idler *custom_populate_idler = NULL;
|
static Ecore_Job *custom_populate_job = NULL;
|
||||||
static Eina_List *gadcon_locations = NULL;
|
static Eina_List *gadcon_locations = NULL;
|
||||||
static Ecore_Event_Handler *_module_init_end_handler = NULL;
|
static Ecore_Event_Handler *_module_init_end_handler = NULL;
|
||||||
static Eina_Bool _modules_loaded = EINA_FALSE;
|
static Eina_Bool _modules_loaded = EINA_FALSE;
|
||||||
|
@ -232,16 +232,16 @@ e_gadcon_init(void)
|
||||||
EINTERN int
|
EINTERN int
|
||||||
e_gadcon_shutdown(void)
|
e_gadcon_shutdown(void)
|
||||||
{
|
{
|
||||||
if (populate_idler)
|
if (populate_job)
|
||||||
{
|
{
|
||||||
ecore_idler_del(populate_idler);
|
ecore_job_del(populate_job);
|
||||||
populate_idler = NULL;
|
populate_job = NULL;
|
||||||
}
|
}
|
||||||
custom_populate_requests = eina_list_free(custom_populate_requests);
|
custom_populate_requests = eina_list_free(custom_populate_requests);
|
||||||
if (custom_populate_idler)
|
if (custom_populate_job)
|
||||||
{
|
{
|
||||||
ecore_idler_del(custom_populate_idler);
|
ecore_job_del(custom_populate_job);
|
||||||
custom_populate_idler = NULL;
|
custom_populate_job = NULL;
|
||||||
}
|
}
|
||||||
_modules_loaded = EINA_FALSE;
|
_modules_loaded = EINA_FALSE;
|
||||||
if (_module_init_end_handler)
|
if (_module_init_end_handler)
|
||||||
|
@ -354,10 +354,10 @@ e_gadcon_custom_new(E_Gadcon *gc)
|
||||||
|
|
||||||
gadcons = eina_list_append(gadcons, gc);
|
gadcons = eina_list_append(gadcons, gc);
|
||||||
|
|
||||||
if (!custom_populate_idler)
|
if (!custom_populate_job)
|
||||||
{
|
{
|
||||||
custom_populate_idler =
|
custom_populate_job =
|
||||||
ecore_idler_add(_e_gadcon_custom_populate_idler, NULL);
|
ecore_job_add(_e_gadcon_custom_populate_job, NULL);
|
||||||
}
|
}
|
||||||
if (!eina_list_data_find(custom_populate_requests, gc))
|
if (!eina_list_data_find(custom_populate_requests, gc))
|
||||||
custom_populate_requests = eina_list_append(custom_populate_requests, gc);
|
custom_populate_requests = eina_list_append(custom_populate_requests, gc);
|
||||||
|
@ -383,10 +383,10 @@ e_gadcon_custom_populate_request(E_Gadcon *gc)
|
||||||
E_OBJECT_TYPE_CHECK(gc, E_GADCON_TYPE);
|
E_OBJECT_TYPE_CHECK(gc, E_GADCON_TYPE);
|
||||||
|
|
||||||
if (!gc->custom) return;
|
if (!gc->custom) return;
|
||||||
if (!custom_populate_idler)
|
if (!custom_populate_job)
|
||||||
{
|
{
|
||||||
custom_populate_idler =
|
custom_populate_job =
|
||||||
ecore_idler_add(_e_gadcon_custom_populate_idler, NULL);
|
ecore_job_add(_e_gadcon_custom_populate_job, NULL);
|
||||||
}
|
}
|
||||||
if (!eina_list_data_find(custom_populate_requests, gc))
|
if (!eina_list_data_find(custom_populate_requests, gc))
|
||||||
custom_populate_requests = eina_list_append(custom_populate_requests, gc);
|
custom_populate_requests = eina_list_append(custom_populate_requests, gc);
|
||||||
|
@ -5514,15 +5514,14 @@ _e_gadcon_event_populate_free(void *data __UNUSED__, void *event)
|
||||||
free(ev);
|
free(ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static void
|
||||||
_e_gadcon_custom_populate_idler(void *data __UNUSED__)
|
_e_gadcon_custom_populate_job(void *data __UNUSED__)
|
||||||
{
|
{
|
||||||
const E_Gadcon_Client_Class *cc;
|
const E_Gadcon_Client_Class *cc;
|
||||||
E_Config_Gadcon_Client *cf_gcc;
|
E_Config_Gadcon_Client *cf_gcc;
|
||||||
const Eina_List *l;
|
const Eina_List *l;
|
||||||
E_Gadcon *gc;
|
E_Gadcon *gc;
|
||||||
|
|
||||||
if (!_modules_loaded) return EINA_TRUE;
|
|
||||||
#ifndef E17_RELEASE_BUILD
|
#ifndef E17_RELEASE_BUILD
|
||||||
static Eina_Bool first = EINA_TRUE;
|
static Eina_Bool first = EINA_TRUE;
|
||||||
if (first)
|
if (first)
|
||||||
|
@ -5551,24 +5550,19 @@ _e_gadcon_custom_populate_idler(void *data __UNUSED__)
|
||||||
#endif
|
#endif
|
||||||
if (!custom_populate_requests)
|
if (!custom_populate_requests)
|
||||||
{
|
{
|
||||||
custom_populate_idler = NULL;
|
custom_populate_job = NULL;
|
||||||
#ifndef E17_RELEASE_BUILD
|
#ifndef E17_RELEASE_BUILD
|
||||||
first = EINA_FALSE;
|
first = EINA_FALSE;
|
||||||
#endif
|
#endif
|
||||||
return ECORE_CALLBACK_CANCEL;
|
|
||||||
}
|
}
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static void
|
||||||
_e_gadcon_provider_populate_idler(void *data __UNUSED__)
|
_e_gadcon_provider_populate_job(void *data __UNUSED__)
|
||||||
{
|
{
|
||||||
E_Gadcon_Client_Class *cc;
|
E_Gadcon_Client_Class *cc;
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
E_Gadcon *gc;
|
E_Gadcon *gc;
|
||||||
Eina_Bool cont = EINA_FALSE;
|
|
||||||
|
|
||||||
if (!_modules_loaded) return EINA_TRUE;
|
|
||||||
|
|
||||||
#ifndef E17_RELEASE_BUILD
|
#ifndef E17_RELEASE_BUILD
|
||||||
static Eina_Bool first = EINA_TRUE;
|
static Eina_Bool first = EINA_TRUE;
|
||||||
|
@ -5586,12 +5580,6 @@ _e_gadcon_provider_populate_idler(void *data __UNUSED__)
|
||||||
}
|
}
|
||||||
EINA_LIST_FREE(gc->populate_requests, cc)
|
EINA_LIST_FREE(gc->populate_requests, cc)
|
||||||
{
|
{
|
||||||
if (x)
|
|
||||||
{
|
|
||||||
cont = EINA_TRUE;
|
|
||||||
e_gadcon_layout_thaw(gc->o_container);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
#ifndef E17_RELEASE_BUILD
|
#ifndef E17_RELEASE_BUILD
|
||||||
if (first) e_main_ts(cc->name);
|
if (first) e_main_ts(cc->name);
|
||||||
#endif
|
#endif
|
||||||
|
@ -5618,18 +5606,16 @@ _e_gadcon_provider_populate_idler(void *data __UNUSED__)
|
||||||
if (freeze) e_gadcon_layout_thaw(gc->o_container);
|
if (freeze) e_gadcon_layout_thaw(gc->o_container);
|
||||||
if (x) _e_gadcon_event_populate(gc);
|
if (x) _e_gadcon_event_populate(gc);
|
||||||
}
|
}
|
||||||
out:
|
//out:
|
||||||
#ifndef E17_RELEASE_BUILD
|
#ifndef E17_RELEASE_BUILD
|
||||||
if (first)
|
if (first)
|
||||||
e_main_ts("gadcon populate idler end");
|
e_main_ts("gadcon populate idler end");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!cont)
|
populate_job = NULL;
|
||||||
populate_idler = NULL;
|
|
||||||
#ifndef E17_RELEASE_BUILD
|
#ifndef E17_RELEASE_BUILD
|
||||||
first = EINA_FALSE;
|
first = EINA_FALSE;
|
||||||
#endif
|
#endif
|
||||||
return cont;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -5637,8 +5623,8 @@ _e_gadcon_provider_populate_request(E_Gadcon *gc, const E_Gadcon_Client_Class *c
|
||||||
{
|
{
|
||||||
if (eina_list_data_find(gc->populate_requests, cc)) return;
|
if (eina_list_data_find(gc->populate_requests, cc)) return;
|
||||||
gc->populate_requests = eina_list_append(gc->populate_requests, cc);
|
gc->populate_requests = eina_list_append(gc->populate_requests, cc);
|
||||||
if (!populate_idler)
|
if (populate_job) ecore_job_del(populate_job);
|
||||||
populate_idler = ecore_idler_add(_e_gadcon_provider_populate_idler, NULL);
|
populate_job = ecore_job_add(_e_gadcon_provider_populate_job, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -5652,10 +5638,10 @@ _e_gadcon_provider_populate_unrequest(const E_Gadcon_Client_Class *cc)
|
||||||
gc->populate_requests = eina_list_remove(gc->populate_requests, cc);
|
gc->populate_requests = eina_list_remove(gc->populate_requests, cc);
|
||||||
more += eina_list_count(gc->populate_requests);
|
more += eina_list_count(gc->populate_requests);
|
||||||
}
|
}
|
||||||
if ((!more) && (populate_idler))
|
if ((!more) && (populate_job))
|
||||||
{
|
{
|
||||||
ecore_idler_del(populate_idler);
|
ecore_job_del(populate_job);
|
||||||
populate_idler = NULL;
|
populate_job = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,7 @@ e_module_all_load(void)
|
||||||
EINA_LIST_FOREACH(e_config->modules, l, em)
|
EINA_LIST_FOREACH(e_config->modules, l, em)
|
||||||
{
|
{
|
||||||
if (!em) continue;
|
if (!em) continue;
|
||||||
if ((em->delayed) && (em->enabled))
|
if ((em->delayed) && (em->enabled) & (!e_config->no_module_delay))
|
||||||
{
|
{
|
||||||
if (!_e_module_idler)
|
if (!_e_module_idler)
|
||||||
_e_module_idler = ecore_idle_enterer_add(_e_module_cb_idler, NULL);
|
_e_module_idler = ecore_idle_enterer_add(_e_module_cb_idler, NULL);
|
||||||
|
|
|
@ -10,6 +10,7 @@ struct _E_Config_Dialog_Data
|
||||||
{
|
{
|
||||||
double framerate;
|
double framerate;
|
||||||
int priority;
|
int priority;
|
||||||
|
int module_delay;
|
||||||
int cache_flush_poll_interval;
|
int cache_flush_poll_interval;
|
||||||
double font_cache;
|
double font_cache;
|
||||||
double image_cache;
|
double image_cache;
|
||||||
|
@ -47,6 +48,7 @@ _create_data(E_Config_Dialog *cfd __UNUSED__)
|
||||||
if (!cfdata) return NULL;
|
if (!cfdata) return NULL;
|
||||||
cfdata->framerate = e_config->framerate;
|
cfdata->framerate = e_config->framerate;
|
||||||
cfdata->priority = e_config->priority;
|
cfdata->priority = e_config->priority;
|
||||||
|
cfdata->module_delay = !e_config->no_module_delay;
|
||||||
cfdata->font_cache = ((double)e_config->font_cache / 1024);
|
cfdata->font_cache = ((double)e_config->font_cache / 1024);
|
||||||
cfdata->image_cache = ((double)e_config->image_cache / 1024);
|
cfdata->image_cache = ((double)e_config->image_cache / 1024);
|
||||||
cfdata->edje_cache = e_config->edje_cache;
|
cfdata->edje_cache = e_config->edje_cache;
|
||||||
|
@ -73,6 +75,7 @@ _basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
|
||||||
e_config->edje_collection_cache = cfdata->edje_collection_cache;
|
e_config->edje_collection_cache = cfdata->edje_collection_cache;
|
||||||
edje_frametime_set(1.0 / e_config->framerate);
|
edje_frametime_set(1.0 / e_config->framerate);
|
||||||
e_config->priority = cfdata->priority;
|
e_config->priority = cfdata->priority;
|
||||||
|
e_config->no_module_delay = !cfdata->module_delay;
|
||||||
ecore_exe_run_priority_set(e_config->priority);
|
ecore_exe_run_priority_set(e_config->priority);
|
||||||
e_canvas_recache();
|
e_canvas_recache();
|
||||||
e_config_save_queue();
|
e_config_save_queue();
|
||||||
|
@ -89,7 +92,8 @@ _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfda
|
||||||
(e_config->image_cache != (cfdata->image_cache * 1024)) ||
|
(e_config->image_cache != (cfdata->image_cache * 1024)) ||
|
||||||
(e_config->edje_cache != cfdata->edje_cache) ||
|
(e_config->edje_cache != cfdata->edje_cache) ||
|
||||||
(e_config->edje_collection_cache != cfdata->edje_collection_cache) ||
|
(e_config->edje_collection_cache != cfdata->edje_collection_cache) ||
|
||||||
(e_config->priority != cfdata->priority));
|
(e_config->priority != cfdata->priority) ||
|
||||||
|
(e_config->no_module_delay != (!cfdata->module_delay)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static Evas_Object *
|
static Evas_Object *
|
||||||
|
@ -106,12 +110,15 @@ _basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data
|
||||||
&(cfdata->framerate), NULL, 100);
|
&(cfdata->framerate), NULL, 100);
|
||||||
e_widget_list_object_append(ol, ob, 1, 0, 0.5);
|
e_widget_list_object_append(ol, ob, 1, 0, 0.5);
|
||||||
|
|
||||||
ob = e_widget_label_add(evas, _("Applications priority"));
|
ob = e_widget_label_add(evas, _("Application priority"));
|
||||||
e_widget_list_object_append(ol, ob, 1, 1, 0.5);
|
e_widget_list_object_append(ol, ob, 1, 1, 0.5);
|
||||||
ob = e_widget_slider_add(evas, 1, 0, "%1.0f", 0, 19, 1, 0, NULL,
|
ob = e_widget_slider_add(evas, 1, 0, "%1.0f", 0, 19, 1, 0, NULL,
|
||||||
&(cfdata->priority), 100);
|
&(cfdata->priority), 100);
|
||||||
e_widget_list_object_append(ol, ob, 1, 0, 0.5);
|
e_widget_list_object_append(ol, ob, 1, 0, 0.5);
|
||||||
|
|
||||||
|
ob = e_widget_check_add(evas, _("Allow module load delay"), &(cfdata->module_delay));
|
||||||
|
e_widget_list_object_append(ol, ob, 1, 0, 0.5);
|
||||||
|
|
||||||
e_widget_toolbook_page_append(otb, NULL, _("General"), ol,
|
e_widget_toolbook_page_append(otb, NULL, _("General"), ol,
|
||||||
1, 0, 1, 0, 0.5, 0.0);
|
1, 0, 1, 0, 0.5, 0.0);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue