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

Ali Abdallah aliov at xfce.org
Tue Oct 21 12:39:26 CEST 2008


Author: aliov
Date: 2008-10-21 10:39:26 +0000 (Tue, 21 Oct 2008)
New Revision: 5732

Modified:
   xfce4-power-manager/trunk/src/xfpm-cpu.c
   xfce4-power-manager/trunk/src/xfpm-driver.c
   xfce4-power-manager/trunk/src/xfpm-hal.c
   xfce4-power-manager/trunk/src/xfpm-hal.h
Log:
Support for unpermitted cpu freq settings operation

Modified: xfce4-power-manager/trunk/src/xfpm-cpu.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-cpu.c	2008-10-21 09:23:37 UTC (rev 5731)
+++ xfce4-power-manager/trunk/src/xfpm-cpu.c	2008-10-21 10:39:26 UTC (rev 5732)
@@ -66,7 +66,7 @@
                                    GParamSpec *pspec);
 
 static void xfpm_cpu_load_config(XfpmCpu *cpu);
-                                   
+static void xfpm_cpu_check(XfpmCpu *cpu);                                   
 static void xfpm_cpu_set_governor(XfpmCpu *cpu,
                                   gboolean ac_adapter_present);
 
@@ -79,6 +79,8 @@
 struct XfpmCpuPrivate
 {
     XfpmHal *hal;
+	gboolean cpu_freq_can_be_used;
+	
 };
 
 enum
@@ -145,6 +147,7 @@
     priv->hal = xfpm_hal_new();
     
     xfpm_cpu_load_config(cpu);
+	xfpm_cpu_check(cpu);
     
     g_signal_connect(G_OBJECT(cpu),"notify",G_CALLBACK(xfpm_cpu_notify_cb),NULL);
     
@@ -275,6 +278,16 @@
     return NULL;
 }
 
+static void xfpm_cpu_check(XfpmCpu *cpu)
+{
+	XfpmCpuPrivate *priv;
+	priv = XFPM_CPU_GET_PRIVATE(cpu);
+	
+	priv->cpu_freq_can_be_used =
+	xfpm_hal_cpu_freq_interface_can_be_used(priv->hal);
+	
+}
+
 static void
 xfpm_cpu_set_governor(XfpmCpu *cpu,gboolean ac_adapter_present)
 {
@@ -327,10 +340,19 @@
                     gpointer data)
 {                                
     XfpmCpu *cpu = XFPM_CPU(object);
+	XfpmCpuPrivate *priv;
+	priv = XFPM_CPU_GET_PRIVATE(cpu);
+	
+	if ( !priv->cpu_freq_can_be_used )
+	{
+		XFPM_DEBGU("Xfpm cannot use cpu freq control\n");
+		return
+	}
     
     if ( !cpu->cpu_freq_enabled )
     {
         XFPM_DEBUG("Cpu freq control is disabled\n");
+		return;
     }
     
     if ( !strcmp(arg1->name,"on-ac-adapter") ||

Modified: xfce4-power-manager/trunk/src/xfpm-driver.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-driver.c	2008-10-21 09:23:37 UTC (rev 5731)
+++ xfce4-power-manager/trunk/src/xfpm-driver.c	2008-10-21 10:39:26 UTC (rev 5732)
@@ -885,7 +885,7 @@
 {
      const gchar *error =
                  _("Unable to use power management service, functionalities like hibernate and shutdown will not work "\
-                  "Possible reasons: you don't have permission or  "\
+                  "Possible reasons: you don't have enough permission or a"\
                   "broken connection with the hardware abstract layer or the message bus daemon is not running");
      NotifyNotification *n = xfpm_notify_new(_("Xfce power manager"),
                                              error,

Modified: xfce4-power-manager/trunk/src/xfpm-hal.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-hal.c	2008-10-21 09:23:37 UTC (rev 5731)
+++ xfce4-power-manager/trunk/src/xfpm-hal.c	2008-10-21 10:39:26 UTC (rev 5732)
@@ -292,8 +292,8 @@
     reply = dbus_connection_send_with_reply_and_block(priv->connection,message,-1,&error);
     dbus_message_unref(message);
     
-    if ( reply ) dbus_message_unref(reply);
-    
+	if ( reply ) dbus_message_unref(reply);
+	
     if ( dbus_error_is_set(&error) )
     {
         /* This is the only one place in the program we will 
@@ -307,6 +307,46 @@
     return FALSE;
 }
 
+gboolean xfpm_hal_cpu_freq_interface_can_be_used(XfpmHal *hal)
+{
+	g_return_val_if_fail(XFPM_IS_HAL(hal),FALSE);
+    XfpmHalPrivate *priv;
+    priv = XFPM_HAL_GET_PRIVATE(hal);
+    
+    g_return_val_if_fail(priv->connected == TRUE,FALSE);
+    
+    DBusMessage *message;
+    DBusMessage *reply;
+    DBusError error;
+    
+    message = dbus_message_new_method_call(HAL_DBUS_SERVICE,
+                                        HAL_ROOT_COMPUTER,
+                                        HAL_DBUS_INTERFACE_CPU,
+                                        "CpuFreqJustToCheck");
+
+    if (!message)
+    {
+        return FALSE;
+    }
+                                           
+    dbus_error_init(&error);                                       
+                                           
+    reply = dbus_connection_send_with_reply_and_block(priv->connection,message,-1,&error);
+    dbus_message_unref(message);
+    
+    if ( reply ) dbus_message_unref(reply);
+    
+    if ( dbus_error_is_set(&error) )
+    {
+        if (!strcmp(error.name,"org.freedesktop.DBus.Error.UnknownMethod"))
+        {
+            dbus_error_free(&error);
+            return TRUE;
+        }
+    }
+    return FALSE;
+}
+
 gboolean xfpm_hal_connect_to_signals(XfpmHal *hal,
                                     gboolean device_removed,
                                     gboolean device_added,

Modified: xfce4-power-manager/trunk/src/xfpm-hal.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-hal.h	2008-10-21 09:23:37 UTC (rev 5731)
+++ xfce4-power-manager/trunk/src/xfpm-hal.h	2008-10-21 10:39:26 UTC (rev 5732)
@@ -80,6 +80,7 @@
 XfpmHal             *xfpm_hal_new                          (void);
 gboolean             xfpm_hal_is_connected                 (XfpmHal *hal);
 gboolean             xfpm_hal_power_management_can_be_used (XfpmHal *hal);
+gboolean 			 xfpm_hal_cpu_freq_interface_can_be_used(XfpmHal *hal);
 gboolean             xfpm_hal_connect_to_signals           (XfpmHal *hal,
                                                             gboolean device_removed,
                                                             gboolean device_added,




More information about the Goodies-commits mailing list