summaryrefslogtreecommitdiff
path: root/daemon/gdm-manager.c
diff options
context:
space:
mode:
authorIain Lane <iainl@gnome.org>2019-05-07 15:57:43 +0100
committerIain Lane <iain@orangesquash.org.uk>2019-05-29 15:53:35 +0000
commit9496f639715b1b8e31b2b0a5bd37a8b6761249b3 (patch)
tree37880b604c52db26e96b83d63c32eb25b357c6ed /daemon/gdm-manager.c
parentc6c916b1fd3d03ce08d7f82a647ea8bb7e115bb9 (diff)
downloadgdm-9496f639715b1b8e31b2b0a5bd37a8b6761249b3.tar.gz
GdmManager, GdmDisplay: Add RegisterSession method
Window managers can use this to register with GDM when they've finished starting up and started displaying.
Diffstat (limited to 'daemon/gdm-manager.c')
-rw-r--r--daemon/gdm-manager.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c
index 980aa62d..23e3b85d 100644
--- a/daemon/gdm-manager.c
+++ b/daemon/gdm-manager.c
@@ -804,6 +804,35 @@ gdm_manager_handle_register_display (GdmDBusManager *manager,
}
static gboolean
+gdm_manager_handle_register_session (GdmDBusManager *manager,
+ GDBusMethodInvocation *invocation,
+ GVariant *details)
+{
+ GdmManager *self = GDM_MANAGER (manager);
+ GdmDisplay *display;
+ const char *sender;
+ GDBusConnection *connection;
+
+ sender = g_dbus_method_invocation_get_sender (invocation);
+ connection = g_dbus_method_invocation_get_connection (invocation);
+
+ get_display_and_details_for_bus_sender (self, connection, sender, &display,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+
+ g_debug ("GdmManager: trying to register new session on display %p", display);
+
+ if (display != NULL)
+ g_object_set (G_OBJECT (display), "session-registered", TRUE, NULL);
+ else
+ g_debug ("GdmManager: No display, not registering");
+
+ gdm_dbus_manager_complete_register_session (GDM_DBUS_MANAGER (manager),
+ invocation);
+
+ return TRUE;
+}
+
+static gboolean
gdm_manager_handle_open_session (GdmDBusManager *manager,
GDBusMethodInvocation *invocation)
{
@@ -1159,6 +1188,7 @@ static void
manager_interface_init (GdmDBusManagerIface *interface)
{
interface->handle_register_display = gdm_manager_handle_register_display;
+ interface->handle_register_session = gdm_manager_handle_register_session;
interface->handle_open_session = gdm_manager_handle_open_session;
interface->handle_open_reauthentication_channel = gdm_manager_handle_open_reauthentication_channel;
}