From 9496f639715b1b8e31b2b0a5bd37a8b6761249b3 Mon Sep 17 00:00:00 2001 From: Iain Lane Date: Tue, 7 May 2019 15:57:43 +0100 Subject: GdmManager, GdmDisplay: Add RegisterSession method Window managers can use this to register with GDM when they've finished starting up and started displaying. --- daemon/gdm-manager.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'daemon/gdm-manager.c') 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 @@ -803,6 +803,35 @@ gdm_manager_handle_register_display (GdmDBusManager *manager, return TRUE; } +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; } -- cgit v1.2.1