[gegl/threaded-base-classes: 4/22] buffer: use a 2d instead of 1d mapping for tile locks
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl/threaded-base-classes: 4/22] buffer: use a 2d instead of 1d mapping for tile locks
- Date: Mon, 30 Jun 2014 02:15:14 +0000 (UTC)
commit 3375324c936cc7a1433d424e1b0b5c3bca4ff548
Author: Øyvind Kolås <pippin gimp org>
Date: Fri Jun 27 07:53:30 2014 +0200
buffer: use a 2d instead of 1d mapping for tile locks
gegl/buffer/gegl-buffer-access.c | 4 ++--
gegl/buffer/gegl-buffer-iterator.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer-access.c b/gegl/buffer/gegl-buffer-access.c
index 9a88b49..aa0367a 100644
--- a/gegl/buffer/gegl-buffer-access.c
+++ b/gegl/buffer/gegl-buffer-access.c
@@ -393,10 +393,10 @@ gegl_buffer_iterate_write (GeglBuffer *buffer,
index_x = gegl_tile_indice (tiledx, tile_width);
index_y = gegl_tile_indice (tiledy, tile_height);
- g_mutex_lock (&mutexes[ABS (index_x) % 256]);
+ g_mutex_lock (&mutexes[(index_x&15) * 16 + (index_y&15)]);
tile = gegl_tile_source_get_tile ((GeglTileSource *) (buffer),
index_x, index_y, level);
- g_mutex_unlock (&mutexes[ABS (index_x) % 256]);
+ g_mutex_unlock (&mutexes[(index_x&15) * 16 + (index_y&15)]);
lskip = (buffer_abyss_x) - (buffer_x + bufx);
/* gap between left side of tile, and abyss */
diff --git a/gegl/buffer/gegl-buffer-iterator.c b/gegl/buffer/gegl-buffer-iterator.c
index 9a90e5c..e0a8360 100644
--- a/gegl/buffer/gegl-buffer-iterator.c
+++ b/gegl/buffer/gegl-buffer-iterator.c
@@ -314,10 +314,10 @@ get_tile (GeglBufferIterator *iter,
int tile_x = gegl_tile_indice (iter->roi[index].x + shift_x, tile_width);
int tile_y = gegl_tile_indice (iter->roi[index].y + shift_y, tile_height);
- g_mutex_lock (&mutexes[ABS (tile_x) % 256]);
+ g_mutex_lock (&mutexes[(ABS(tile_x) % 16) * 16 + (ABS(tile_y)%16)]);
sub->current_tile = gegl_tile_source_get_tile ((GeglTileSource *)(buf),
tile_x, tile_y, 0);
- g_mutex_unlock (&mutexes[ABS (tile_x) % 256]);
+ g_mutex_unlock (&mutexes[(ABS(tile_x) % 16) * 16 + (ABS(tile_y)%16)]);
if (sub->flags & GEGL_BUFFER_WRITE)
gegl_tile_lock (sub->current_tile);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]