diff options
author | Iain Lane <iainl@gnome.org> | 2019-05-07 15:57:43 +0100 |
---|---|---|
committer | Iain Lane <iain@orangesquash.org.uk> | 2019-05-29 15:53:35 +0000 |
commit | 9496f639715b1b8e31b2b0a5bd37a8b6761249b3 (patch) | |
tree | 37880b604c52db26e96b83d63c32eb25b357c6ed /daemon/gdm-manager.c | |
parent | c6c916b1fd3d03ce08d7f82a647ea8bb7e115bb9 (diff) | |
download | gdm-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.c | 30 |
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; } |