[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17831] branches/blender2.5/blender/source /blender: 2.5

Ton Roosendaal ton at blender.org
Sun Dec 14 11:08:08 CET 2008


Revision: 17831
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17831
Author:   ton
Date:     2008-12-14 11:08:00 +0100 (Sun, 14 Dec 2008)

Log Message:
-----------
2.5

Added freeing functions in outliner space, this makes blender quit
without memory free errors in my test .b.blends.

Note: I'll move current rna viewer to new SpaceData editor, then I
can bring back original outliner stuff. Proposed menu name is
"Data Viewer". Probably better not not expose name 'rna' in UI?

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
    branches/blender2.5/blender/source/blender/editors/space_outliner/outliner_intern.h
    branches/blender2.5/blender/source/blender/editors/space_outliner/space_outliner.c

Modified: branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2008-12-14 09:11:31 UTC (rev 17830)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2008-12-14 10:08:00 UTC (rev 17831)
@@ -4510,8 +4510,17 @@
 	allocname= dataname(GS(id->name));
 	
 		/* read all data */
+	
 	while(bhead && bhead->code==DATA) {
-		void *data= read_struct(fd, bhead, allocname);
+		void *data;
+		/* XXX BAD DEBUGGING OPTION TO GIVE NAMES */		
+		short *sp= fd->filesdna->structs[bhead->SDNAnr];
+		char *allocname = fd->filesdna->types[ sp[0] ];
+		char *tmp= malloc(100);
+		
+		strcpy(tmp, allocname);
+		
+		data= read_struct(fd, bhead, tmp);
 
 		if (data) {
 			oldnewmap_insert(fd->datamap, bhead->old, data, 0);

Modified: branches/blender2.5/blender/source/blender/editors/space_outliner/outliner_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_outliner/outliner_intern.h	2008-12-14 09:11:31 UTC (rev 17830)
+++ branches/blender2.5/blender/source/blender/editors/space_outliner/outliner_intern.h	2008-12-14 10:08:00 UTC (rev 17831)
@@ -33,6 +33,67 @@
 
 struct wmWindowManager;
 
+struct TreeStoreElem;
+
+typedef struct TreeElement {
+	struct TreeElement *next, *prev, *parent;
+	ListBase subtree;
+	float xs, ys;		// do selection
+	int store_index;	// offset in tree store
+	short flag, index;	// flag for non-saved stuff, index for data arrays
+	short idcode;		// from TreeStore id
+	short xend;			// width of item display, for select
+	char *name;
+	void *directdata;	// Armature Bones, Base, Sequence, Strip...
+}  TreeElement;
+
+/* TreeElement->flag */
+#define TE_ACTIVE	1
+#define TE_ICONROW	2
+
+/* TreeStoreElem types */
+#define TSE_NLA				1
+#define TSE_NLA_ACTION		2
+#define TSE_DEFGROUP_BASE	3
+#define TSE_DEFGROUP		4
+#define TSE_BONE			5
+#define TSE_EBONE			6
+#define TSE_CONSTRAINT_BASE	7
+#define TSE_CONSTRAINT		8
+#define TSE_MODIFIER_BASE	9
+#define TSE_MODIFIER		10
+#define TSE_LINKED_OB		11
+#define TSE_SCRIPT_BASE		12
+#define TSE_POSE_BASE		13
+#define TSE_POSE_CHANNEL	14
+/*#ifdef WITH_VERSE*/
+#define TSE_VERSE_SESSION	15
+#define TSE_VERSE_OBJ_NODE	16
+#define TSE_VERSE_GEOM_NODE	17
+/*#endif*/
+#define TSE_PROXY			18
+#define TSE_R_LAYER_BASE	19
+#define TSE_R_LAYER			20
+#define TSE_R_PASS			21
+#define TSE_LINKED_MAT		22
+/* NOTE, is used for light group */
+#define TSE_LINKED_LAMP		23
+#define TSE_POSEGRP_BASE	24
+#define TSE_POSEGRP			25
+#define TSE_SEQUENCE	26
+#define TSE_SEQ_STRIP	27
+#define TSE_SEQUENCE_DUP 28
+
+/* outliner search flags */
+#define OL_FIND					0
+#define OL_FIND_CASE			1
+#define OL_FIND_COMPLETE		2
+#define OL_FIND_COMPLETE_CASE	3
+
+/* button events */
+#define OL_NAMEBUTTON		1
+
+
 /* outliner_ops.c */
 void outliner_operatortypes(void);
 void outliner_keymap(struct wmWindowManager *wm);

Modified: branches/blender2.5/blender/source/blender/editors/space_outliner/space_outliner.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_outliner/space_outliner.c	2008-12-14 09:11:31 UTC (rev 17830)
+++ branches/blender2.5/blender/source/blender/editors/space_outliner/space_outliner.c	2008-12-14 10:08:00 UTC (rev 17831)
@@ -492,15 +492,46 @@
 	return (SpaceLink*)soutliner;
 }
 
+static void free_oops(Oops *oops)	/* also oops itself */
+{
+	BLI_freelistN(&oops->link);
+	MEM_freeN(oops);
+}
+
+static void outliner_free_tree(ListBase *lb)
+{
+	
+	while(lb->first) {
+		TreeElement *te= lb->first;
+		
+		outliner_free_tree(&te->subtree);
+		BLI_remlink(lb, te);
+		MEM_freeN(te);
+	}
+}
+
 /* not spacelink itself */
 static void outliner_free(SpaceLink *sl)
 {
 	SpaceOops *soutliner= (SpaceOops*)sl;
+	Oops *oops;
 
 	if(soutliner->rnapath) {
 		MEM_freeN(soutliner->rnapath);
 		soutliner->rnapath= NULL;
 	}
+	
+	while( (oops= soutliner->oops.first) ) {
+		BLI_remlink(&soutliner->oops, oops);
+		free_oops(oops);
+	}
+	
+	outliner_free_tree(&soutliner->tree);
+	if(soutliner->treestore) {
+		if(soutliner->treestore->data) MEM_freeN(soutliner->treestore->data);
+		MEM_freeN(soutliner->treestore);
+	}
+	
 }
 
 /* spacetype; init callback */





More information about the Bf-blender-cvs mailing list