[gdm/wip/wayland-at-login-screen: 67/68] manager: keep track of implicitly created displays



commit 168603f4168372a239e62b286a7ff39face94158
Author: Ray Strode <rstrode redhat com>
Date:   Tue Feb 17 17:06:29 2015 -0500

    manager: keep track of implicitly created displays
    
    If a display is created implicitly using gdm-x-session
    or gdm-wayland-session then we need to add it to the display
    store so we can track it.

 daemon/gdm-manager.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)
---
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c
index 6c030b8..3e808d3 100644
--- a/daemon/gdm-manager.c
+++ b/daemon/gdm-manager.c
@@ -45,6 +45,7 @@
 #include "gdm-manager-glue.h"
 #include "gdm-display-store.h"
 #include "gdm-display-factory.h"
+#include "gdm-local-display.h"
 #include "gdm-local-display-factory.h"
 #include "gdm-session.h"
 #include "gdm-session-record.h"
@@ -1636,6 +1637,7 @@ on_start_user_session (StartUserSessionOperation *operation)
                 g_object_set (G_OBJECT (display), "is-for-greeter", FALSE, NULL);
         } else {
                 uid_t allowed_uid;
+                GdmDisplay *user_display;
 
                 g_debug ("GdmManager: session has its display server, reusing our server for another login 
screen");
 
@@ -1646,6 +1648,13 @@ on_start_user_session (StartUserSessionOperation *operation)
                 g_object_set_data (G_OBJECT (display), "gdm-embryonic-user-session", NULL);
                 g_object_set_data (G_OBJECT (operation->session), "gdm-display", NULL);
                 create_embryonic_user_session_for_display (operation->manager, display, allowed_uid);
+
+                /* Give the user session a new display object for bookkeeping purposes */
+                user_display = gdm_local_display_new ();
+                g_object_set (G_OBJECT (user_display), "is-for-greeter", FALSE, NULL);
+                gdm_display_store_add (operation->manager->priv->display_store,
+                                       user_display);
+                g_object_set_data (G_OBJECT (operation->session), "gdm-display", user_display);
         }
 
         start_user_session (operation->manager, operation);


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