From 65bb81fe8ab526ad249efbc8179b4bb5cce4a51b Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 16 Jan 2018 00:35:17 +0100 Subject: [PATCH] libpakfire: Make Pakfire parent object of Step Signed-off-by: Michael Tremer --- src/libpakfire/include/pakfire/transaction.h | 1 + src/libpakfire/step.c | 17 ++++++++++++----- src/libpakfire/transaction.c | 4 ++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/libpakfire/include/pakfire/transaction.h b/src/libpakfire/include/pakfire/transaction.h index 9fcb3f461..0ac7119c3 100644 --- a/src/libpakfire/include/pakfire/transaction.h +++ b/src/libpakfire/include/pakfire/transaction.h @@ -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); diff --git a/src/libpakfire/step.c b/src/libpakfire/step.c index 3921286d0..ee55c77fb 100644 --- a/src/libpakfire/step.c +++ b/src/libpakfire/step.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -36,7 +37,7 @@ #include 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; } diff --git a/src/libpakfire/transaction.c b/src/libpakfire/transaction.c index d5de4ee09..81a101302 100644 --- a/src/libpakfire/transaction.c +++ b/src/libpakfire/transaction.c @@ -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); } -- 2.39.5