[Goodies-commits] r5733 - xfce4-power-manager/trunk/src

Ali Abdallah aliov at xfce.org
Tue Oct 21 13:13:36 CEST 2008


Author: aliov
Date: 2008-10-21 11:13:35 +0000 (Tue, 21 Oct 2008)
New Revision: 5733

Modified:
   xfce4-power-manager/trunk/src/xfpm-cpu.c
   xfce4-power-manager/trunk/src/xfpm-cpu.h
   xfce4-power-manager/trunk/src/xfpm-driver.c
   xfce4-power-manager/trunk/src/xfpm-enums.h
   xfce4-power-manager/trunk/src/xfpm-settings.c
Log:
method for getting available cpu governors move to xfpm-cpu.c

Modified: xfce4-power-manager/trunk/src/xfpm-cpu.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-cpu.c	2008-10-21 10:39:26 UTC (rev 5732)
+++ xfce4-power-manager/trunk/src/xfpm-cpu.c	2008-10-21 11:13:35 UTC (rev 5733)
@@ -66,7 +66,8 @@
                                    GParamSpec *pspec);
 
 static void xfpm_cpu_load_config(XfpmCpu *cpu);
-static void xfpm_cpu_check(XfpmCpu *cpu);                                   
+static void xfpm_cpu_check(XfpmCpu *cpu);
+static void xfpm_cpu_get_governors(XfpmCpu *cpu);
 static void xfpm_cpu_set_governor(XfpmCpu *cpu,
                                   gboolean ac_adapter_present);
 
@@ -79,8 +80,7 @@
 struct XfpmCpuPrivate
 {
     XfpmHal *hal;
-	gboolean cpu_freq_can_be_used;
-	
+	guint8 governors;
 };
 
 enum
@@ -145,9 +145,12 @@
     priv = XFPM_CPU_GET_PRIVATE(cpu);
     
     priv->hal = xfpm_hal_new();
+	priv->governors = 0;
     
     xfpm_cpu_load_config(cpu);
+	
 	xfpm_cpu_check(cpu);
+	xfpm_cpu_get_governors(cpu);
     
     g_signal_connect(G_OBJECT(cpu),"notify",G_CALLBACK(xfpm_cpu_notify_cb),NULL);
     
@@ -283,9 +286,48 @@
 	XfpmCpuPrivate *priv;
 	priv = XFPM_CPU_GET_PRIVATE(cpu);
 	
-	priv->cpu_freq_can_be_used =
-	xfpm_hal_cpu_freq_interface_can_be_used(priv->hal);
+	if (!xfpm_hal_cpu_freq_interface_can_be_used(priv->hal))
+		priv->governors |= CPU_FREQ_CANNOT_BE_USED;
+
+	XFPM_DEBUG("Cpu freq control cannot be used\n");	
+}
+
+static void xfpm_cpu_get_governors(XfpmCpu *cpu)
+{
+	XfpmCpuPrivate *priv;
+	priv = XFPM_CPU_GET_PRIVATE(cpu);
 	
+	if ( priv->governors & CPU_FREQ_CANNOT_BE_USED )
+	{
+		return;
+	}
+	
+	GError *g_error = NULL;
+	gchar **govs = NULL;
+        
+	govs = xfpm_hal_get_available_cpu_governors(priv->hal,&g_error);
+	
+	if ( g_error )
+	{
+		XFPM_DEBUG("%s :\n",g_error->message);
+		g_error_free(g_error);
+		return;
+	}
+
+	int i = 0;    
+	if ( govs ) 
+	{
+		for ( i = 0 ; govs[i] ; i++ )
+		{
+			if ( !strcmp(govs[i],"powersave") )    priv->governors |= POWERSAVE;
+			if ( !strcmp(govs[i],"ondemand") )     priv->governors |= ONDEMAND;
+			if ( !strcmp(govs[i],"performance") )  priv->governors |= PERFORMANCE;
+			if ( !strcmp(govs[i],"conservative") ) priv->governors |= CONSERVATIVE;
+			if ( !strcmp(govs[i],"userspace") )    priv->governors |= USERSPACE;
+		}   
+		libhal_free_string_array(govs);
+	}
+	
 }
 
 static void
@@ -343,10 +385,10 @@
 	XfpmCpuPrivate *priv;
 	priv = XFPM_CPU_GET_PRIVATE(cpu);
 	
-	if ( !priv->cpu_freq_can_be_used )
+	if ( priv->governors & CPU_FREQ_CANNOT_BE_USED )
 	{
-		XFPM_DEBGU("Xfpm cannot use cpu freq control\n");
-		return
+		XFPM_DEBUG("Xfpm cannot use cpu freq control\n");
+		return;
 	}
     
     if ( !cpu->cpu_freq_enabled )
@@ -370,3 +412,14 @@
     cpu = g_object_new(XFPM_TYPE_CPU,NULL);
     return cpu;
 }
+
+guint8
+xfpm_cpu_get_available_governors(XfpmCpu *cpu)
+{
+	g_return_val_if_fail(XFPM_IS_CPU(cpu),0);
+	
+	XfpmCpuPrivate *priv;
+	priv = XFPM_CPU_GET_PRIVATE(cpu);
+	
+	return priv->governors;
+}

Modified: xfce4-power-manager/trunk/src/xfpm-cpu.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-cpu.h	2008-10-21 10:39:26 UTC (rev 5732)
+++ xfce4-power-manager/trunk/src/xfpm-cpu.h	2008-10-21 11:13:35 UTC (rev 5733)
@@ -30,6 +30,7 @@
 
 #define XFPM_TYPE_CPU    (xfpm_cpu_get_type())
 #define XFPM_CPU(o)      (G_TYPE_CHECK_INSTANCE_CAST(o,XFPM_TYPE_CPU,XfpmCpu))
+#define XFPM_IS_CPU(o)   (G_TYPE_CHECK_INSTANCE_TYPE(o,XFPM_TYPE_CPU))
 
 typedef struct XfpmCpuPrivate XfpmCpuPrivate;
 
@@ -52,8 +53,9 @@
 
 } XfpmCpuClass;
 
-GType          xfpm_cpu_get_type(void) G_GNUC_CONST;
-XfpmCpu       *xfpm_cpu_new     (void);
+GType          xfpm_cpu_get_type				(void) G_GNUC_CONST;
+XfpmCpu       *xfpm_cpu_new     				(void);
+guint8         xfpm_cpu_get_available_governors (XfpmCpu *cpu);
 
 G_END_DECLS
 

Modified: xfce4-power-manager/trunk/src/xfpm-driver.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-driver.c	2008-10-21 10:39:26 UTC (rev 5732)
+++ xfce4-power-manager/trunk/src/xfpm-driver.c	2008-10-21 11:13:35 UTC (rev 5733)
@@ -549,7 +549,6 @@
     XfconfChannel *channel;
     GtkWidget *dialog;
 
-    GError *g_error = NULL;
     gboolean with_dpms;
     
     channel = xfconf_channel_new(XFPM_CHANNEL_CFG);
@@ -557,33 +556,12 @@
     g_signal_connect(channel,"property-changed",
                      G_CALLBACK(xfpm_driver_property_changed_cb),drv);
 
-    guint8 gov = 0;
+    guint8 governors = 0;
     if ( priv->cpufreq_control )
     {    
-        gchar **govs;
-        
-        govs = xfpm_hal_get_available_cpu_governors(priv->hal,&g_error);
-        if ( g_error )
-        {
-            XFPM_DEBUG("%s :\n",g_error->message);
-            g_error_free(g_error);
-            goto no_gov_found;
-        }
-        int i = 0;    
-        if ( govs ) 
-        {
-            for ( i = 0 ; govs[i] ; i++ )
-            {
-                if ( !strcmp(govs[i],"powersave") )    gov |= POWERSAVE;
-                if ( !strcmp(govs[i],"ondemand") )     gov |= ONDEMAND;
-                if ( !strcmp(govs[i],"performance") )  gov |= PERFORMANCE;
-                if ( !strcmp(govs[i],"conservative") ) gov |= CONSERVATIVE;
-                if ( !strcmp(govs[i],"userspace") )    gov |= USERSPACE;
-            }   
-            libhal_free_string_array(govs);
-        }
+       governors = xfpm_cpu_get_available_governors(priv->cpu);
     }
-    no_gov_found:
+
 #ifdef HAVE_DPMS
     with_dpms = xfpm_dpms_capable(priv->dpms);
 #else
@@ -601,7 +579,7 @@
                                priv->formfactor == SYSTEM_LAPTOP ? TRUE : FALSE,
                                priv->power_management,
                                with_dpms,
-                               gov,
+                               governors,
                                switch_buttons,
                                priv->lcd_brightness_control,
                                ups_found);

Modified: xfce4-power-manager/trunk/src/xfpm-enums.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-enums.h	2008-10-21 10:39:26 UTC (rev 5732)
+++ xfce4-power-manager/trunk/src/xfpm-enums.h	2008-10-21 11:13:35 UTC (rev 5733)
@@ -48,11 +48,12 @@
 /* CPU Freq Linux governors */
 typedef enum
 {
-    POWERSAVE     = (1<<0),
-    ONDEMAND      = (1<<1),
-    PERFORMANCE   = (1<<2),
-    CONSERVATIVE  = (1<<3),
-    USERSPACE     = (1<<4)
+	CPU_FREQ_CANNOT_BE_USED = (1<<0),
+    POWERSAVE               = (1<<1),
+    ONDEMAND                = (1<<2),
+    PERFORMANCE             = (1<<3),
+    CONSERVATIVE            = (1<<4),
+    USERSPACE               = (1<<5)
     
 } XfpmCpuGovernor;
 

Modified: xfce4-power-manager/trunk/src/xfpm-settings.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-settings.c	2008-10-21 10:39:26 UTC (rev 5732)
+++ xfce4-power-manager/trunk/src/xfpm-settings.c	2008-10-21 11:13:35 UTC (rev 5733)
@@ -721,6 +721,17 @@
         gtk_widget_set_sensitive(GTK_WIDGET(cpu_gov),FALSE);
         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cpu_gov),FALSE);
     }
+	
+	if ( govs & CPU_FREQ_CANNOT_BE_USED )
+	{
+		GtkWidget *label;
+        label = gtk_label_new(_("CPU frequency control cannot be used"));
+        gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
+        gtk_widget_show(label);
+        gtk_widget_set_sensitive(GTK_WIDGET(cpu_gov),FALSE);
+        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cpu_gov),FALSE);
+	}
+	
     else
     {
         GtkWidget *frame;




More information about the Goodies-commits mailing list