add delayed module loading in idle time. moduels can register if they

should/can be delayed or not.


SVN revision: 31087
This commit is contained in:
Carsten Haitzler 2007-07-29 10:24:56 +00:00
parent 45f29cdf73
commit 9bdd051457
38 changed files with 142 additions and 54 deletions

View File

@ -174,6 +174,7 @@ e_config_init(void)
#define D _e_config_module_edd
E_CONFIG_VAL(D, T, name, STR);
E_CONFIG_VAL(D, T, enabled, UCHAR);
E_CONFIG_VAL(D, T, delayed, UCHAR);
_e_config_font_default_edd = E_CONFIG_DD_NEW("E_Font_Default",
E_Font_Default);
@ -741,52 +742,53 @@ e_config_init(void)
{
E_Config_Module *em;
#define CFG_MODULE(_name, _enabled) \
#define CFG_MODULE(_name, _enabled, _delayed) \
em = E_NEW(E_Config_Module, 1); \
em->name = evas_stringshare_add(_name); \
em->enabled = _enabled; \
em->delayed = _delayed; \
e_config->modules = evas_list_append(e_config->modules, em)
CFG_MODULE("start", 1);
CFG_MODULE("ibar", 1);
CFG_MODULE("ibox", 1);
CFG_MODULE("dropshadow", 1);
CFG_MODULE("clock", 1);
CFG_MODULE("battery", 1);
CFG_MODULE("cpufreq", 1);
CFG_MODULE("temperature", 1);
CFG_MODULE("pager", 1);
CFG_MODULE("conf_wallpaper", 1);
CFG_MODULE("conf_theme", 1);
CFG_MODULE("conf_colors", 1);
CFG_MODULE("conf_fonts", 1);
CFG_MODULE("conf_borders", 1);
CFG_MODULE("conf_icon_theme", 1);
CFG_MODULE("conf_mouse_cursor", 1);
CFG_MODULE("conf_transitions", 1);
CFG_MODULE("conf_startup", 1);
CFG_MODULE("conf_applications", 1);
CFG_MODULE("conf_desks", 1);
CFG_MODULE("conf_desk", 1);
CFG_MODULE("conf_display", 1);
CFG_MODULE("conf_desklock", 1);
CFG_MODULE("conf_screensaver", 1);
CFG_MODULE("conf_dpms", 1);
CFG_MODULE("conf_shelves", 1);
CFG_MODULE("conf_keybindings", 1);
CFG_MODULE("conf_mousebindings", 1);
CFG_MODULE("conf_mouse", 1);
CFG_MODULE("conf_window_display", 1);
CFG_MODULE("conf_window_focus", 1);
CFG_MODULE("conf_window_manipulation", 1);
CFG_MODULE("conf_menus", 1);
CFG_MODULE("conf_clientlist", 1);
CFG_MODULE("conf_dialogs", 1);
CFG_MODULE("conf_performance", 1);
CFG_MODULE("conf_winlist", 1);
CFG_MODULE("conf_exebuf", 1);
CFG_MODULE("conf_paths", 1);
CFG_MODULE("conf_mime", 1);
CFG_MODULE("start", 1, 0);
CFG_MODULE("ibar", 1, 0);
CFG_MODULE("ibox", 1, 0);
CFG_MODULE("dropshadow", 1, 0);
CFG_MODULE("clock", 1, 0);
CFG_MODULE("battery", 1, 0);
CFG_MODULE("cpufreq", 1, 0);
CFG_MODULE("temperature", 1, 0);
CFG_MODULE("pager", 1, 0);
CFG_MODULE("conf_wallpaper", 1, 1);
CFG_MODULE("conf_theme", 1, 1);
CFG_MODULE("conf_colors", 1, 1);
CFG_MODULE("conf_fonts", 1, 1);
CFG_MODULE("conf_borders", 1, 1);
CFG_MODULE("conf_icon_theme", 1, 1);
CFG_MODULE("conf_mouse_cursor", 1, 1);
CFG_MODULE("conf_transitions", 1, 1);
CFG_MODULE("conf_startup", 1, 1);
CFG_MODULE("conf_applications", 1, 1);
CFG_MODULE("conf_desks", 1, 1);
CFG_MODULE("conf_desk", 1, 1);
CFG_MODULE("conf_display", 1, 1);
CFG_MODULE("conf_desklock", 1, 1);
CFG_MODULE("conf_screensaver", 1, 1);
CFG_MODULE("conf_dpms", 1, 1);
CFG_MODULE("conf_shelves", 1, 1);
CFG_MODULE("conf_keybindings", 1, 1);
CFG_MODULE("conf_mousebindings", 1, 1);
CFG_MODULE("conf_mouse", 1, 1);
CFG_MODULE("conf_window_display", 1, 1);
CFG_MODULE("conf_window_focus", 1, 1);
CFG_MODULE("conf_window_manipulation", 1, 1);
CFG_MODULE("conf_menus", 1, 1);
CFG_MODULE("conf_clientlist", 1, 1);
CFG_MODULE("conf_dialogs", 1, 1);
CFG_MODULE("conf_performance", 1, 1);
CFG_MODULE("conf_winlist", 1, 1);
CFG_MODULE("conf_exebuf", 1, 1);
CFG_MODULE("conf_paths", 1, 1);
CFG_MODULE("conf_mime", 1, 1);
}
#if 0
{

View File

@ -305,6 +305,7 @@ struct _E_Config_Module
{
const char *name;
unsigned char enabled;
unsigned char delayed;
};
struct _E_Config_Theme

View File

@ -15,9 +15,12 @@ static void _e_module_free(E_Module *m);
static void _e_module_dialog_disable_show(const char *title, const char *body, E_Module *m);
static void _e_module_cb_dialog_disable(void *data, E_Dialog *dia);
static void _e_module_event_update_free(void *data, void *event);
static int _e_module_cb_idler(void *data);
/* local subsystem globals */
static Evas_List *_e_modules = NULL;
static Ecore_Idler *_e_module_idler = NULL;
static Evas_List *_e_modules_delayed = NULL;
EAPI int E_EVENT_MODULE_UPDATE = 0;
@ -54,28 +57,30 @@ e_module_shutdown(void)
EAPI void
e_module_all_load(void)
{
Evas_List *pl = NULL, *l;
Evas_List *l;
for (l = e_config->modules; l;)
for (l = e_config->modules; l; l = l->next)
{
E_Config_Module *em;
E_Module *m;
em = l->data;
pl = l;
l = l->next;
m = NULL;
if (em->name) m = e_module_new(em->name);
if (m)
if ((em->delayed) && (em->enabled))
{
if (em->enabled) e_module_enable(m);
if (!_e_module_idler)
_e_module_idler = ecore_idler_add(_e_module_cb_idler, NULL);
_e_modules_delayed =
evas_list_append(_e_modules_delayed,
evas_stringshare_add(em->name));
}
else
{
if (em->name) evas_stringshare_del(em->name);
E_FREE(em);
e_config->modules = evas_list_remove_list(e_config->modules, pl);
e_config_save_queue();
m = NULL;
if (em->name) m = e_module_new(em->name);
if (m)
{
if (em->enabled) e_module_enable(m);
}
}
}
}
@ -417,6 +422,28 @@ e_module_dialog_show(E_Module *m, const char *title, const char *body)
free(icon);
}
EAPI void
e_module_delayed_set(E_Module *m, int delayed)
{
Evas_List *l;
for (l = e_config->modules; l; l = l->next)
{
E_Config_Module *em;
em = l->data;
if ((em->name) && (!strcmp(m->name, em->name)))
{
if (em->delayed != delayed)
{
em->delayed = delayed;
e_config_save_queue();
}
break;
}
}
}
/* local subsystem functions */
static void
@ -493,3 +520,26 @@ _e_module_event_update_free(void *data, void *event)
E_FREE(ev->name);
E_FREE(ev);
}
static int
_e_module_cb_idler(void *data)
{
if (_e_modules_delayed)
{
const char *name;
E_Module *m;
name = _e_modules_delayed->data;
_e_modules_delayed = evas_list_remove_list(_e_modules_delayed, _e_modules_delayed);
m = NULL;
if (name) m = e_module_new(name);
if (m)
{
e_module_enable(m);
}
evas_stringshare_del(name);
}
if (_e_modules_delayed) return 1;
_e_module_idler = NULL;
return 0;
}

View File

@ -69,6 +69,7 @@ EAPI int e_module_save_all(void);
EAPI E_Module *e_module_find(const char *name);
EAPI Evas_List *e_module_list(void);
EAPI void e_module_dialog_show(E_Module *m, const char *title, const char *body);
EAPI void e_module_delayed_set(E_Module *m, int delayed);
#endif
#endif

View File

@ -41,6 +41,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("menus", 60, _("Menus"), NULL, "enlightenment/menus");
e_configure_registry_item_add("menus/favorites_menu", 10, _("Favorites Menu"), NULL, "enlightenment/favorites", e_int_config_apps_favs);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -36,6 +36,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("internal", -1, _("Internal"), NULL, "enlightenment/internal");
e_configure_registry_item_add("internal/borders_border", -1, _("Border"), NULL, "enlightenment/windows", e_int_config_borders_border);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("menus", 60, _("Menus"), NULL, "enlightenment/menus");
e_configure_registry_item_add("menus/client_list_menu", 40, _("Client List Menu"), NULL, "enlightenment/winlist", e_int_config_clientlist);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("appearance", 10, _("Appearance"), NULL, "enlightenment/appearance");
e_configure_registry_item_add("appearance/colors", 30, _("Colors"), NULL, "enlightenment/colors", e_int_config_color_classes);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("internal", -1, _("Internal"), NULL, "enlightenment/internal");
e_configure_registry_item_add("internal/desk", -1, _("Desk"), NULL, "enlightenment/windows", e_int_config_desk);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("screen", 30, _("Screen"), NULL, "enlightenment/screen_setup");
e_configure_registry_item_add("screen/screen_lock", 30, _("Screen Lock"), NULL, "enlightenment/desklock", e_int_config_desklock);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("screen", 30, _("Screen"), NULL, "enlightenment/screen_setup");
e_configure_registry_item_add("screen/virtual_desktops", 10, _("Virtual Desktops"), NULL, "enlightenment/desktops", e_int_config_desks);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("advanced", 80, _("Advanced"), NULL, "enlightenment/advanced");
e_configure_registry_item_add("advanced/dialogs", 10, _("Dialogs"), NULL, "enlightenment/configuration", e_int_config_dialogs);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("screen", 30, _("Screen"), NULL, "enlightenment/screen_setup");
e_configure_registry_item_add("screen/screen_resolution", 20, _("Screen Resolution"), NULL, "enlightenment/screen_resolution", e_int_config_display);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("screen", 30, _("Screen"), NULL, "enlightenment/screen_setup");
e_configure_registry_item_add("screen/power_management", 50, _("Power Management"), NULL, "enlightenment/power_management", e_int_config_dpms);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("advanced", 80, _("Advanced"), NULL, "enlightenment/advanced");
e_configure_registry_item_add("advanced/run_command", 40, _("Run Command"), NULL, "enlightenment/run", e_int_config_exebuf);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("appearance", 10, _("Appearance"), NULL, "enlightenment/appearance");
e_configure_registry_item_add("appearance/fonts", 40, _("Fonts"), NULL, "enlightenment/fonts", e_int_config_fonts);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("appearance", 10, _("Appearance"), NULL, "enlightenment/appearance");
e_configure_registry_item_add("appearance/icon_theme", 60, _("Icon Theme"), NULL, "enlightenment/icon_theme", e_int_config_icon_themes);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("language", 70, _("Language"), NULL, "enlightenment/intl");
e_configure_registry_item_add("language/input_method_settings", 20, _("Input Method Settings"), NULL, "enlightenment/imc", e_int_config_imc);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("language", 70, _("Language"), NULL, "enlightenment/intl");
e_configure_registry_item_add("language/language_settings", 10, _("Language Settings"), NULL, "enlightenment/intl", e_int_config_intl);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("keyboard_and_mouse", 40, _("Keyboard & Mouse"), NULL, "enlightenment/behavior");
e_configure_registry_item_add("keyboard_and_mouse/key_bindings", 10, _("Key Bindings"), NULL, "enlightenment/keys", e_int_config_keybindings);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("menus", 60, _("Menus"), NULL, "enlightenment/menus");
e_configure_registry_item_add("menus/menu_settings", 30, _("Menu Settings"), NULL, "enlightenment/menu_settings", e_int_config_menus);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("advanced", 80, _("Advanced"), NULL, "enlightenment/advanced");
e_configure_registry_item_add("advanced/file_icons", 60, _("File Icons"), NULL, "enlightenment/file_icons", e_int_config_mime);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("keyboard_and_mouse", 40, _("Keyboard & Mouse"), NULL, "enlightenment/behavior");
e_configure_registry_item_add("keyboard_and_mouse/mouse_acceleration", 30, _("Mouse Acceleration"), NULL, "enlightenment/mouse_clean", e_int_config_mouse);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("appearance", 10, _("Appearance"), NULL, "enlightenment/appearance");
e_configure_registry_item_add("appearance/mouse_cursor", 70, _("Mouse Cursor"), NULL, "enlightenment/mouse", e_int_config_cursor);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("keyboard_and_mouse", 40, _("Keyboard & Mouse"), NULL, "enlightenment/behavior");
e_configure_registry_item_add("keyboard_and_mouse/mouse_bindings", 20, _("Mouse Bindings"), NULL, "enlightenment/mouse_clean", e_int_config_mousebindings);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("advanced", 80, _("Advanced"), NULL, "enlightenment/advanced");
e_configure_registry_item_add("advanced/search_directories", 50, _("Search Directories"), NULL, "enlightenment/directories", e_int_config_paths);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("advanced", 80, _("Advanced"), NULL, "enlightenment/advanced");
e_configure_registry_item_add("advanced/performance", 20, _("Performance"), NULL, "enlightenment/performance", e_int_config_performance);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("advanced", 80, _("Advanced"), NULL, "enlightenment/advanced");
e_configure_registry_item_add("advanced/profiles", 50, _("Profiles"), NULL, "enlightenment/profiles", e_int_config_profiles);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("screen", 30, _("Screen"), NULL, "enlightenment/screen_setup");
e_configure_registry_item_add("screen/screen_saver", 40, _("Screen Saver"), NULL, "enlightenment/screensaver", e_int_config_screensaver);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("extensions", 90, _("Extensions"), NULL, "enlightenment/extensions");
e_configure_registry_item_add("extensions/shelves", 20, _("Shelves"), NULL, "enlightenment/shelf", e_int_config_shelf);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("appearance", 10, _("Appearance"), NULL, "enlightenment/appearance");
e_configure_registry_item_add("appearance/startup", 90, _("Startup"), NULL, "enlightenment/startup", e_int_config_startup);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("appearance", 10, _("Appearance"), NULL, "enlightenment/appearance");
e_configure_registry_item_add("appearance/theme", 20, _("Theme"), NULL, "enlightenment/themes", e_int_config_theme);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("appearance", 10, _("Appearance"), NULL, "enlightenment/appearance");
e_configure_registry_item_add("appearance/transitions", 80, _("Transitions"), NULL, "enlightenment/transitions", e_int_config_transitions);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -36,6 +36,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("internal", -1, _("Internal"), NULL, "enlightenment/internal");
e_configure_registry_item_add("internal/wallpaper_desk", -1, _("Wallpaper"), NULL, "enlightenment/windows", e_int_config_wallpaper_desk);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("windows", 50, _("Windows"), NULL, "enlightenment/windows");
e_configure_registry_item_add("windows/window_display", 10, _("Window Display"), NULL, "enlightenment/windows", e_int_config_window_display);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("windows", 50, _("Windows"), NULL, "enlightenment/windows");
e_configure_registry_item_add("windows/window_focus", 20, _("Window Focus"), NULL, "enlightenment/focus", e_int_config_focus);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("windows", 50, _("Windows"), NULL, "enlightenment/windows");
e_configure_registry_item_add("windows/window_manipulation", 30, _("Window Manipulation"), NULL, "enlightenment/window_manipulation", e_int_config_window_manipulation);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}

View File

@ -34,6 +34,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("advanced", 80, _("Advanced"), NULL, "enlightenment/advanced");
e_configure_registry_item_add("advanced/window_list", 30, _("Window List"), NULL, "enlightenment/winlist", e_int_config_winlist);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
}