[gnome-session] [gsm] Properly handle the case where the idle monitor doesn't exist



commit 397cca3a9e5a197860a819a4648bf5bd56969afd
Author: Vincent Untz <vuntz gnome org>
Date:   Mon Jul 27 18:27:59 2009 +0200

    [gsm] Properly handle the case where the idle monitor doesn't exist
    
    The idle monitor can fail to be created in some cases, depending on X.
    This was ignored before.

 gnome-session/gsm-presence.c |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)
---
diff --git a/gnome-session/gsm-presence.c b/gnome-session/gsm-presence.c
index 809d358..12e37b8 100644
--- a/gnome-session/gsm-presence.c
+++ b/gnome-session/gsm-presence.c
@@ -155,6 +155,10 @@ on_idle_timeout (GSIdleMonitor *monitor,
 static void
 reset_idle_watch (GsmPresence  *presence)
 {
+        if (presence->priv->idle_monitor != NULL) {
+                return;
+        }
+
         if (presence->priv->idle_watch_id > 0) {
                 g_debug ("GsmPresence: removing idle watch");
                 gs_idle_monitor_remove_watch (presence->priv->idle_monitor,
@@ -449,10 +453,18 @@ gsm_presence_finalize (GObject *object)
         if (presence->priv->idle_watch_id > 0) {
                 gs_idle_monitor_remove_watch (presence->priv->idle_monitor,
                                               presence->priv->idle_watch_id);
+                presence->priv->idle_watch_id = 0;
         }
 
-        g_free (presence->priv->status_text);
-        g_object_unref (presence->priv->idle_monitor);
+        if (presence->priv->status_text != NULL) {
+                g_free (presence->priv->status_text);
+                presence->priv->status_text = NULL;
+        }
+
+        if (presence->priv->idle_monitor != NULL) {
+                g_object_unref (presence->priv->idle_monitor);
+                presence->priv->idle_monitor = NULL;
+        }
 
         G_OBJECT_CLASS (gsm_presence_parent_class)->finalize (object);
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]