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