diff options
author | NP-Hardass <[email protected]> | 2020-08-03 01:55:43 -0400 |
---|---|---|
committer | raveit65 <[email protected]> | 2020-10-20 10:34:23 +0200 |
commit | a69152ff74708f8cc8f34ef9d392c7d167c1290e (patch) | |
tree | 4bc69a023571748ca70c2b3cc418f9be823280be | |
parent | f7bcd6312be1f987572c9a8f20535ebe8eeeec5e (diff) | |
download | mate-power-manager-a69152ff74708f8cc8f34ef9d392c7d167c1290e.tar.bz2 mate-power-manager-a69152ff74708f8cc8f34ef9d392c7d167c1290e.tar.xz |
gpm-control.c: Add libsecret implementation to gpm_control_hibernate()
-rw-r--r-- | src/gpm-control.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/gpm-control.c b/src/gpm-control.c index 221ed60..38f476f 100644 --- a/src/gpm-control.c +++ b/src/gpm-control.c @@ -368,6 +368,13 @@ gpm_control_hibernate (GpmControl *control, GError **error) EggConsoleKit *console; GpmScreensaver *screensaver; guint32 throttle_cookie = 0; +#ifdef WITH_LIBSECRET + gboolean lock_libsecret; + GCancellable *libsecret_cancellable = NULL; + SecretService *secretservice_proxy = NULL; + gint num_secrets_locked; + GList *libsecret_collections = NULL; +#endif /* WITH_LIBSECRET */ #ifdef WITH_KEYRING gboolean lock_gnome_keyring; GnomeKeyringResult keyres; @@ -391,6 +398,36 @@ gpm_control_hibernate (GpmControl *control, GError **error) } } +#ifdef WITH_LIBSECRET + /* we should perhaps lock keyrings when sleeping #375681 */ + lock_libsecret = g_settings_get_boolean (control->priv->settings, + GPM_SETTINGS_LOCK_KEYRING_SUSPEND); + if (lock_libsecret) { + libsecret_cancellable = g_cancellable_new (); + secretservice_proxy = secret_service_get_sync (SECRET_SERVICE_LOAD_COLLECTIONS, + libsecret_cancellable, + error); + if (secretservice_proxy == NULL) { + g_warning ("failed to connect to secret service"); + } else { + libsecret_collections = secret_service_get_collections (secretservice_proxy); + if ( libsecret_collections == NULL) { + g_warning ("failed to get secret collections"); + } else { + num_secrets_locked = secret_service_lock_sync (secretservice_proxy, + libsecret_collections, + libsecret_cancellable, + NULL, + error); + if (num_secrets_locked <= 0) + g_warning ("could not lock keyring"); + g_list_free (libsecret_collections); + } + g_object_unref (secretservice_proxy); + } + g_object_unref (libsecret_cancellable); + } +#endif /* WITH_LIBSECRET */ #ifdef WITH_KEYRING /* we should perhaps lock keyrings when sleeping #375681 */ lock_gnome_keyring = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_HIBERNATE); |