Blob Blame History Raw
From fd5f67d2e3459168f9cf83648d5f7f91eccca61e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Thu, 14 Jun 2018 17:43:27 +0200
Subject: [PATCH] idle-monitor: NULL check cached InhibitedActions property
 variant

We might not have a cached "InhibitedActions" property available for us,
so do as elsewhere in this file and NULL check before processing it.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/130
---
 src/backends/meta-idle-monitor.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/backends/meta-idle-monitor.c b/src/backends/meta-idle-monitor.c
index c6e814468..6ce024001 100644
--- a/src/backends/meta-idle-monitor.c
+++ b/src/backends/meta-idle-monitor.c
@@ -235,62 +235,65 @@ meta_idle_monitor_inhibited_actions_changed (GDBusProxy  *session,
     }
 }
 
 static void
 meta_idle_monitor_init (MetaIdleMonitor *monitor)
 {
   GVariant *v;
 
   monitor->watches = g_hash_table_new_full (NULL, NULL, NULL, free_watch);
   monitor->last_event_time = g_get_monotonic_time ();
 
   /* Monitor inhibitors */
   monitor->session_proxy =
     g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
                                    G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS,
                                    NULL,
                                    "org.gnome.SessionManager",
                                    "/org/gnome/SessionManager",
                                    "org.gnome.SessionManager",
                                    NULL,
                                    NULL);
   if (!monitor->session_proxy)
     return;
 
   g_signal_connect (monitor->session_proxy, "g-properties-changed",
                     G_CALLBACK (meta_idle_monitor_inhibited_actions_changed),
                     monitor);
 
   v = g_dbus_proxy_get_cached_property (monitor->session_proxy,
                                         "InhibitedActions");
-  monitor->inhibited = g_variant_get_uint32 (v) & GSM_INHIBITOR_FLAG_IDLE;
-  g_variant_unref (v);
+  if (v)
+    {
+      monitor->inhibited = g_variant_get_uint32 (v) & GSM_INHIBITOR_FLAG_IDLE;
+      g_variant_unref (v);
+    }
 }
 
 /**
  * meta_idle_monitor_get_core:
  *
  * Returns: (transfer none): the #MetaIdleMonitor that tracks the server-global
  * idletime for all devices. To track device-specific idletime,
  * use meta_idle_monitor_get_for_device().
  */
 MetaIdleMonitor *
 meta_idle_monitor_get_core (void)
 {
   MetaBackend *backend = meta_get_backend ();
   return meta_backend_get_idle_monitor (backend, 0);
 }
 
 /**
  * meta_idle_monitor_get_for_device:
  * @device_id: the device to get the idle time for.
  *
  * Returns: (transfer none): a new #MetaIdleMonitor that tracks the
  * device-specific idletime for @device. To track server-global idletime
  * for all devices, use meta_idle_monitor_get_core().
  */
 MetaIdleMonitor *
 meta_idle_monitor_get_for_device (int device_id)
 {
   MetaBackend *backend = meta_get_backend ();
   return meta_backend_get_idle_monitor (backend, device_id);
 }
-- 
2.28.0