[mutter] monitor-manager/native: Emit privacy-screen-changed signal later



commit 2a624dbd1e398d9dceaa95b9591d103ce41ddaad
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Thu Feb 10 14:53:38 2022 +0100

    monitor-manager/native: Emit privacy-screen-changed signal later
    
    Make sure the monitor and output state is up to date when we emit the
    privacy-monitor-changed signal, otherwise the signal emission code will
    try to look up out of date state.
    
    Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2119
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2280>

 src/backends/native/meta-monitor-manager-native.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/src/backends/native/meta-monitor-manager-native.c 
b/src/backends/native/meta-monitor-manager-native.c
index 6f161e1e4c..92d6877087 100644
--- a/src/backends/native/meta-monitor-manager-native.c
+++ b/src/backends/native/meta-monitor-manager-native.c
@@ -507,6 +507,8 @@ on_kms_resources_changed (MetaKms              *kms,
                           MetaKmsUpdateChanges  changes,
                           MetaMonitorManager   *manager)
 {
+  gboolean needs_emit_privacy_screen_change = FALSE;
+
   g_assert (changes != META_KMS_UPDATE_CHANGE_NONE);
 
   if (changes == META_KMS_UPDATE_CHANGE_GAMMA)
@@ -527,13 +529,17 @@ on_kms_resources_changed (MetaKms              *kms,
             META_PRIVACY_SCREEN_CHANGE_STATE_PENDING_HOTKEY;
         }
 
-      meta_monitor_manager_maybe_emit_privacy_screen_change (manager);
+      needs_emit_privacy_screen_change = TRUE;
 
       if (changes == META_KMS_UPDATE_CHANGE_PRIVACY_SCREEN)
-        return;
+        goto out;
     }
 
   handle_hotplug_event (manager);
+
+out:
+  if (needs_emit_privacy_screen_change)
+    meta_monitor_manager_maybe_emit_privacy_screen_change (manager);
 }
 
 static void


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