[gegl] buffer: use a GRecMutex as storage->mutex
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] buffer: use a GRecMutex as storage->mutex
- Date: Tue, 1 Jul 2014 00:33:21 +0000 (UTC)
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]