[Xfce4-commits] [xfce/xfce4-power-manager] 01/05: Let xfpm control X11's screensaver extension FIXME: dbus_init in power.c resets the configured values if xfpm restarts

noreply at xfce.org noreply at xfce.org
Thu Jun 26 18:50:17 CEST 2014


This is an automated email from the git hooks/post-receive script.

eric pushed a commit to branch master
in repository xfce/xfce4-power-manager.

commit 7dd51ceaa91ecba72154dd15ecca6ddd7f33b120
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date:   Mon Jun 23 15:37:51 2014 +0200

    Let xfpm control X11's screensaver extension FIXME: dbus_init in power.c resets the configured values if xfpm restarts
---
 data/interfaces/xfpm-settings.ui |  108 +++++++++++++++++++++++++++++---------
 settings/xfpm-settings.c         |   15 ++++++
 src/xfpm-config.h                |    3 ++
 src/xfpm-power.c                 |   69 +++++++++++++++++++++++-
 src/xfpm-xfconf.c                |    6 ++-
 5 files changed, 174 insertions(+), 27 deletions(-)

diff --git a/data/interfaces/xfpm-settings.ui b/data/interfaces/xfpm-settings.ui
index d824ac6..df08f8b 100644
--- a/data/interfaces/xfpm-settings.ui
+++ b/data/interfaces/xfpm-settings.ui
@@ -792,11 +792,11 @@
                                 <property name="row_spacing">3</property>
                                 <property name="column_spacing">12</property>
                                 <child>
-                                  <object class="GtkLabel" id="label14">
+                                  <object class="GtkLabel" id="blank-display-label">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
                                     <property name="xalign">0</property>
-                                    <property name="label" translatable="yes">Put display to sleep after</property>
+                                    <property name="label" translatable="yes">Blank display after</property>
                                   </object>
                                   <packing>
                                     <property name="top_attach">1</property>
@@ -806,11 +806,11 @@
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkLabel" id="label15">
+                                  <object class="GtkLabel" id="sleep-display-label">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
                                     <property name="xalign">0</property>
-                                    <property name="label" translatable="yes">Switch off display after</property>
+                                    <property name="label" translatable="yes">Put display to sleep after</property>
                                   </object>
                                   <packing>
                                     <property name="top_attach">2</property>
@@ -820,11 +820,11 @@
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkLabel" id="label16">
+                                  <object class="GtkLabel" id="switch-off-display-label">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
                                     <property name="xalign">0</property>
-                                    <property name="label" translatable="yes">Reduce brightness on inactivity</property>
+                                    <property name="label" translatable="yes">Switch off display after</property>
                                   </object>
                                   <packing>
                                     <property name="top_attach">3</property>
@@ -834,11 +834,11 @@
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkLabel" id="label17">
+                                  <object class="GtkLabel" id="reduce-brightness-label">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
                                     <property name="xalign">0</property>
-                                    <property name="label" translatable="yes">Reduce brightness to</property>
+                                    <property name="label" translatable="yes">Reduce brightness on inactivity</property>
                                   </object>
                                   <packing>
                                     <property name="top_attach">4</property>
@@ -848,6 +848,20 @@
                                   </packing>
                                 </child>
                                 <child>
+                                  <object class="GtkLabel" id="reduce-brightness-to-label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Reduce brightness to</property>
+                                  </object>
+                                  <packing>
+                                    <property name="top_attach">5</property>
+                                    <property name="bottom_attach">6</property>
+                                    <property name="x_options">GTK_FILL</property>
+                                    <property name="y_options">GTK_FILL</property>
+                                  </packing>
+                                </child>
+                                <child>
                                   <object class="GtkLabel" id="display_onbattery">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
@@ -876,6 +890,42 @@
                                   </packing>
                                 </child>
                                 <child>
+                                  <object class="GtkHScale" id="blank-on-battery">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="update_policy">discontinuous</property>
+                                    <property name="adjustment">blank-on-battery-adjustment</property>
+                                    <property name="digits">0</property>
+                                    <property name="value_pos">bottom</property>
+                                    <signal name="format_value" handler="format_dpms_value_cb"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="right_attach">2</property>
+                                    <property name="top_attach">1</property>
+                                    <property name="bottom_attach">2</property>
+                                    <property name="y_options">GTK_FILL</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHScale" id="blank-on-ac">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="update_policy">discontinuous</property>
+                                    <property name="adjustment">blank-on-ac-adjustment</property>
+                                    <property name="digits">0</property>
+                                    <property name="value_pos">bottom</property>
+                                    <signal name="format_value" handler="format_dpms_value_cb"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">2</property>
+                                    <property name="right_attach">3</property>
+                                    <property name="top_attach">1</property>
+                                    <property name="bottom_attach">2</property>
+                                    <property name="y_options">GTK_FILL</property>
+                                  </packing>
+                                </child>
+                                <child>
                                   <object class="GtkHScale" id="sleep-dpms-on-battery">
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
@@ -889,8 +939,8 @@
                                   <packing>
                                     <property name="left_attach">1</property>
                                     <property name="right_attach">2</property>
-                                    <property name="top_attach">1</property>
-                                    <property name="bottom_attach">2</property>
+                                    <property name="top_attach">2</property>
+                                    <property name="bottom_attach">3</property>
                                     <property name="y_options">GTK_FILL</property>
                                   </packing>
                                 </child>
@@ -908,8 +958,8 @@
                                   <packing>
                                     <property name="left_attach">2</property>
                                     <property name="right_attach">3</property>
-                                    <property name="top_attach">1</property>
-                                    <property name="bottom_attach">2</property>
+                                    <property name="top_attach">2</property>
+                                    <property name="bottom_attach">3</property>
                                     <property name="y_options">GTK_FILL</property>
                                   </packing>
                                 </child>
@@ -927,8 +977,8 @@
                                   <packing>
                                     <property name="left_attach">1</property>
                                     <property name="right_attach">2</property>
-                                    <property name="top_attach">2</property>
-                                    <property name="bottom_attach">3</property>
+                                    <property name="top_attach">3</property>
+                                    <property name="bottom_attach">4</property>
                                     <property name="y_options">GTK_FILL</property>
                                   </packing>
                                 </child>
@@ -946,8 +996,8 @@
                                   <packing>
                                     <property name="left_attach">2</property>
                                     <property name="right_attach">3</property>
-                                    <property name="top_attach">2</property>
-                                    <property name="bottom_attach">3</property>
+                                    <property name="top_attach">3</property>
+                                    <property name="bottom_attach">4</property>
                                     <property name="y_options">GTK_FILL</property>
                                   </packing>
                                 </child>
@@ -965,8 +1015,8 @@
                                   <packing>
                                     <property name="left_attach">1</property>
                                     <property name="right_attach">2</property>
-                                    <property name="top_attach">3</property>
-                                    <property name="bottom_attach">4</property>
+                                    <property name="top_attach">4</property>
+                                    <property name="bottom_attach">5</property>
                                     <property name="y_options">GTK_FILL</property>
                                   </packing>
                                 </child>
@@ -984,8 +1034,8 @@
                                   <packing>
                                     <property name="left_attach">2</property>
                                     <property name="right_attach">3</property>
-                                    <property name="top_attach">3</property>
-                                    <property name="bottom_attach">4</property>
+                                    <property name="top_attach">4</property>
+                                    <property name="bottom_attach">5</property>
                                     <property name="y_options">GTK_FILL</property>
                                   </packing>
                                 </child>
@@ -1003,8 +1053,8 @@
                                   <packing>
                                     <property name="left_attach">1</property>
                                     <property name="right_attach">2</property>
-                                    <property name="top_attach">4</property>
-                                    <property name="bottom_attach">5</property>
+                                    <property name="top_attach">5</property>
+                                    <property name="bottom_attach">6</property>
                                     <property name="y_options">GTK_FILL</property>
                                   </packing>
                                 </child>
@@ -1022,8 +1072,8 @@
                                   <packing>
                                     <property name="left_attach">2</property>
                                     <property name="right_attach">3</property>
-                                    <property name="top_attach">4</property>
-                                    <property name="bottom_attach">5</property>
+                                    <property name="top_attach">5</property>
+                                    <property name="bottom_attach">6</property>
                                     <property name="y_options">GTK_FILL</property>
                                   </packing>
                                 </child>
@@ -1179,6 +1229,16 @@
     <property name="upper">20</property>
     <property name="step_increment">1</property>
   </object>
+  <object class="GtkAdjustment" id="blank-on-battery-adjustment">
+    <property name="value">10</property>
+    <property name="upper">60</property>
+    <property name="step_increment">1</property>
+  </object>
+    <object class="GtkAdjustment" id="blank-on-ac-adjustment">
+    <property name="value">10</property>
+    <property name="upper">60</property>
+    <property name="step_increment">1</property>
+  </object>
   <object class="GtkSizeGroup" id="sg_critical_power">
     <widgets>
       <widget name="critical-level-label"/>
diff --git a/settings/xfpm-settings.c b/settings/xfpm-settings.c
index a7cb56c..7e75d25 100644
--- a/settings/xfpm-settings.c
+++ b/settings/xfpm-settings.c
@@ -39,6 +39,7 @@
 #include "xfpm-icons.h"
 #include "xfpm-debug.h"
 #include "xfpm-power-common.h"
+#include "xfpm-power.h"
 
 #include "interfaces/xfpm-settings_ui.h"
 
@@ -2017,10 +2018,12 @@ xfpm_settings_dialog_new (XfconfChannel *channel, gboolean auth_suspend,
     GtkWidget *plugged_box;
     GtkWidget *viewport;
     GtkWidget *hbox;
+    GtkWidget *on_battery_blank, *on_ac_blank;
     GtkListStore *list_store;
     GtkTreeViewColumn *col;
     GtkCellRenderer *renderer;
     GError *error = NULL;
+    guint val;
 
     XFPM_DEBUG ("auth_hibernate=%s auth_suspend=%s can_shutdown=%s can_suspend=%s can_hibernate=%s " \
                 "has_battery=%s has_lcd_brightness=%s has_lid=%s has_sleep_button=%s " \
@@ -2047,6 +2050,18 @@ xfpm_settings_dialog_new (XfconfChannel *channel, gboolean auth_suspend,
     on_ac_dpms_sleep = GTK_WIDGET (gtk_builder_get_object (xml, "sleep-dpms-on-ac"));
     on_ac_dpms_off = GTK_WIDGET (gtk_builder_get_object (xml, "off-dpms-on-ac"));
 
+    on_battery_blank = GTK_WIDGET (gtk_builder_get_object (xml, "blank-on-battery"));
+    val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX ON_BATTERY_BLANK, 10);
+    gtk_range_set_value (GTK_RANGE (on_battery_blank), val);
+    xfconf_g_property_bind (channel, PROPERTIES_PREFIX ON_BATTERY_BLANK,
+                            G_TYPE_INT, gtk_range_get_adjustment (GTK_RANGE (on_battery_blank)),
+                            "value");
+
+    on_ac_blank = GTK_WIDGET (gtk_builder_get_object (xml, "blank-on-ac"));
+    xfconf_g_property_bind (channel, PROPERTIES_PREFIX ON_AC_BLANK,
+                            G_TYPE_INT, gtk_range_get_adjustment (GTK_RANGE (on_ac_blank)),
+                            "value");
+
     dialog = GTK_WIDGET (gtk_builder_get_object (xml, "xfpm-settings-dialog"));
     nt = GTK_WIDGET (gtk_builder_get_object (xml, "main-notebook"));
 
diff --git a/src/xfpm-config.h b/src/xfpm-config.h
index c6ffa26..a931c17 100644
--- a/src/xfpm-config.h
+++ b/src/xfpm-config.h
@@ -42,6 +42,9 @@ G_BEGIN_DECLS
 #define     	CPU_FREQ_CONTROL             	"enable-cpu-freq-control"
 #define     	LOCK_SCREEN_ON_SLEEP         	"lock-screen-suspend-hibernate"
 
+#define         ON_BATTERY_BLANK                "blank-on-battery"
+#define         ON_AC_BLANK                     "blank-on-ac"
+
 #define 	DPMS_ENABLED_CFG             	"dpms-enabled" 
 #define 	ON_AC_DPMS_SLEEP 	     	"dpms-on-ac-sleep"
 #define 	ON_AC_DPMS_OFF	     	     	"dpms-on-ac-off"
diff --git a/src/xfpm-power.c b/src/xfpm-power.c
index 515ee6e..7123c7e 100644
--- a/src/xfpm-power.c
+++ b/src/xfpm-power.c
@@ -78,6 +78,8 @@ static void xfpm_power_set_property (GObject *object,
 static void xfpm_power_change_presentation_mode (XfpmPower *power,
 						 gboolean presentation_mode);
 
+static void xfpm_update_blank_time (XfpmPower *power);
+
 static void xfpm_power_dbus_class_init (XfpmPowerClass * klass);
 static void xfpm_power_dbus_init (XfpmPower *power);
 
@@ -109,6 +111,8 @@ struct XfpmPowerPrivate
     XfpmDpms        *dpms;
 #endif
     gboolean         presentation_mode;
+    gint             on_ac_blank;
+    gint             on_battery_blank;
     EggIdletime     *idletime;
 
     gboolean	     inhibited;
@@ -149,6 +153,8 @@ enum
     PROP_CAN_HIBERNATE,
     PROP_HAS_LID,
     PROP_PRESENTATION_MODE,
+    PROP_ON_AC_BLANK,
+    PROP_ON_BATTERY_BLANK,
     N_PROPERTIES
 };
 
@@ -211,6 +217,7 @@ xfpm_power_check_power (XfpmPower *power, gboolean on_battery)
 		g_object_set (G_OBJECT (g_list_nth_data (list, i)),
 			      "ac-online", !on_battery,
 			      NULL);
+        xfpm_update_blank_time (power);
 	    }
 	}
 }
@@ -1075,6 +1082,24 @@ xfpm_power_class_init (XfpmPowerClass *klass)
                                                           NULL, NULL,
                                                           FALSE,
                                                           XFPM_PARAM_FLAGS));
+
+    g_object_class_install_property (object_class,
+                                     PROP_ON_AC_BLANK,
+                                     g_param_spec_int  (ON_AC_BLANK,
+                                                        NULL, NULL,
+                                                        0,
+                                                        G_MAXINT16,
+                                                        10,
+                                                        XFPM_PARAM_FLAGS));
+
+    g_object_class_install_property (object_class,
+                                     PROP_ON_BATTERY_BLANK,
+                                     g_param_spec_int  (ON_BATTERY_BLANK,
+                                                        NULL, NULL,
+                                                        0,
+                                                        G_MAXINT16,
+                                                        10,
+                                                        XFPM_PARAM_FLAGS));
 #undef XFPM_PARAM_FLAGS
 
     g_type_class_add_private (klass, sizeof (XfpmPowerPrivate));
@@ -1106,6 +1131,8 @@ xfpm_power_init (XfpmPower *power)
     power->priv->dpms                 = xfpm_dpms_new ();
 #endif
     power->priv->presentation_mode    = FALSE;
+    power->priv->on_ac_blank          = 15;
+    power->priv->on_battery_blank     = 10;
     power->priv->suspend = xfpm_suspend_get ();
 
     power->priv->inhibit = xfpm_inhibit_new ();
@@ -1152,9 +1179,17 @@ xfpm_power_init (XfpmPower *power)
 #endif
 
     xfconf_g_property_bind(xfpm_xfconf_get_channel(power->priv->conf),
-			   PROPERTIES_PREFIX PRESENTATION_MODE, G_TYPE_BOOLEAN,
+                           PROPERTIES_PREFIX PRESENTATION_MODE, G_TYPE_BOOLEAN,
                            G_OBJECT(power), PRESENTATION_MODE);
 
+    xfconf_g_property_bind (xfpm_xfconf_get_channel(power->priv->conf),
+                            PROPERTIES_PREFIX ON_BATTERY_BLANK, G_TYPE_INT,
+                            G_OBJECT (power), ON_BATTERY_BLANK);
+
+    xfconf_g_property_bind (xfpm_xfconf_get_channel(power->priv->conf),
+                            PROPERTIES_PREFIX ON_AC_BLANK, G_TYPE_INT,
+                            G_OBJECT (power), ON_AC_BLANK);
+
 out:
     xfpm_power_dbus_init (power);
 
@@ -1195,6 +1230,12 @@ static void xfpm_power_get_property (GObject *object,
 	case PROP_PRESENTATION_MODE:
 	    g_value_set_boolean (value, power->priv->presentation_mode);
 	    break;
+    case PROP_ON_AC_BLANK:
+      g_value_set_int (value, power->priv->on_ac_blank);
+      break;
+    case PROP_ON_BATTERY_BLANK:
+      g_value_set_int (value, power->priv->on_battery_blank);
+      break;
         default:
             G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
             break;
@@ -1207,12 +1248,23 @@ static void xfpm_power_set_property (GObject *object,
 				     GParamSpec *pspec)
 {
     XfpmPower *power = XFPM_POWER (object);
+    gint on_ac_blank, on_battery_blank;
 
     switch (prop_id)
     {
 	case PROP_PRESENTATION_MODE:
 	    xfpm_power_change_presentation_mode (power, g_value_get_boolean (value));
 	    break;
+    case PROP_ON_AC_BLANK:
+          on_ac_blank = g_value_get_int (value);
+          power->priv->on_ac_blank = on_ac_blank;
+          xfpm_update_blank_time (power);
+          break;
+      case PROP_ON_BATTERY_BLANK:
+          on_battery_blank = g_value_get_int (value);
+          power->priv->on_battery_blank = on_battery_blank;
+          xfpm_update_blank_time (power);
+          break;
         default:
             G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
             break;
@@ -1308,6 +1360,21 @@ gboolean xfpm_power_has_battery (XfpmPower *power)
 }
 
 static void
+xfpm_update_blank_time (XfpmPower *power)
+{
+    Display* display = gdk_x11_display_get_xdisplay(gdk_display_get_default ());
+    guint screensaver_timeout;
+
+    if (power->priv->on_battery)
+        screensaver_timeout = power->priv->on_battery_blank;
+    else
+        screensaver_timeout = power->priv->on_ac_blank;
+    XFPM_DEBUG ("Timeout: %d", screensaver_timeout);
+
+    XSetScreenSaver(display, screensaver_timeout * 60, 0, DefaultBlanking, DefaultExposures);
+}
+
+static void
 xfpm_power_change_presentation_mode (XfpmPower *power, gboolean presentation_mode)
 {
 #ifdef HAVE_DPMS
diff --git a/src/xfpm-xfconf.c b/src/xfpm-xfconf.c
index d301538..848b6a0 100644
--- a/src/xfpm-xfconf.c
+++ b/src/xfpm-xfconf.c
@@ -191,8 +191,10 @@ xfpm_xfconf_property_changed_cb (XfconfChannel *channel, gchar *property,
     if ( !g_str_has_prefix (property, PROPERTIES_PREFIX) || strlen (property) <= strlen (PROPERTIES_PREFIX) )
 	return;
 
-    /* We handle presentation mode in xfpm-power directly */
-    if ( g_strcmp0 (property, "/xfce4-power-manager/presentation-mode") == 0 )
+    /* We handle presentation mode and blank-times in xfpm-power directly */
+    if ( g_strcmp0 (property, "/xfce4-power-manager/presentation-mode") == 0 ||
+         g_strcmp0 (property, "/xfce4-power-manager/blank-on-ac") == 0 ||
+         g_strcmp0 (property, "/xfce4-power-manager/blank-on-battery") == 0)
         return;
 
     XFPM_DEBUG ("Property modified: %s\n", property);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list