diff --git a/config/default/e.src b/config/default/e.src index 947b9074e..916efaf00 100644 --- a/config/default/e.src +++ b/config/default/e.src @@ -20,6 +20,7 @@ group "E_Config" struct { value "show_desktop_icons" int: 1; value "edge_flip_dragging" int: 0; value "use_composite" int: 0; + value "no_module_delay" int: 1; group "modules" list { group "E_Config_Module" struct { value "name" string: "wizard"; diff --git a/config/mobile/e.src b/config/mobile/e.src index f30bdb67a..5328f09a9 100644 --- a/config/mobile/e.src +++ b/config/mobile/e.src @@ -219,6 +219,7 @@ group "E_Config" struct { value "powersave.extreme" double: 1200.0; value "powersave.min" int: 0; value "powersave.max" int: 5; + value "no_module_delay" int: 1; group "syscon.actions" list { group "E_Config_Syscon_Action" struct { value "action" string: "halt"; diff --git a/config/standard/e.src b/config/standard/e.src index ec3ca4dae..56d3e6cba 100644 --- a/config/standard/e.src +++ b/config/standard/e.src @@ -212,6 +212,7 @@ group "E_Config" struct { value "powersave.extreme" double: 1200.0; value "powersave.min" int: 0; value "powersave.max" int: 5; + value "no_module_delay" int: 1; group "syscon.actions" list { group "E_Config_Syscon_Action" struct { value "action" string: "halt"; diff --git a/src/bin/e_config.c b/src/bin/e_config.c index ca03318ed..33b1749f8 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -658,6 +658,7 @@ e_config_init(void) E_CONFIG_VAL(D, T, edge_flip_dragging, INT); /**/ E_CONFIG_VAL(D, T, use_composite, INT); /**/ 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_LIST(D, T, modules, _e_config_module_edd); /**/ E_CONFIG_LIST(D, T, font_fallbacks, _e_config_font_fallback_edd); /**/ diff --git a/src/bin/e_config.h b/src/bin/e_config.h index 2d7b0de81..1fd91dc3c 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -66,6 +66,7 @@ struct _E_Config int show_desktop_icons; // GUI int edge_flip_dragging; // GUI int use_composite; // GUI + int no_module_delay; // GUI const char *language; // GUI const char *desklock_language; // GUI Eina_List *modules; // GUI diff --git a/src/bin/e_gadcon.c b/src/bin/e_gadcon.c index cb235f7d3..6b7502a9d 100644 --- a/src/bin/e_gadcon.c +++ b/src/bin/e_gadcon.c @@ -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_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 Eina_Bool _e_gadcon_provider_populate_idler(void *data); -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_provider_populate_job(void *data); +static void _e_gadcon_event_populate_free(void *data __UNUSED__, void *event); +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); @@ -190,9 +190,9 @@ static Eina_Hash *providers = NULL; static Eina_List *providers_list = NULL; static Eina_List *gadcons = 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 Ecore_Idler *custom_populate_idler = NULL; +static Ecore_Job *custom_populate_job = NULL; static Eina_List *gadcon_locations = NULL; static Ecore_Event_Handler *_module_init_end_handler = NULL; static Eina_Bool _modules_loaded = EINA_FALSE; @@ -232,16 +232,16 @@ e_gadcon_init(void) EINTERN int e_gadcon_shutdown(void) { - if (populate_idler) + if (populate_job) { - ecore_idler_del(populate_idler); - populate_idler = NULL; + ecore_job_del(populate_job); + populate_job = NULL; } custom_populate_requests = eina_list_free(custom_populate_requests); - if (custom_populate_idler) + if (custom_populate_job) { - ecore_idler_del(custom_populate_idler); - custom_populate_idler = NULL; + ecore_job_del(custom_populate_job); + custom_populate_job = NULL; } _modules_loaded = EINA_FALSE; if (_module_init_end_handler) @@ -354,10 +354,10 @@ e_gadcon_custom_new(E_Gadcon *gc) gadcons = eina_list_append(gadcons, gc); - if (!custom_populate_idler) + if (!custom_populate_job) { - custom_populate_idler = - ecore_idler_add(_e_gadcon_custom_populate_idler, NULL); + custom_populate_job = + ecore_job_add(_e_gadcon_custom_populate_job, NULL); } if (!eina_list_data_find(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); if (!gc->custom) return; - if (!custom_populate_idler) + if (!custom_populate_job) { - custom_populate_idler = - ecore_idler_add(_e_gadcon_custom_populate_idler, NULL); + custom_populate_job = + ecore_job_add(_e_gadcon_custom_populate_job, NULL); } if (!eina_list_data_find(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); } -static Eina_Bool -_e_gadcon_custom_populate_idler(void *data __UNUSED__) +static void +_e_gadcon_custom_populate_job(void *data __UNUSED__) { const E_Gadcon_Client_Class *cc; E_Config_Gadcon_Client *cf_gcc; const Eina_List *l; E_Gadcon *gc; - if (!_modules_loaded) return EINA_TRUE; #ifndef E17_RELEASE_BUILD static Eina_Bool first = EINA_TRUE; if (first) @@ -5551,24 +5550,19 @@ _e_gadcon_custom_populate_idler(void *data __UNUSED__) #endif if (!custom_populate_requests) { - custom_populate_idler = NULL; + custom_populate_job = NULL; #ifndef E17_RELEASE_BUILD first = EINA_FALSE; #endif - return ECORE_CALLBACK_CANCEL; } - return ECORE_CALLBACK_RENEW; } -static Eina_Bool -_e_gadcon_provider_populate_idler(void *data __UNUSED__) +static void +_e_gadcon_provider_populate_job(void *data __UNUSED__) { E_Gadcon_Client_Class *cc; Eina_List *l; E_Gadcon *gc; - Eina_Bool cont = EINA_FALSE; - - if (!_modules_loaded) return EINA_TRUE; #ifndef E17_RELEASE_BUILD 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) { - if (x) - { - cont = EINA_TRUE; - e_gadcon_layout_thaw(gc->o_container); - goto out; - } #ifndef E17_RELEASE_BUILD if (first) e_main_ts(cc->name); #endif @@ -5618,18 +5606,16 @@ _e_gadcon_provider_populate_idler(void *data __UNUSED__) if (freeze) e_gadcon_layout_thaw(gc->o_container); if (x) _e_gadcon_event_populate(gc); } -out: +//out: #ifndef E17_RELEASE_BUILD if (first) e_main_ts("gadcon populate idler end"); #endif - if (!cont) - populate_idler = NULL; + populate_job = NULL; #ifndef E17_RELEASE_BUILD first = EINA_FALSE; #endif - return cont; } 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; gc->populate_requests = eina_list_append(gc->populate_requests, cc); - if (!populate_idler) - populate_idler = ecore_idler_add(_e_gadcon_provider_populate_idler, NULL); + if (populate_job) ecore_job_del(populate_job); + populate_job = ecore_job_add(_e_gadcon_provider_populate_job, NULL); } 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); more += eina_list_count(gc->populate_requests); } - if ((!more) && (populate_idler)) + if ((!more) && (populate_job)) { - ecore_idler_del(populate_idler); - populate_idler = NULL; + ecore_job_del(populate_job); + populate_job = NULL; } } diff --git a/src/bin/e_module.c b/src/bin/e_module.c index d154b7b33..a8d577786 100644 --- a/src/bin/e_module.c +++ b/src/bin/e_module.c @@ -78,7 +78,7 @@ e_module_all_load(void) EINA_LIST_FOREACH(e_config->modules, l, em) { if (!em) continue; - if ((em->delayed) && (em->enabled)) + if ((em->delayed) && (em->enabled) & (!e_config->no_module_delay)) { if (!_e_module_idler) _e_module_idler = ecore_idle_enterer_add(_e_module_cb_idler, NULL); diff --git a/src/modules/conf_performance/e_int_config_performance.c b/src/modules/conf_performance/e_int_config_performance.c index 4d2d8d38e..6d05f82c0 100644 --- a/src/modules/conf_performance/e_int_config_performance.c +++ b/src/modules/conf_performance/e_int_config_performance.c @@ -10,6 +10,7 @@ struct _E_Config_Dialog_Data { double framerate; int priority; + int module_delay; int cache_flush_poll_interval; double font_cache; double image_cache; @@ -47,6 +48,7 @@ _create_data(E_Config_Dialog *cfd __UNUSED__) if (!cfdata) return NULL; cfdata->framerate = e_config->framerate; cfdata->priority = e_config->priority; + cfdata->module_delay = !e_config->no_module_delay; cfdata->font_cache = ((double)e_config->font_cache / 1024); cfdata->image_cache = ((double)e_config->image_cache / 1024); 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; edje_frametime_set(1.0 / e_config->framerate); e_config->priority = cfdata->priority; + e_config->no_module_delay = !cfdata->module_delay; ecore_exe_run_priority_set(e_config->priority); e_canvas_recache(); 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->edje_cache != cfdata->edje_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 * @@ -106,12 +110,15 @@ _basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data &(cfdata->framerate), NULL, 100); 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); ob = e_widget_slider_add(evas, 1, 0, "%1.0f", 0, 19, 1, 0, NULL, &(cfdata->priority), 100); 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, 1, 0, 1, 0, 0.5, 0.0);