From a69152ff74708f8cc8f34ef9d392c7d167c1290e Mon Sep 17 00:00:00 2001 From: NP-Hardass Date: Mon, 3 Aug 2020 01:55:43 -0400 Subject: gpm-control.c: Add libsecret implementation to gpm_control_hibernate() --- src/gpm-control.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'src') 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); -- cgit v1.2.1