[libsecret/wip/dueno/backend: 3/5] secret-service: Move instance caching logic to init vfunc



commit deb5de11d95702036d07add9904e7f90f37c42fe
Author: Daiki Ueno <dueno src gnome org>
Date:   Mon Jul 1 18:26:17 2019 +0200

    secret-service: Move instance caching logic to init vfunc
    
    This allows to keep track of the singleton instance even if the
    instance is directly created through GInitable.

 libsecret/secret-service.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
---
diff --git a/libsecret/secret-service.c b/libsecret/secret-service.c
index 2c3ca31..490991a 100644
--- a/libsecret/secret-service.c
+++ b/libsecret/secret-service.c
@@ -708,7 +708,12 @@ secret_service_initable_init (GInitable *initable,
                return FALSE;
 
        self = SECRET_SERVICE (initable);
-       return service_ensure_for_flags_sync (self, self->pv->init_flags, cancellable, error);
+       if (!service_ensure_for_flags_sync (self, self->pv->init_flags,
+                                           cancellable, error))
+               return FALSE;
+
+       service_cache_instance (self);
+       return TRUE;
 }
 
 static void
@@ -774,6 +779,7 @@ secret_service_async_initable_init_finish (GAsyncInitable *initable,
                return FALSE;
        }
 
+       service_cache_instance (SECRET_SERVICE (initable));
        return TRUE;
 }
 
@@ -1030,8 +1036,6 @@ secret_service_get_finish (GAsyncResult *result,
        /* Creating a whole new service */
        } else {
                service = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), result, error);
-               if (service)
-                       service_cache_instance (SECRET_SERVICE (service));
        }
 
        if (service == NULL)
@@ -1071,10 +1075,6 @@ secret_service_get_sync (SecretServiceFlags flags,
                service = g_initable_new (SECRET_TYPE_SERVICE, cancellable, error,
                                          "flags", flags,
                                          NULL);
-
-               if (service != NULL)
-                       service_cache_instance (service);
-
        } else {
                if (!service_ensure_for_flags_sync (service, flags, cancellable, error)) {
                        g_object_unref (service);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]