[gnome-settings-daemon] power: Create an idletime watcher to track X idle status
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] power: Create an idletime watcher to track X idle status
- Date: Wed, 13 Jul 2011 10:44:02 +0000 (UTC)
commit 95807b3467dd96997d2f1c5c1ca403774ad9b1ee
Author: Richard Hughes <richard hughsie com>
Date: Wed Jul 6 13:57:50 2011 +0100
power: Create an idletime watcher to track X idle status
plugins/power/Makefile.am | 2 ++
plugins/power/gsd-power-manager.c | 33 +++++++++++++++++++++++++++++++++
2 files changed, 35 insertions(+), 0 deletions(-)
---
diff --git a/plugins/power/Makefile.am b/plugins/power/Makefile.am
index f71dca2..97968dd 100644
--- a/plugins/power/Makefile.am
+++ b/plugins/power/Makefile.am
@@ -8,6 +8,8 @@ libpower_la_SOURCES = \
gpm-common.h \
gpm-phone.c \
gpm-phone.h \
+ gpm-idletime.c \
+ gpm-idletime.h \
gsd-power-manager.c \
gsd-power-manager.h \
gsd-power-plugin.c \
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index b1d758f..6856c71 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -35,6 +35,7 @@
#include "gpm-common.h"
#include "gpm-phone.h"
+#include "gpm-idletime.h"
#include "gnome-settings-profile.h"
#include "gsd-enums.h"
#include "gsd-power-manager.h"
@@ -73,6 +74,8 @@
#define GSD_POWER_MANAGER_CRITICAL_ALERT_TIMEOUT 5 /* seconds */
#define GSD_POWER_MANAGER_RECALL_DELAY 30 /* seconds */
+#define GSD_POWER_IDLETIME_ID 1 /* counter id */
+
static const gchar introspection_xml[] =
"<node>"
"<interface name='org.gnome.SettingsDaemon.Power'>"
@@ -159,6 +162,8 @@ struct GsdPowerManagerPrivate
GDBusProxy *screensaver_proxy;
GDBusProxy *session_proxy;
GDBusProxy *session_presence_proxy;
+ GpmIdletime *idletime;
+ gboolean x_idle;
};
enum {
@@ -2312,6 +2317,23 @@ upower_notify_resume_cb (UpClient *client,
}
static void
+idle_idletime_alarm_expired_cb (GpmIdletime *idletime,
+ guint alarm_id,
+ GsdPowerManager *manager)
+{
+ g_debug ("idletime alarm: %i", alarm_id);
+ manager->priv->x_idle = TRUE;
+}
+
+static void
+idle_idletime_reset_cb (GpmIdletime *idletime,
+ GsdPowerManager *manager)
+{
+ g_debug ("idletime reset");
+ manager->priv->x_idle = FALSE;
+}
+
+static void
gsd_power_manager_init (GsdPowerManager *manager)
{
manager->priv = GSD_POWER_MANAGER_GET_PRIVATE (manager);
@@ -2418,6 +2440,13 @@ gsd_power_manager_init (GsdPowerManager *manager)
/* we can disable this if the time remaining is inaccurate or just plain wrong */
manager->priv->use_time_primary = g_settings_get_boolean (manager->priv->settings,
"use-time-for-policy");
+
+ /* create IDLETIME watcher */
+ manager->priv->idletime = gpm_idletime_new ();
+ g_signal_connect (manager->priv->idletime, "reset",
+ G_CALLBACK (idle_idletime_reset_cb), manager);
+ g_signal_connect (manager->priv->idletime, "alarm-expired",
+ G_CALLBACK (idle_idletime_alarm_expired_cb), manager);
}
static void
@@ -2454,6 +2483,10 @@ gsd_power_manager_finalize (GObject *object)
if (manager->priv->critical_alert_timeout_id > 0)
g_source_remove (manager->priv->critical_alert_timeout_id);
+ gpm_idletime_alarm_remove (manager->priv->idletime,
+ GSD_POWER_IDLETIME_ID);
+ g_object_unref (manager->priv->idletime);
+
G_OBJECT_CLASS (gsd_power_manager_parent_class)->finalize (object);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]