chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
logind: send out PropertyChanged signals where appropriate
[elogind.git]
/
src
/
logind-user.c
diff --git
a/src/logind-user.c
b/src/logind-user.c
index 70d6a9a5242a22c1e033a793a69ce60e76989a82..cb3e44197fc6d6b1de3c24d1991f875c93b28b9b 100644
(file)
--- a/
src/logind-user.c
+++ b/
src/logind-user.c
@@
-260,6
+260,9
@@
int user_start(User *u) {
assert(u);
assert(u);
+ if (u->started)
+ return 0;
+
/* Make XDG_RUNTIME_DIR */
r = user_mkdir_runtime_path(u);
if (r < 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);
dual_timestamp_get(&u->timestamp);
+ u->started = true;
+
user_send_signal(u, true);
return 0;
user_send_signal(u, true);
return 0;
@@
-361,6
+366,9
@@
int user_stop(User *u) {
int r = 0, k;
assert(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)
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);
unlink(u->state_file);
user_add_to_gc_queue(u);
+ u->started = false;
+
return r;
}
return r;
}