[gnome-flashback] monitor-manager: cache the last known value of "lid-is-closed"
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-flashback] monitor-manager: cache the last known value of "lid-is-closed"
- Date: Thu, 18 Jul 2019 17:29:55 +0000 (UTC)
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]