[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50075] trunk/blender: code cleanup: vfont ' s used confusing and over complicated method of storing memory for loaded fonts , not store as a temp var in the fonts.

Campbell Barton ideasman42 at gmail.com
Tue Aug 21 12:39:02 CEST 2012


Revision: 50075
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50075
Author:   campbellbarton
Date:     2012-08-21 10:39:02 +0000 (Tue, 21 Aug 2012)
Log Message:
-----------
code cleanup: vfont's used confusing and over complicated method of storing memory for loaded fonts, not store as a temp var in the fonts.

Modified Paths:
--------------
    trunk/blender/intern/guardedalloc/MEM_guardedalloc.h
    trunk/blender/intern/guardedalloc/intern/mallocn.c
    trunk/blender/source/blender/blenkernel/BKE_font.h
    trunk/blender/source/blender/blenkernel/BKE_packedFile.h
    trunk/blender/source/blender/blenkernel/intern/font.c
    trunk/blender/source/blender/blenkernel/intern/packedFile.c
    trunk/blender/source/blender/blenlib/BLI_vfontdata.h
    trunk/blender/source/blender/blenlib/intern/freetypefont.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/makesdna/DNA_vfont_types.h
    trunk/blender/source/blender/windowmanager/intern/wm_files.c
    trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c

Modified: trunk/blender/intern/guardedalloc/MEM_guardedalloc.h
===================================================================
--- trunk/blender/intern/guardedalloc/MEM_guardedalloc.h	2012-08-21 10:24:30 UTC (rev 50074)
+++ trunk/blender/intern/guardedalloc/MEM_guardedalloc.h	2012-08-21 10:39:02 UTC (rev 50075)
@@ -92,7 +92,7 @@
 	/**
 	 * Duplicates a block of memory, and returns a pointer to the
 	 * newly allocated block.  */
-	void *MEM_dupallocN(void *vmemh)
+	void *MEM_dupallocN(const void *vmemh)
 #if MEM_GNU_ATTRIBUTES
 	__attribute__((warn_unused_result))
 #endif

Modified: trunk/blender/intern/guardedalloc/intern/mallocn.c
===================================================================
--- trunk/blender/intern/guardedalloc/intern/mallocn.c	2012-08-21 10:24:30 UTC (rev 50074)
+++ trunk/blender/intern/guardedalloc/intern/mallocn.c	2012-08-21 10:39:02 UTC (rev 50075)
@@ -248,12 +248,12 @@
 	}
 }
 
-void *MEM_dupallocN(void *vmemh)
+void *MEM_dupallocN(const void *vmemh)
 {
 	void *newp = NULL;
 	
 	if (vmemh) {
-		MemHead *memh = vmemh;
+		const MemHead *memh = vmemh;
 		memh--;
 
 #ifndef DEBUG_MEMDUPLINAME

Modified: trunk/blender/source/blender/blenkernel/BKE_font.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_font.h	2012-08-21 10:24:30 UTC (rev 50074)
+++ trunk/blender/source/blender/blenkernel/BKE_font.h	2012-08-21 10:39:02 UTC (rev 50075)
@@ -76,13 +76,9 @@
 
 void BKE_vfont_free_data(struct VFont *vfont);
 void BKE_vfont_free(struct VFont *sc); 
-void BKE_vfont_free_global_ttf(void);
 struct VFont *BKE_vfont_builtin_get(void);
 struct VFont *BKE_vfont_load(struct Main *bmain, const char *name);
 
-struct TmpFont *BKE_vfont_tmpfont_find(struct VFont *vfont);
-void            BKE_vfont_tmpfont_remove(struct VFont *vfont);
-
 struct CharTrans *BKE_vfont_to_curve(struct Main *bmain, struct Scene *scene, struct Object *ob, int mode);
 
 int BKE_vfont_select_get(struct Object *ob, int *start, int *end);

Modified: trunk/blender/source/blender/blenkernel/BKE_packedFile.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_packedFile.h	2012-08-21 10:24:30 UTC (rev 50074)
+++ trunk/blender/source/blender/blenkernel/BKE_packedFile.h	2012-08-21 10:39:02 UTC (rev 50075)
@@ -43,6 +43,7 @@
 struct VFont;
 
 /* pack */
+struct PackedFile *dupPackedFileMemory(const struct PackedFile *pf_src);
 struct PackedFile *newPackedFile(struct ReportList *reports, const char *filename, const char *relabase);
 struct PackedFile *newPackedFileMemory(void *mem, int memlen);
 

Modified: trunk/blender/source/blender/blenkernel/intern/font.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/font.c	2012-08-21 10:24:30 UTC (rev 50074)
+++ trunk/blender/source/blender/blenkernel/intern/font.c	2012-08-21 10:39:02 UTC (rev 50075)
@@ -60,10 +60,9 @@
 #include "BKE_curve.h"
 #include "BKE_displist.h"
 
-static ListBase ttfdata = {NULL, NULL};
+//static ListBase ttfdata = {NULL, NULL};
 
 /* The vfont code */
-
 void BKE_vfont_free_data(struct VFont *vfont)
 {
 	if (vfont->data) {
@@ -83,7 +82,10 @@
 		vfont->data = NULL;
 	}
 
-	BKE_vfont_tmpfont_remove(vfont);
+	if (vfont->temp_pf) {
+		freePackedFile(vfont->temp_pf);  /* NULL when the font file can't be found on disk */
+		vfont->temp_pf = NULL;
+	}
 }
 
 void BKE_vfont_free(struct VFont *vf)
@@ -91,7 +93,7 @@
 	if (vf == NULL) return;
 
 	BKE_vfont_free_data(vf);
-	
+
 	if (vf->packedfile) {
 		freePackedFile(vf->packedfile);
 		vf->packedfile = NULL;
@@ -128,64 +130,12 @@
 	}
 }
 
-static void vfont_tmpfont_free(struct TmpFont *tf)
+static VFontData *vfont_get_data(Main *bmain, VFont *vfont)
 {
-	if (tf->pf) {
-		freePackedFile(tf->pf);  /* NULL when the font file can't be found on disk */
+	if (vfont == NULL) {
+		return NULL;
 	}
-	MEM_freeN(tf);
-}
 
-void BKE_vfont_free_global_ttf(void)
-{
-	struct TmpFont *tf, *tf_next;
-
-	for (tf = ttfdata.first; tf; tf = tf_next) {
-		tf_next = tf->next;
-		vfont_tmpfont_free(tf);
-	}
-	ttfdata.first = ttfdata.last = NULL;
-}
-
-struct TmpFont *BKE_vfont_tmpfont_find(VFont *vfont)
-{
-	struct TmpFont *tmpfnt = NULL;
-	
-	if (vfont == NULL) return NULL;
-	
-	/* Try finding the font from font list */
-	for (tmpfnt = ttfdata.first; tmpfnt; tmpfnt = tmpfnt->next) {
-		if (tmpfnt->vfont == vfont) {
-			break;
-		}
-	}
-
-	return tmpfnt;
-}
-
-/* assumes a VFont's tmpfont can't be in the database more then once */
-void BKE_vfont_tmpfont_remove(VFont *vfont)
-{
-	struct TmpFont *tmpfnt;
-
-	tmpfnt = BKE_vfont_tmpfont_find(vfont);
-
-	if (tmpfnt) {
-		vfont_tmpfont_free(tmpfnt);
-		BLI_remlink(&ttfdata, tmpfnt);
-	}
-}
-
-static VFontData *vfont_get_data(Main *bmain, VFont *vfont)
-{
-	struct TmpFont *tmpfnt = NULL;
-	PackedFile *tpf;
-	
-	if (vfont == NULL) return NULL;
-	
-	/* Try finding the font from font list */
-	tmpfnt = BKE_vfont_tmpfont_find(vfont);
-
 	/* And then set the data */
 	if (!vfont->data) {
 		PackedFile *pf;
@@ -198,30 +148,15 @@
 				pf = vfont->packedfile;
 
 				/* We need to copy a tmp font to memory unless it is already there */
-				if (!tmpfnt) {
-					tpf = MEM_callocN(sizeof(*tpf), "PackedFile");
-					tpf->data = MEM_mallocN(pf->size, "packFile");
-					tpf->size = pf->size;
-					memcpy(tpf->data, pf->data, pf->size);
-
-					/* Add temporary packed file to globals */
-					tmpfnt = (struct TmpFont *) MEM_callocN(sizeof(struct TmpFont), "temp_font");
-					tmpfnt->pf = tpf;
-					tmpfnt->vfont = vfont;
-					BLI_addtail(&ttfdata, tmpfnt);
+				if (vfont->temp_pf == NULL) {
+					vfont->temp_pf = dupPackedFileMemory(pf);
 				}
 			}
 			else {
 				pf = newPackedFile(NULL, vfont->name, ID_BLEND_PATH(bmain, &vfont->id));
 
-				if (!tmpfnt) {
-					tpf = newPackedFile(NULL, vfont->name, ID_BLEND_PATH(bmain, &vfont->id));
-
-					/* Add temporary packed file to globals */
-					tmpfnt = (struct TmpFont *) MEM_callocN(sizeof(struct TmpFont), "temp_font");
-					tmpfnt->pf = tpf;
-					tmpfnt->vfont = vfont;
-					BLI_addtail(&ttfdata, tmpfnt);
+				if (vfont->temp_pf == NULL) {
+					vfont->temp_pf = newPackedFile(NULL, vfont->name, ID_BLEND_PATH(bmain, &vfont->id));
 				}
 			}
 			if (!pf) {
@@ -252,9 +187,8 @@
 	char filename[FILE_MAXFILE];
 	VFont *vfont = NULL;
 	PackedFile *pf;
-	PackedFile *tpf = NULL;	
+	PackedFile *temp_pf = NULL;
 	int is_builtin;
-	struct TmpFont *tmpfnt;
 	
 	if (strcmp(name, FO_BUILTIN_NAME) == 0) {
 		BLI_strncpy(filename, name, sizeof(filename));
@@ -269,7 +203,7 @@
 		BLI_splitdirstring(dir, filename);
 
 		pf = newPackedFile(NULL, name, bmain->name);
-		tpf = newPackedFile(NULL, name, bmain->name);
+		temp_pf = newPackedFile(NULL, name, bmain->name);
 		
 		is_builtin = FALSE;
 	}
@@ -295,10 +229,7 @@
 
 			/* Do not add FO_BUILTIN_NAME to temporary listbase */
 			if (strcmp(filename, FO_BUILTIN_NAME)) {
-				tmpfnt = (struct TmpFont *) MEM_callocN(sizeof(struct TmpFont), "temp_font");
-				tmpfnt->pf = tpf;
-				tmpfnt->vfont = vfont;
-				BLI_addtail(&ttfdata, tmpfnt);
+				vfont->temp_pf = temp_pf;
 			}
 		}
 
@@ -324,7 +255,7 @@
 			if (cu->vfontbi) return(cu->vfontbi); else return(cu->vfont);
 		default:
 			return(cu->vfont);
-	}			
+	}
 }
 
 VFont *BKE_vfont_builtin_get(void)
@@ -344,6 +275,7 @@
 {
 	VChar *che = NULL;
 
+	/* TODO: use ghash */
 	for (che = vfd->characters.first; che; che = che->next) {
 		if (che->index == character)
 			break;

Modified: trunk/blender/source/blender/blenkernel/intern/packedFile.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/packedFile.c	2012-08-21 10:24:30 UTC (rev 50074)
+++ trunk/blender/source/blender/blenkernel/intern/packedFile.c	2012-08-21 10:39:02 UTC (rev 50075)
@@ -158,7 +158,17 @@
 	else
 		printf("freePackedFile: Trying to free a NULL pointer\n");
 }
-	
+
+PackedFile *dupPackedFileMemory(const PackedFile *pf_src)
+{
+	PackedFile *pf_dst;
+
+	pf_dst       = MEM_dupallocN(pf_src);
+	pf_dst->data = MEM_dupallocN(pf_src->data);
+
+	return pf_dst;
+}
+
 PackedFile *newPackedFileMemory(void *mem, int memlen)
 {
 	PackedFile *pf = MEM_callocN(sizeof(*pf), "PackedFile");

Modified: trunk/blender/source/blender/blenlib/BLI_vfontdata.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_vfontdata.h	2012-08-21 10:24:30 UTC (rev 50074)
+++ trunk/blender/source/blender/blenlib/BLI_vfontdata.h	2012-08-21 10:39:02 UTC (rev 50075)
@@ -39,14 +39,8 @@
 struct PackedFile;
 struct VFont;
 
-#define MAX_VF_CHARS 256
-
 typedef struct VFontData {
 	ListBase characters;
-	// ListBase nurbsbase[MAX_VF_CHARS];
-	// float	    resol[MAX_VF_CHARS];
-	// float	    width[MAX_VF_CHARS];
-	// float	    *points[MAX_VF_CHARS];
 	char name[128];
 } VFontData;
 
@@ -59,12 +53,6 @@
 	float           *points;
 } VChar;
 
-struct TmpFont {
-	struct TmpFont *next, *prev;
-	struct PackedFile *pf;
-	struct VFont *vfont;
-};
-
 /**
  * Construct a new VFontData structure from 
  * Freetype font data in a PackedFile.

Modified: trunk/blender/source/blender/blenlib/intern/freetypefont.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/freetypefont.c	2012-08-21 10:24:30 UTC (rev 50074)
+++ trunk/blender/source/blender/blenlib/intern/freetypefont.c	2012-08-21 10:39:02 UTC (rev 50075)
@@ -293,19 +293,12 @@
 {
 	/* Freetype2 */
 	FT_Face face;
-	struct TmpFont *tf;
 
-	/* Find the correct FreeType font */
-	tf = BKE_vfont_tmpfont_find(vfont);
-
-	/* What, no font found. Something strange here */
-	if (!tf) return FALSE;
-
 	/* Load the font to memory */
-	if (tf->pf) {
+	if (vfont->temp_pf) {
 		err = FT_New_Memory_Face(library,
-		                         tf->pf->data,
-		                         tf->pf->size,
+		                         vfont->temp_pf->data,
+		                         vfont->temp_pf->size,
 		                         0,
 		                         &face);
 		if (err) return FALSE;

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2012-08-21 10:24:30 UTC (rev 50074)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2012-08-21 10:39:02 UTC (rev 50075)
@@ -2913,6 +2913,7 @@
 static void direct_link_vfont(FileData *fd, VFont *vf)
 {
 	vf->data = NULL;

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list