Fixed now.
On Sat, Jun 29, 2013 at 12:05 PM, Ton Roosendaal <[email protected]> wrote: > Hi Brecht, > > Buildbot, scons compile error in Windows: > > Compiling ==> 'blf.c' > blf.c > source\blender\blenlib\BLI_threads.h(38) : fatal error C1083: Cannot open > include file: 'pthread.h': No such file or directory > scons: building terminated because of errors. > > No idea why... Windows include files is not my territory :) > > -Ton- > > -------------------------------------------------------- > Ton Roosendaal - [email protected] - www.blender.org > Chairman Blender Foundation - Producer Blender Institute > Entrepotdok 57A - 1018AD Amsterdam - The Netherlands > > > > On 28 Jun, 2013, at 15:05, Brecht Van Lommel wrote: > >> Revision: 57845 >> >> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57845 >> Author: blendix >> Date: 2013-06-28 13:05:15 +0000 (Fri, 28 Jun 2013) >> Log Message: >> ----------- >> Fix #35884: crash opening .blend with generated color grid image and preview >> render. >> >> Printing text on the color grid image would initialize font glyphs from a >> thread at >> the same time as the UI, causing conflicts. The freetype glyph renderer >> needs to be >> mutex locked because it uses a shared buffer internally even when rendering >> for >> different fonts. Also needed to change the image generate function to use >> the render >> monospace font to avoid conflicts in blenfont. >> >> What's still weak in the blenfont API is that there is no distinction >> between a font >> and a thread using that font to render with some particular size, style, etc. >> >> Modified Paths: >> -------------- >> trunk/blender/source/blender/blenfont/intern/blf.c >> trunk/blender/source/blender/blenfont/intern/blf_dir.c >> trunk/blender/source/blender/blenfont/intern/blf_font.c >> trunk/blender/source/blender/blenfont/intern/blf_glyph.c >> trunk/blender/source/blender/blenfont/intern/blf_internal_types.h >> trunk/blender/source/blender/blenkernel/intern/image_gen.c >> >> Modified: trunk/blender/source/blender/blenfont/intern/blf.c >> =================================================================== >> --- trunk/blender/source/blender/blenfont/intern/blf.c 2013-06-28 >> 06:54:49 UTC (rev 57844) >> +++ trunk/blender/source/blender/blenfont/intern/blf.c 2013-06-28 >> 13:05:15 UTC (rev 57845) >> @@ -44,6 +44,7 @@ >> #include "DNA_vec_types.h" >> >> #include "BLI_math.h" >> +#include "BLI_threads.h" >> >> #include "BIF_gl.h" >> #include "BLF_api.h" >> >> Modified: trunk/blender/source/blender/blenfont/intern/blf_dir.c >> =================================================================== >> --- trunk/blender/source/blender/blenfont/intern/blf_dir.c 2013-06-28 >> 06:54:49 UTC (rev 57844) >> +++ trunk/blender/source/blender/blenfont/intern/blf_dir.c 2013-06-28 >> 13:05:15 UTC (rev 57845) >> @@ -46,6 +46,7 @@ >> #include "BLI_listbase.h" >> #include "BLI_path_util.h" >> #include "BLI_string.h" >> +#include "BLI_threads.h" >> >> #include "BIF_gl.h" >> >> >> Modified: trunk/blender/source/blender/blenfont/intern/blf_font.c >> =================================================================== >> --- trunk/blender/source/blender/blenfont/intern/blf_font.c 2013-06-28 >> 06:54:49 UTC (rev 57844) >> +++ trunk/blender/source/blender/blenfont/intern/blf_font.c 2013-06-28 >> 13:05:15 UTC (rev 57845) >> @@ -48,6 +48,7 @@ >> #include "BLI_rect.h" >> #include "BLI_string.h" >> #include "BLI_string_utf8.h" >> +#include "BLI_threads.h" >> #include "BLI_linklist.h" /* linknode */ >> >> #include "BIF_gl.h" >> @@ -64,15 +65,18 @@ >> >> /* freetype2 handle ONLY for this file!. */ >> static FT_Library ft_lib; >> +static SpinLock ft_lib_mutex; >> >> int blf_font_init(void) >> { >> + BLI_spin_init(&ft_lib_mutex); >> return FT_Init_FreeType(&ft_lib); >> } >> >> void blf_font_exit(void) >> { >> FT_Done_FreeType(ft_lib); >> + BLI_spin_end(&ft_lib_mutex); >> } >> >> void blf_font_size(FontBLF *font, unsigned int size, unsigned int dpi) >> @@ -572,6 +576,7 @@ >> font->buf_info.col[3] = 0; >> >> font->ft_lib = ft_lib; >> + font->ft_lib_mutex = &ft_lib_mutex; >> } >> >> FontBLF *blf_font_new(const char *name, const char *filename) >> >> Modified: trunk/blender/source/blender/blenfont/intern/blf_glyph.c >> =================================================================== >> --- trunk/blender/source/blender/blenfont/intern/blf_glyph.c 2013-06-28 >> 06:54:49 UTC (rev 57844) >> +++ trunk/blender/source/blender/blenfont/intern/blf_glyph.c 2013-06-28 >> 13:05:15 UTC (rev 57845) >> @@ -48,6 +48,7 @@ >> >> #include "BLI_listbase.h" >> #include "BLI_rect.h" >> +#include "BLI_threads.h" >> >> #include "BIF_gl.h" >> #include "BLF_api.h" >> @@ -224,6 +225,19 @@ >> if (g) >> return g; >> >> + /* glyphs are dynamically created as needed by font rendering. this >> means that >> + * to make font rendering thread safe we have to do locking here. note >> that this >> + * must be a lock for the whole library and not just per font, because >> the font >> + * renderer uses a shared buffer internally */ >> + BLI_spin_lock(font->ft_lib_mutex); >> + >> + /* search again after locking */ >> + g = blf_glyph_search(font->glyph_cache, c); >> + if (g) { >> + BLI_spin_unlock(font->ft_lib_mutex); >> + return g; >> + } >> + >> if (font->flags & BLF_HINTING) >> flags &= ~FT_LOAD_NO_HINTING; >> >> @@ -231,8 +245,11 @@ >> err = FT_Load_Glyph(font->face, (FT_UInt)index, >> FT_LOAD_TARGET_MONO); >> else >> err = FT_Load_Glyph(font->face, (FT_UInt)index, flags); >> - if (err) >> + >> + if (err) { >> + BLI_spin_unlock(font->ft_lib_mutex); >> return NULL; >> + } >> >> /* get the glyph. */ >> slot = font->face->glyph; >> @@ -251,8 +268,10 @@ >> err = FT_Render_Glyph(slot, FT_RENDER_MODE_NORMAL); >> } >> >> - if (err || slot->format != FT_GLYPH_FORMAT_BITMAP) >> + if (err || slot->format != FT_GLYPH_FORMAT_BITMAP) { >> + BLI_spin_unlock(font->ft_lib_mutex); >> return NULL; >> + } >> >> g = (GlyphBLF *)MEM_callocN(sizeof(GlyphBLF), "blf_glyph_add"); >> g->c = c; >> @@ -289,6 +308,9 @@ >> >> key = blf_hash(g->c); >> BLI_addhead(&(font->glyph_cache->bucket[key]), g); >> + >> + BLI_spin_unlock(font->ft_lib_mutex); >> + >> return g; >> } >> >> >> Modified: trunk/blender/source/blender/blenfont/intern/blf_internal_types.h >> =================================================================== >> --- trunk/blender/source/blender/blenfont/intern/blf_internal_types.h >> 2013-06-28 06:54:49 UTC (rev 57844) >> +++ trunk/blender/source/blender/blenfont/intern/blf_internal_types.h >> 2013-06-28 13:05:15 UTC (rev 57845) >> @@ -217,6 +217,9 @@ >> /* freetype2 lib handle. */ >> FT_Library ft_lib; >> >> + /* Mutex lock for library */ >> + SpinLock *ft_lib_mutex; >> + >> /* freetype2 face. */ >> FT_Face face; >> >> >> Modified: trunk/blender/source/blender/blenkernel/intern/image_gen.c >> =================================================================== >> --- trunk/blender/source/blender/blenkernel/intern/image_gen.c >> 2013-06-28 06:54:49 UTC (rev 57844) >> +++ trunk/blender/source/blender/blenkernel/intern/image_gen.c >> 2013-06-28 13:05:15 UTC (rev 57845) >> @@ -287,7 +287,7 @@ >> int x, y; >> int pen_x, pen_y; >> char text[3] = {'A', '1', '\0'}; >> - const int mono = blf_mono_font; >> + const int mono = blf_mono_font_render; >> >> BLF_size(mono, 54, 72); /* hard coded size! */ >> >> >> _______________________________________________ >> Bf-blender-cvs mailing list >> [email protected] >> http://lists.blender.org/mailman/listinfo/bf-blender-cvs > > _______________________________________________ > Bf-committers mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-committers _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
