[Bf-committers] FIX: [ #1980 ] Change Font Size, Crash

Jacques Beaurain jbeaurain at istop.com
Wed Dec 8 11:25:46 CET 2004


Hi,

I figured this one out. Should be able to reproduce on vanilla system on 
any platform where you start out without International Fonts switched 
on. The crash happened on line 245 of FTF_TTFont.cpp. The reason was 
that the SetFont member would not have been called at this stage because 
fonts are only refreshed on startup at the moment. Here is a patch that 
fixes this.

Cheers,
Jacques
-------------- next part --------------
Index: source/blender/include/BIF_language.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/include/BIF_language.h,v
retrieving revision 1.4
diff -u -r1.4 BIF_language.h
--- source/blender/include/BIF_language.h	20 Oct 2003 15:40:18 -0000	1.4
+++ source/blender/include/BIF_language.h	8 Dec 2004 09:59:06 -0000
@@ -35,18 +35,19 @@
 
 struct BMF_Font;
 
-int  read_languagefile(void);		/* usiblender.c */
-void free_languagemenu(void);		/* usiblender.c */
+int  read_languagefile(void);		/* language.c */
+void free_languagemenu(void);		/* language.c */
 
-void set_interface_font(char *str); /* headerbuttons.c */
-void start_interface_font(void);	/* headerbuttons.c */
-void lang_setlanguage(void);		/* usiblender.c */
+void set_interface_font(char *str); /* language.c */
+void start_interface_font(void);	/* language.c */
+void refresh_interface_font(void);	/* language.c */
+void lang_setlanguage(void);		/* language.c */
 
-char *language_pup(void);
-char *fontsize_pup(void);
+char *language_pup(void);			/* language.c */
+char *fontsize_pup(void);			/* language.c */
 
-int BIF_DrawString(struct BMF_Font* font, char *str, int translate);
-float BIF_GetStringWidth(struct BMF_Font* font, char *str, int translate);
+int BIF_DrawString(struct BMF_Font* font, char *str, int translate);		/* language.c */
+float BIF_GetStringWidth(struct BMF_Font* font, char *str, int translate);	/* language.c */
 
 #endif /* BIF_LANGUAGE_H */
 
Index: source/blender/src/header_info.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/header_info.c,v
retrieving revision 1.50
diff -u -r1.50 header_info.c
--- source/blender/src/header_info.c	11 Nov 2004 23:58:05 -0000	1.50
+++ source/blender/src/header_info.c	8 Dec 2004 10:07:05 -0000
@@ -900,6 +900,7 @@
 		
 			BKE_reset_undo();
 			BKE_write_undo("original");	/* save current state */
+			refresh_interface_font();
 		}
 		break;
 	case 31: /* save default settings */
Index: source/blender/src/language.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/language.c,v
retrieving revision 1.27
diff -u -r1.27 language.c
--- source/blender/src/language.c	8 Nov 2004 15:46:57 -0000	1.27
+++ source/blender/src/language.c	8 Dec 2004 10:07:05 -0000
@@ -348,6 +348,18 @@
 }
 
 
+void refresh_interface_font(void) 
+{
+#ifdef INTERNATIONAL
+	if(U.transopts & USER_DOTRANSLATE)
+		start_interface_font();
+	else
+		G.ui_international = FALSE;
+#else // INTERNATIONAL
+	G.ui_international = FALSE;
+#endif // INTERNATIONAL
+}
+
 void free_languagemenu(void)
 {
 	LANGMenuEntry *lme= langmenu;
Index: source/blender/src/usiblender.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/usiblender.c,v
retrieving revision 1.67
diff -u -r1.67 usiblender.c
--- source/blender/src/usiblender.c	4 Dec 2004 17:52:44 -0000	1.67
+++ source/blender/src/usiblender.c	8 Dec 2004 10:07:05 -0000
@@ -149,6 +149,7 @@
 		undo_editmode_clear();
 		BKE_reset_undo();
 		BKE_write_undo("original");	/* save current state */
+		refresh_interface_font();
 	}
 	else BIF_undo_push("Import file");
 }
@@ -279,13 +280,9 @@
 
 #ifdef INTERNATIONAL
 		read_languagefile();
-	
-		if(U.transopts & USER_DOTRANSLATE)
-			start_interface_font();
-		else
-			G.ui_international = FALSE;
 #endif // INTERNATIONAL
 
+		refresh_interface_font();
 	}
 
 	return success;


More information about the Bf-committers mailing list