chiark / gitweb /
logind: send out PropertyChanged signals where appropriate
[elogind.git] / src / logind-user.c
index 70d6a9a5242a22c1e033a793a69ce60e76989a82..cb3e44197fc6d6b1de3c24d1991f875c93b28b9b 100644 (file)
@@ -260,6 +260,9 @@ int user_start(User *u) {
 
         assert(u);
 
+        if (u->started)
+                return 0;
+
         /* Make XDG_RUNTIME_DIR */
         r = user_mkdir_runtime_path(u);
         if (r < 0)
@@ -280,6 +283,8 @@ int user_start(User *u) {
 
         dual_timestamp_get(&u->timestamp);
 
+        u->started = true;
+
         user_send_signal(u, true);
 
         return 0;
@@ -361,6 +366,9 @@ int user_stop(User *u) {
         int r = 0, k;
         assert(u);
 
+        if (!u->started)
+                return 0;
+
         LIST_FOREACH(sessions_by_user, s, u->sessions) {
                 k = session_stop(s);
                 if (k < 0)
@@ -387,6 +395,8 @@ int user_stop(User *u) {
         unlink(u->state_file);
         user_add_to_gc_queue(u);
 
+        u->started = false;
+
         return r;
 }