[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28176] trunk/blender/source/blender: used private mutexes to avoid deadlocks

Joseph Eagar joeedh at gmail.com
Tue Apr 13 22:34:41 CEST 2010


Revision: 28176
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28176
Author:   joeedh
Date:     2010-04-13 22:34:40 +0200 (Tue, 13 Apr 2010)

Log Message:
-----------
used private mutexes to avoid deadlocks

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/BLI_threads.h
    trunk/blender/source/blender/gpu/intern/gpu_draw.c

Modified: trunk/blender/source/blender/blenlib/BLI_threads.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_threads.h	2010-04-13 20:06:55 UTC (rev 28175)
+++ trunk/blender/source/blender/blenlib/BLI_threads.h	2010-04-13 20:34:40 UTC (rev 28176)
@@ -72,6 +72,7 @@
 /* Mutex Lock */
 
 typedef pthread_mutex_t ThreadMutex;
+#define BLI_MUTEX_INITIALIZER	PTHREAD_MUTEX_INITIALIZER;
 
 void BLI_mutex_init(ThreadMutex *mutex);
 void BLI_mutex_lock(ThreadMutex *mutex);

Modified: trunk/blender/source/blender/gpu/intern/gpu_draw.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_draw.c	2010-04-13 20:06:55 UTC (rev 28175)
+++ trunk/blender/source/blender/gpu/intern/gpu_draw.c	2010-04-13 20:34:40 UTC (rev 28176)
@@ -785,11 +785,13 @@
 }
 
 ListBase image_free_queue = {NULL, NULL};
+static ThreadMutex queuelock = BLI_MUTEX_INITIALIZER;
+
 static void flush_queued_free(void)
 {
 	Image *ima, *imanext;
 
-	BLI_lock_thread(LOCK_IMAGE);
+	BLI_mutex_lock(&queuelock);
 
 	ima = image_free_queue.first;
 	image_free_queue.first = image_free_queue.last = NULL;
@@ -799,16 +801,16 @@
 		MEM_freeN(ima);
 	}
 
-	BLI_unlock_thread(LOCK_IMAGE);
+	BLI_mutex_unlock(&queuelock);
 }
 
 static void queue_image_for_free(Image *ima)
 {
     Image *cpy = MEM_dupallocN(ima);
 
-    BLI_lock_thread(LOCK_IMAGE);
+	BLI_mutex_lock(&queuelock);
 	BLI_addtail(&image_free_queue, cpy);
-    BLI_unlock_thread(LOCK_IMAGE);
+	BLI_mutex_unlock(&queuelock);
 }
 
 void GPU_free_image(Image *ima)





More information about the Bf-blender-cvs mailing list