[gnome-flashback] monitor-manager: cache the last known value of "lid-is-closed"



commit 07bc5f88e887b63c9ad945ef9f6098e6fbf00221
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Tue Jul 16 21:33:33 2019 +0300

    monitor-manager: cache the last known value of "lid-is-closed"
    
    Based on mutter commit:
    https://gitlab.gnome.org/GNOME/mutter/commit/49b23c749044a855fb36

 backends/gf-monitor-manager-private.h |  1 +
 backends/gf-monitor-manager.c         | 14 ++++++++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/backends/gf-monitor-manager-private.h b/backends/gf-monitor-manager-private.h
index 9a92d79..3928dbf 100644
--- a/backends/gf-monitor-manager-private.h
+++ b/backends/gf-monitor-manager-private.h
@@ -70,6 +70,7 @@ struct _GfMonitorManager
 
   GnomePnpIds                 *pnp_ids;
   UpClient                    *up_client;
+  gboolean                     lid_is_closed;
 
   GfMonitorSwitchConfigType    current_switch_config;
 };
diff --git a/backends/gf-monitor-manager.c b/backends/gf-monitor-manager.c
index 6462f6e..5ec40be 100644
--- a/backends/gf-monitor-manager.c
+++ b/backends/gf-monitor-manager.c
@@ -1989,7 +1989,7 @@ gf_monitor_manager_real_is_lid_closed (GfMonitorManager *manager)
   if (!manager->up_client)
     return FALSE;
 
-  return up_client_get_lid_is_closed (manager->up_client);
+  return manager->lid_is_closed;
 }
 
 static void
@@ -1997,8 +1997,16 @@ lid_is_closed_changed (UpClient   *client,
                        GParamSpec *pspec,
                        gpointer    user_data)
 {
-  GfMonitorManager *manager = user_data;
+  GfMonitorManager *manager;
+  gboolean lid_is_closed;
+
+  manager = user_data;
+  lid_is_closed = up_client_get_lid_is_closed (manager->up_client);
 
+  if (lid_is_closed == manager->lid_is_closed)
+    return;
+
+  manager->lid_is_closed = lid_is_closed;
   gf_monitor_manager_ensure_configured (manager);
 }
 
@@ -2024,6 +2032,8 @@ gf_monitor_manager_constructed (GObject *object)
         {
           g_signal_connect_object (manager->up_client, "notify::lid-is-closed",
                                    G_CALLBACK (lid_is_closed_changed), manager, 0);
+
+          manager->lid_is_closed = up_client_get_lid_is_closed (manager->up_client);
         }
     }
 


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