[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55131] trunk/blender/source/blender/ editors/space_view3d/view3d_draw.c: Use poroper release for images buffers acquired from an Image ID

Sergey Sharybin sergey.vfx at gmail.com
Sat Mar 9 12:18:01 CET 2013


Revision: 55131
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55131
Author:   nazgul
Date:     2013-03-09 11:18:01 +0000 (Sat, 09 Mar 2013)
Log Message:
-----------
Use poroper release for images buffers acquired from an Image ID
when drawing viewport background images.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2013-03-09 10:52:43 UTC (rev 55130)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2013-03-09 11:18:01 UTC (rev 55131)
@@ -1565,7 +1565,7 @@
 			float fac, asp, zoomx, zoomy;
 			float x1, y1, x2, y2;
 
-			ImBuf *ibuf = NULL, *freeibuf;
+			ImBuf *ibuf = NULL, *freeibuf, *releaseibuf;
 
 			Image *ima;
 			MovieClip *clip;
@@ -1575,6 +1575,7 @@
 				continue;
 
 			freeibuf = NULL;
+			releaseibuf = NULL;
 			if (bgpic->source == V3D_BGPIC_IMAGE) {
 				ima = bgpic->ima;
 				if (ima == NULL)
@@ -1585,7 +1586,7 @@
 				}
 				else {
 					ibuf = BKE_image_acquire_ibuf(ima, &bgpic->iuser, NULL);
-					freeibuf = ibuf;
+					releaseibuf = ibuf;
 				}
 
 				image_aspect[0] = ima->aspx;
@@ -1630,6 +1631,8 @@
 			if ((ibuf->rect == NULL && ibuf->rect_float == NULL) || ibuf->channels != 4) { /* invalid image format */
 				if (freeibuf)
 					IMB_freeImBuf(freeibuf);
+				if (releaseibuf)
+					BKE_image_release_ibuf(ima, releaseibuf, NULL);
 
 				continue;
 			}
@@ -1725,6 +1728,8 @@
 			if (x2 < 0 || y2 < 0 || x1 > ar->winx || y1 > ar->winy) {
 				if (freeibuf)
 					IMB_freeImBuf(freeibuf);
+				if (releaseibuf)
+					BKE_image_release_ibuf(ima, releaseibuf, NULL);
 
 				continue;
 			}
@@ -1783,9 +1788,10 @@
 			glDepthMask(1);
 			if (v3d->zbuf) glEnable(GL_DEPTH_TEST);
 
-			if (freeibuf) {
-				IMB_freeImBuf(freeibuf);
-			}
+			if (freeibuf)
+					IMB_freeImBuf(freeibuf);
+			if (releaseibuf)
+				BKE_image_release_ibuf(ima, releaseibuf, NULL);
 		}
 	}
 }




More information about the Bf-blender-cvs mailing list