Enlightenment CVS committal Author : sebastid Project : e17 Module : apps/e
Dir : e17/apps/e/src/modules/cpufreq Modified Files: e_mod_main.c e_mod_main.h Log Message: Restore controller on startup. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/cpufreq/e_mod_main.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- e_mod_main.c 22 Aug 2005 07:46:41 -0000 1.17 +++ e_mod_main.c 30 Aug 2005 14:45:24 -0000 1.18 @@ -1,3 +1,6 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ #include <Ecore.h> #include <errno.h> #include <ctype.h> @@ -21,6 +24,7 @@ static void _cpufreq_menu_normal(void *data, E_Menu *m, E_Menu_Item *mi); static void _cpufreq_menu_slow(void *data, E_Menu *m, E_Menu_Item *mi); static void _cpufreq_menu_very_slow(void *data, E_Menu *m, E_Menu_Item *mi); +static void _cpufreq_menu_restore_governor(void *data, E_Menu *m, E_Menu_Item *mi); static void _cpufreq_menu_governor(void *data, E_Menu *m, E_Menu_Item *mi); static void _cpufreq_menu_frequency(void *data, E_Menu *m, E_Menu_Item *mi); static void _cpufreq_config_menu_new(Cpufreq *cpufreq); @@ -92,6 +96,10 @@ int e_modapi_save(E_Module *module) { + Cpufreq *e; + + e = module->data; + e_config_domain_save("module.cpufreq", conf_edd, e->conf); return 1; } @@ -141,12 +149,16 @@ #define D conf_edd E_CONFIG_VAL(D, T, poll_time, DOUBLE); E_CONFIG_LIST(D, T, faces, conf_face_edd); + E_CONFIG_VAL(D, T, restore_governor, INT); + E_CONFIG_VAL(D, T, governor, STR); e->conf = e_config_domain_load("module.cpufreq", conf_edd); if (!e->conf) { e->conf = E_NEW(Config, 1); e->conf->poll_time = 2.0; + e->conf->restore_governor = 0; + e->conf->governor = NULL; } E_CONFIG_LIMIT(e->conf->poll_time, 0.5, 60.0); #ifdef __FreeBSD__ @@ -161,6 +173,15 @@ e->status = _cpufreq_status_new(); _cpufreq_status_check_available(e->status); + if ((e->conf->restore_governor) && (e->conf->governor)) + { + /* If the governor is available, restore it */ + for (l = e->status->governors; l; l = l->next) + { + if (!strcmp(l->data, e->conf->governor)) + _cpufreq_set_governor(e, e->conf->governor); + } + } _cpufreq_config_menu_new(e); managers = e_manager_list(); @@ -202,6 +223,12 @@ if (e->menu_governor) { + mi = e_menu_item_new(ef->menu); + e_menu_item_label_set(mi, _("Restore Controller on Startup")); + e_menu_item_check_set(mi, 1); + e_menu_item_toggle_set(mi, e->conf->restore_governor); + e_menu_item_callback_set(mi, _cpufreq_menu_restore_governor, e); + /* Add governors menu to this face */ mi = e_menu_item_new(ef->menu); e_menu_item_label_set(mi, _("Set Controller")); @@ -264,6 +291,7 @@ static void _cpufreq_set_governor(Cpufreq *e, const char *governor) { + /* TODO: Use ecore_exe */ char buf[4096]; int ret; @@ -359,15 +387,37 @@ } static void +_cpufreq_menu_restore_governor(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Cpufreq *e; + + e = data; + e->conf->restore_governor = e_menu_item_toggle_get(mi); + if ((!e->conf->governor) || strcmp(e->status->cur_governor, e->conf->governor)) + { + if (e->conf->governor) + free(e->conf->governor); + e->conf->governor = strdup(e->status->cur_governor); + } + e_config_save_queue(); +} + +static void _cpufreq_menu_governor(void *data, E_Menu *m, E_Menu_Item *mi) { + Cpufreq *e; char *governor; - + + e = data; governor = e_object_data_get(E_OBJECT(mi)); if (governor) { - _cpufreq_set_governor(data, governor); + _cpufreq_set_governor(e, governor); + if (e->conf->governor) + free(e->conf->governor); + e->conf->governor = strdup(governor); } + e_config_save_queue(); } static void @@ -432,7 +482,7 @@ if (e->status->governors) { mn = e_menu_new(); - + for (l = e->status->governors; l; l = l->next) { mi = e_menu_item_new(mn); @@ -491,6 +541,12 @@ if (e->menu_governor) { mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Restore Governor on Startup")); + e_menu_item_check_set(mi, 1); + e_menu_item_toggle_set(mi, e->conf->restore_governor); + e_menu_item_callback_set(mi, _cpufreq_menu_restore_governor, e); + + mi = e_menu_item_new(mn); e_menu_item_label_set(mi, _("Set Controller")); e_menu_item_submenu_set(mi, e->menu_governor); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/cpufreq/e_mod_main.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_mod_main.h 16 Aug 2005 13:20:42 -0000 1.3 +++ e_mod_main.h 30 Aug 2005 14:45:24 -0000 1.4 @@ -24,6 +24,9 @@ { double poll_time; Evas_List *faces; + + int restore_governor; + char *governor; }; struct _Config_Face ------------------------------------------------------- SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs