diff options
author | Aleksey Lim <alsroot@member.fsf.org> | 2009-09-30 11:53:03 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@member.fsf.org> | 2009-09-30 11:53:03 (GMT) |
commit | 3d46fd8c99aeea34fce971f14129432ea52e8e12 (patch) | |
tree | a77bdf3d0fe36f78fa5a28eb1e317603436d4c85 | |
parent | 8f52b0a8f4a0c8381dd23435eb73d640a698d07f (diff) |
Shutdown/Reboot fails when multiple users are logged in #246
-rw-r--r-- | src/sugar/_sugarext.defs | 6 | ||||
-rw-r--r-- | src/sugar/gsm-session.c | 12 | ||||
-rw-r--r-- | src/sugar/gsm-session.h | 2 |
3 files changed, 20 insertions, 0 deletions
diff --git a/src/sugar/_sugarext.defs b/src/sugar/_sugarext.defs index a6befa4..e36034d 100644 --- a/src/sugar/_sugarext.defs +++ b/src/sugar/_sugarext.defs @@ -345,6 +345,12 @@ (return-type "none") ) +(define-method cancel_shutdown + (of-object "GsmSession") + (c-name "gsm_session_cancel_shutdown") + (return-type "none") +) + (define-method register_client (of-object "GsmSession") (c-name "gsm_session_register_client") diff --git a/src/sugar/gsm-session.c b/src/sugar/gsm-session.c index fd3c52f..6430a94 100644 --- a/src/sugar/gsm-session.c +++ b/src/sugar/gsm-session.c @@ -344,6 +344,18 @@ session_cancel_shutdown (GsmSession *session) gsm_client_shutdown_cancelled (cl->data); } +void +gsm_session_cancel_shutdown (GsmSession *session) +{ + if (session == NULL || session->phase != GSM_SESSION_PHASE_SHUTDOWN) + { + g_warning ("Session is not in shutdown mode"); + return; + } + + session_cancel_shutdown (session); +} + static void initiate_shutdown (GsmSession *session) { diff --git a/src/sugar/gsm-session.h b/src/sugar/gsm-session.h index 7b23b00..31d2762 100644 --- a/src/sugar/gsm-session.h +++ b/src/sugar/gsm-session.h @@ -84,6 +84,8 @@ GsmSessionPhase gsm_session_get_phase (GsmSession *session); void gsm_session_initiate_shutdown (GsmSession *session); +void gsm_session_cancel_shutdown (GsmSession *session); + char *gsm_session_register_client (GsmSession *session, GsmClient *client, const char *previous_id); |