[gnome-shell/wip/gdm-register-session: 15/15] main, LoginManager: Call GDM's RegisterSession()



commit 0e37cd2ec92c5fbbc0870272e5e00fc07a705eba
Author: Iain Lane <iainl gnome org>
Date:   Thu May 2 10:49:12 2019 +0100

    main, LoginManager: Call GDM's RegisterSession()
    
    So that it can know if we started up properly and use that to (e.g.)
    kill its greeter.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/570

 js/misc/loginManager.js | 22 ++++++++++++++++++++++
 js/ui/main.js           |  2 ++
 2 files changed, 24 insertions(+)
---
diff --git a/js/misc/loginManager.js b/js/misc/loginManager.js
index f615b4f999..4f4cc836fb 100644
--- a/js/misc/loginManager.js
+++ b/js/misc/loginManager.js
@@ -48,6 +48,28 @@ function canLock() {
     }
 }
 
+
+function registerSessionWithGDM() {
+    log("Registering session with GDM");
+    Gio.DBus.system.call('org.gnome.DisplayManager',
+                         '/org/gnome/DisplayManager/Manager',
+                         'org.gnome.DisplayManager.Manager',
+                         'RegisterSession',
+                         GLib.Variant.new('(a{sv})', [{}]), null,
+                         Gio.DBusCallFlags.NONE, -1, null,
+        (source, result) => {
+            try {
+                source.call_finish(result);
+            } catch (e) {
+                if (!e.matches(Gio.DBusError, Gio.DBusError.UNKNOWN_METHOD))
+                    log(`Error registering session with GDM: ${e.message}`);
+                else
+                    log("Not calling RegisterSession(): method not exported, GDM too old?");
+            }
+        }
+    );
+}
+
 let _loginManager = null;
 
 /**
diff --git a/js/ui/main.js b/js/ui/main.js
index 5f789e996d..70c550cc52 100644
--- a/js/ui/main.js
+++ b/js/ui/main.js
@@ -250,6 +250,8 @@ function _initializeUI() {
             });
         }
 
+        LoginManager.registerSessionWithGDM();
+
         let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
         if (perfModuleName) {
             let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT");


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