Skip to content

Commit 9961f98

Browse files
committed
csm-manager.c: Stop the user dbus-daemon at the end of the session.
1 parent 55e9291 commit 9961f98

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

cinnamon-session/csm-manager.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -941,6 +941,41 @@ _client_stop (const char *id,
941941
return FALSE;
942942
}
943943

944+
static void
945+
maybe_restart_user_bus (CsmManager *manager)
946+
{
947+
CsmSystem *system;
948+
g_autoptr(GVariant) reply = NULL;
949+
g_autoptr(GError) error = NULL;
950+
951+
if (manager->priv->dbus_disconnected)
952+
return;
953+
954+
system = csm_get_system ();
955+
956+
if (!csm_system_is_last_session_for_user (system))
957+
return;
958+
959+
g_debug ("CsmManager: reloading user bus");
960+
961+
reply = g_dbus_connection_call_sync (manager->priv->connection,
962+
"org.freedesktop.systemd1",
963+
"/org/freedesktop/systemd1",
964+
"org.freedesktop.systemd1.Manager",
965+
"StopUnit",
966+
g_variant_new ("(ss)", "dbus.service", "fail"),
967+
NULL,
968+
G_DBUS_CALL_FLAGS_NONE,
969+
-1,
970+
NULL,
971+
&error);
972+
973+
if (error != NULL) {
974+
g_debug ("CsmManager: reloading user bus failed: %s", error->message);
975+
g_clear_error (&error);
976+
}
977+
}
978+
944979
static void
945980
do_phase_exit (CsmManager *manager)
946981
{
@@ -949,6 +984,7 @@ do_phase_exit (CsmManager *manager)
949984
(CsmStoreFunc)_client_stop,
950985
NULL);
951986
}
987+
maybe_restart_user_bus (manager);
952988
end_phase (manager);
953989
}
954990

0 commit comments

Comments
 (0)