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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs