[gegl] buffer: fix swap-total-uncloned count
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] buffer: fix swap-total-uncloned count
- Date: Tue, 4 Dec 2018 13:16:50 +0000 (UTC)
commit bbd1c28e6de1eb3a1af7cb3d2fc07c9a47f2eea5
Author: Ell <ell_se yahoo com>
Date: Tue Dec 4 08:12:55 2018 -0500
buffer: fix swap-total-uncloned count
Fix the reported uncloned total swap size, by counting the size of
all cloned blocks, not only of the first block to be cloned in each
set.
gegl/buffer/gegl-tile-backend-swap.c | 19 +++++++------------
1 file changed, 7 insertions(+), 12 deletions(-)
---
diff --git a/gegl/buffer/gegl-tile-backend-swap.c b/gegl/buffer/gegl-tile-backend-swap.c
index f0dce9d01..56929da02 100644
--- a/gegl/buffer/gegl-tile-backend-swap.c
+++ b/gegl/buffer/gegl-tile-backend-swap.c
@@ -681,12 +681,11 @@ static SwapBlock *
gegl_tile_backend_swap_block_ref (GeglTileBackendSwap *self,
SwapBlock *block)
{
- if (g_atomic_int_add (&block->ref_count, +1) == 1)
- {
- g_atomic_pointer_add (
- &cloned_total,
- +gegl_tile_backend_get_tile_size (GEGL_TILE_BACKEND (self)));
- }
+ g_atomic_int_inc (&block->ref_count);
+
+ g_atomic_pointer_add (
+ &cloned_total,
+ +gegl_tile_backend_get_tile_size (GEGL_TILE_BACKEND (self)));
return block;
}
@@ -696,11 +695,7 @@ gegl_tile_backend_swap_block_unref (GeglTileBackendSwap *self,
SwapBlock *block,
gboolean lock)
{
- gint ref_count;
-
- ref_count = g_atomic_int_add (&block->ref_count, -1) - 1;
-
- if (ref_count == 0)
+ if (g_atomic_int_dec_and_test (&block->ref_count))
{
if (lock)
g_mutex_lock (&queue_mutex);
@@ -753,7 +748,7 @@ gegl_tile_backend_swap_block_unref (GeglTileBackendSwap *self,
if (lock)
g_mutex_unlock (&queue_mutex);
}
- else if (ref_count == 1)
+ else
{
g_atomic_pointer_add (
&cloned_total,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]