[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52294] trunk/blender/source/blender: Fix #33209: Opening an image with image node on Compositing freezes Blender

Sergey Sharybin sergey.vfx at gmail.com
Sat Nov 17 12:07:56 CET 2012


Revision: 52294
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52294
Author:   nazgul
Date:     2012-11-17 11:07:46 +0000 (Sat, 17 Nov 2012)
Log Message:
-----------
Fix #33209: Opening an image with image node on Compositing freezes Blender

Own mistake in image threading commit.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/image.c
    trunk/blender/source/blender/compositor/operations/COM_ImageOperation.cpp

Modified: trunk/blender/source/blender/blenkernel/intern/image.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/image.c	2012-11-17 06:32:35 UTC (rev 52293)
+++ trunk/blender/source/blender/blenkernel/intern/image.c	2012-11-17 11:07:46 UTC (rev 52294)
@@ -2173,6 +2173,8 @@
 			break;
 	}
 
+	BLI_spin_unlock(&image_spin);
+
 	/* don't use notifiers because they are not 100% sure to succeeded
 	 * this also makes sure all scenes are accounted for. */
 	{
@@ -2183,8 +2185,6 @@
 			}
 		}
 	}
-
-	BLI_spin_unlock(&image_spin);
 }
 
 /* if layer or pass changes, we need an index for the imbufs list */

Modified: trunk/blender/source/blender/compositor/operations/COM_ImageOperation.cpp
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_ImageOperation.cpp	2012-11-17 06:32:35 UTC (rev 52293)
+++ trunk/blender/source/blender/compositor/operations/COM_ImageOperation.cpp	2012-11-17 11:07:46 UTC (rev 52294)
@@ -67,6 +67,7 @@
 	
 	ibuf = BKE_image_acquire_ibuf(this->m_image, this->m_imageUser, NULL);
 	if (ibuf == NULL || (ibuf->rect == NULL && ibuf->rect_float == NULL)) {
+		BKE_image_release_ibuf(this->m_image, ibuf, NULL);
 		return NULL;
 	}
 	
@@ -93,7 +94,7 @@
 void BaseImageOperation::deinitExecution()
 {
 	this->m_imageBuffer = NULL;
-	IMB_freeImBuf(this->m_buffer);
+	BKE_image_release_ibuf(this->m_image, this->m_buffer, NULL);
 }
 
 void BaseImageOperation::determineResolution(unsigned int resolution[2], unsigned int preferredResolution[2])




More information about the Bf-blender-cvs mailing list