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 */


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to