]> git.ipfire.org Git - pakfire.git/commitdiff
libpakfire: Make Pakfire parent object of Step
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 15 Jan 2018 23:35:17 +0000 (00:35 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 15 Jan 2018 23:35:17 +0000 (00:35 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/include/pakfire/transaction.h
src/libpakfire/step.c
src/libpakfire/transaction.c

index 9fcb3f4616653184b858768ba9ebb5580f2dbe23..0ac7119c3725a2ef7fc488f508621a072a4b67e6 100644 (file)
@@ -29,6 +29,7 @@ PakfireTransaction pakfire_transaction_create(Pakfire pakfire, Transaction* tran
 PakfireTransaction pakfire_transaction_ref(PakfireTransaction transaction);
 PakfireTransaction pakfire_transaction_unref(PakfireTransaction transaction);
 
+Pakfire pakfire_transaction_get_pakfire(PakfireTransaction transaction);
 PakfirePool pakfire_transaction_get_pool(PakfireTransaction transaction);
 size_t pakfire_transaction_count(PakfireTransaction transaction);
 
index 3921286d092025894f6beaad950b1a4dfbcf634f..ee55c77fbbd4d946de0d8c597e54cf429981b2cc 100644 (file)
@@ -27,6 +27,7 @@
 #include <pakfire/constants.h>
 #include <pakfire/logging.h>
 #include <pakfire/package.h>
+#include <pakfire/pakfire.h>
 #include <pakfire/pool.h>
 #include <pakfire/private.h>
 #include <pakfire/repo.h>
@@ -36,7 +37,7 @@
 #include <pakfire/util.h>
 
 struct _PakfireStep {
-       PakfirePool pool;
+       Pakfire pakfire;
        PakfirePackage package;
        pakfire_step_type_t type;
        int nrefs;
@@ -85,11 +86,13 @@ PAKFIRE_EXPORT PakfireStep pakfire_step_create(PakfireTransaction transaction, I
                DEBUG("Allocated Step at %p\n", step);
                step->nrefs = 1;
 
-               step->pool = pakfire_transaction_get_pool(transaction);
+               step->pakfire = pakfire_transaction_get_pakfire(transaction);
                step->type = get_type(t, id);
 
                // Get the package
-               step->package = pakfire_package_create(step->pool, id);
+               PakfirePool pool = pakfire_get_pool(step->pakfire);
+               step->package = pakfire_package_create(pool, id);
+               pakfire_pool_unref(pool);
        }
 
        return step;
@@ -103,7 +106,7 @@ PAKFIRE_EXPORT PakfireStep pakfire_step_ref(PakfireStep step) {
 
 static void pakfire_step_free(PakfireStep step) {
        pakfire_package_unref(step->package);
-       pakfire_pool_unref(step->pool);
+       pakfire_unref(step->pakfire);
        pakfire_free(step);
 
        DEBUG("Released Step at %p\n", step);
@@ -199,6 +202,7 @@ PAKFIRE_EXPORT ssize_t pakfire_step_get_installsizechange(PakfireStep step) {
 }
 
 PAKFIRE_EXPORT int pakfire_step_needs_download(PakfireStep step) {
+       PakfirePool pool = NULL;
        int ret = true;
 
        if (!pakfire_step_get_downloadtype(step))
@@ -210,7 +214,8 @@ PAKFIRE_EXPORT int pakfire_step_needs_download(PakfireStep step) {
                goto finish;
        }
 
-       PakfireCache cache = pakfire_pool_get_cache(step->pool);
+       pool = pakfire_get_pool(step->pakfire);
+       PakfireCache cache = pakfire_pool_get_cache(pool);
        if (!cache)
                goto finish;
 
@@ -218,6 +223,8 @@ PAKFIRE_EXPORT int pakfire_step_needs_download(PakfireStep step) {
        ret = !pakfire_cache_has_package(cache, step->package);
 
 finish:
+       pakfire_pool_unref(pool);
+
        return ret;
 }
 
index d5de4ee09c3214821221571954be333c2811afe8..81a101302714dc2a3140ecea835900840822c583 100644 (file)
@@ -102,6 +102,10 @@ PAKFIRE_EXPORT PakfireTransaction pakfire_transaction_unref(PakfireTransaction t
        return NULL;
 }
 
+PAKFIRE_EXPORT Pakfire pakfire_transaction_get_pakfire(PakfireTransaction transaction) {
+       return pakfire_ref(transaction->pakfire);
+}
+
 PAKFIRE_EXPORT PakfirePool pakfire_transaction_get_pool(PakfireTransaction transaction) {
        return pakfire_get_pool(transaction->pakfire);
 }