[gegl] buffer: use a GRecMutex as storage->mutex



commit 64387500f289d482c83b831011307a56da7e2c4a
Author: Massimo Valentini <mvalentini src gnome org>
Date:   Tue Jul 1 02:31:58 2014 +0200

    buffer: use a GRecMutex as storage->mutex

 gegl/buffer/gegl-buffer-linear.c |    8 ++++----
 gegl/buffer/gegl-buffer.c        |    4 ++--
 gegl/buffer/gegl-tile-storage.h  |    2 +-
 gegl/buffer/gegl-tile.c          |   10 +++++-----
 4 files changed, 12 insertions(+), 12 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer-linear.c b/gegl/buffer/gegl-buffer-linear.c
index de870b1..267593b 100644
--- a/gegl/buffer/gegl-buffer-linear.c
+++ b/gegl/buffer/gegl-buffer-linear.c
@@ -147,7 +147,7 @@ gegl_buffer_linear_open (GeglBuffer          *buffer,
     extent=&buffer->extent;
 
   /*gegl_buffer_lock (buffer);*/
-  g_mutex_lock (&buffer->tile_storage->mutex);
+  g_rec_mutex_lock (&buffer->tile_storage->mutex);
   if (extent->x     == buffer->extent.x &&
       extent->y     == buffer->extent.y &&
       extent->width == buffer->tile_width &&
@@ -258,19 +258,19 @@ gegl_buffer_linear_close (GeglBuffer *buffer,
               linear_buffers = g_list_remove (linear_buffers, info);
               g_object_set_data (G_OBJECT (buffer), "linear-buffers", linear_buffers);
 
-              g_mutex_unlock (&buffer->tile_storage->mutex);
+              g_rec_mutex_unlock (&buffer->tile_storage->mutex);
               /* XXX: potential race */
               gegl_buffer_set (buffer, &info->extent, 0, info->format, info->buf, 0);
 
               gegl_free (info->buf);
               g_free (info);
 
-              g_mutex_lock (&buffer->tile_storage->mutex);
+              g_rec_mutex_lock (&buffer->tile_storage->mutex);
               break;
             }
         }
     }
   /*gegl_buffer_unlock (buffer);*/
-  g_mutex_unlock (&buffer->tile_storage->mutex);
+  g_rec_mutex_unlock (&buffer->tile_storage->mutex);
   return;
 }
diff --git a/gegl/buffer/gegl-buffer.c b/gegl/buffer/gegl-buffer.c
index a1bbfb3..7c756f4 100644
--- a/gegl/buffer/gegl-buffer.c
+++ b/gegl/buffer/gegl-buffer.c
@@ -1208,12 +1208,12 @@ gegl_buffer_get_tile (GeglBuffer *buffer,
     GeglTileStorage *tile_storage = buffer->tile_storage;
     g_assert (tile_storage);
 
-    g_mutex_lock (&tile_storage->mutex);
+    g_rec_mutex_lock (&tile_storage->mutex);
 
     tile = gegl_tile_source_command (source, GEGL_TILE_GET,
                                      x, y, z, NULL);
 
-    g_mutex_unlock (&tile_storage->mutex);
+    g_rec_mutex_unlock (&tile_storage->mutex);
   }
   else
   {
diff --git a/gegl/buffer/gegl-tile-storage.h b/gegl/buffer/gegl-tile-storage.h
index c32536e..2e256d5 100644
--- a/gegl/buffer/gegl-tile-storage.h
+++ b/gegl/buffer/gegl-tile-storage.h
@@ -40,7 +40,7 @@ struct _GeglTileStorage
 {
   GeglTileHandlerChain parent_instance;
   GeglTileHandlerCache *cache;
-  GMutex         mutex;
+  GRecMutex      mutex;
   const Babl    *format;
   gint           tile_width;
   gint           tile_height;
diff --git a/gegl/buffer/gegl-tile.c b/gegl/buffer/gegl-tile.c
index ad90101..8248398 100644
--- a/gegl/buffer/gegl-tile.c
+++ b/gegl/buffer/gegl-tile.c
@@ -267,12 +267,12 @@ gegl_tile_is_stored (GeglTile *tile)
 void
 gegl_tile_void (GeglTile *tile)
 {
-//  g_mutex_lock (&tile->tile_storage->mutex);
+  g_rec_mutex_lock (&tile->tile_storage->mutex);
   gegl_tile_mark_as_stored (tile);
 
   if (tile->z == 0)
     gegl_tile_void_pyramid (tile);
- // g_mutex_unlock (&tile->tile_storage->mutex);
+  g_rec_mutex_unlock (&tile->tile_storage->mutex);
 }
 
 gboolean gegl_tile_store (GeglTile *tile)
@@ -282,10 +282,10 @@ gboolean gegl_tile_store (GeglTile *tile)
     return TRUE;
   if (tile->tile_storage == NULL)
     return FALSE;
-  g_mutex_lock (&tile->tile_storage->mutex);
+  g_rec_mutex_lock (&tile->tile_storage->mutex);
   if (gegl_tile_is_stored (tile))
   {
-    g_mutex_unlock (&tile->tile_storage->mutex);
+    g_rec_mutex_unlock (&tile->tile_storage->mutex);
     return FALSE;
   }
   ret = gegl_tile_source_set_tile (GEGL_TILE_SOURCE (tile->tile_storage),
@@ -293,7 +293,7 @@ gboolean gegl_tile_store (GeglTile *tile)
                                     tile->y,
                                     tile->z,
                                     tile);
-  g_mutex_unlock (&tile->tile_storage->mutex);
+  g_rec_mutex_unlock (&tile->tile_storage->mutex);
   return ret;
 }
 


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