[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33738] trunk/blender/source/blender: Bugfix #25264

Ton Roosendaal ton at blender.org
Fri Dec 17 15:20:21 CET 2010


Revision: 33738
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33738
Author:   ton
Date:     2010-12-17 15:20:20 +0100 (Fri, 17 Dec 2010)

Log Message:
-----------
Bugfix #25264

Bad user counting went on, ID users could be set zero whilst
having Fake user set. Also ensured the code using the BKE
calls for increment/decrement.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/library.c
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/makesrna/intern/rna_ID.c

Modified: trunk/blender/source/blender/blenkernel/intern/library.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/library.c	2010-12-17 13:29:40 UTC (rev 33737)
+++ trunk/blender/source/blender/blenkernel/intern/library.c	2010-12-17 14:20:20 UTC (rev 33738)
@@ -138,8 +138,14 @@
 
 void id_us_min(ID *id)
 {
-	if(id)
-		id->us--;
+	if(id) {
+		if(id->us<2 && (id->flag & LIB_FAKEUSER))
+		   id->us= 1;
+		else if(id->us<=0)
+			printf("ID user decrement error: %s \n", id->name);
+		else
+			id->us--;
+	}
 }
 
 int id_make_local(ID *id, int test)

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c	2010-12-17 13:29:40 UTC (rev 33737)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c	2010-12-17 14:20:20 UTC (rev 33738)
@@ -252,8 +252,8 @@
 			break;
 		case UI_ID_FAKE_USER:
 			if(id) {
-				if(id->flag & LIB_FAKEUSER) id->us++;
-				else id->us--;
+				if(id->flag & LIB_FAKEUSER) id_us_plus(id);
+				else id_us_min(id);
 			}
 			else return;
 			break;

Modified: trunk/blender/source/blender/makesrna/intern/rna_ID.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_ID.c	2010-12-17 13:29:40 UTC (rev 33737)
+++ trunk/blender/source/blender/makesrna/intern/rna_ID.c	2010-12-17 14:20:20 UTC (rev 33738)
@@ -190,11 +190,11 @@
 
 	if(value && !(id->flag & LIB_FAKEUSER)) {
 		id->flag |= LIB_FAKEUSER;
-		id->us++;
+		id_us_plus(id);
 	}
 	else if(!value && (id->flag & LIB_FAKEUSER)) {
 		id->flag &= ~LIB_FAKEUSER;
-		id->us--;
+		id_us_min(id);
 	}
 }
 
@@ -241,7 +241,7 @@
 	ID *newid;
 
 	if(id_copy(id, &newid, 0)) {
-		if(newid) newid->us--;
+		if(newid) id_us_min(newid);
 		return newid;
 	}
 	





More information about the Bf-blender-cvs mailing list