From 3f5eacff021c61b92c05971817bcfeeb68897a3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sat, 26 Nov 2005 22:26:50 +0000 Subject: [PATCH] Quick and dirty hack to let those font rendering problems disappear - I don't really know what's going on, but this appears to fix it. And since we'll get a new glyph layout backend sooner or later, I don't want to mess with that stuff again. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15176 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/servers/app/FontFamily.h | 5 ++++- src/servers/app/FontFamily.cpp | 20 ++++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/headers/private/servers/app/FontFamily.h b/headers/private/servers/app/FontFamily.h index 6d61ad3aa7..b513a9c73f 100644 --- a/headers/private/servers/app/FontFamily.h +++ b/headers/private/servers/app/FontFamily.h @@ -66,7 +66,7 @@ class FontKey : public Hashable { FontStyle objects help abstract a lot of the font engine details while still offering plenty of information the style in question. */ -class FontStyle : public ReferenceCounting, public Hashable, public BLocker { +class FontStyle : public ReferenceCounting, public Hashable/*, public BLocker*/ { public: FontStyle(node_ref& nodeRef, const char* path, FT_Face face); virtual ~FontStyle(); @@ -76,6 +76,9 @@ class FontStyle : public ReferenceCounting, public Hashable, public BLocker { const node_ref& NodeRef() const { return fNodeRef; } + bool Lock(); + void Unlock(); + /*! \fn bool FontStyle::IsFixedWidth(void) \brief Determines whether the font's character width is fixed diff --git a/src/servers/app/FontFamily.cpp b/src/servers/app/FontFamily.cpp index d8da5e2893..6db6d3baf8 100644 --- a/src/servers/app/FontFamily.cpp +++ b/src/servers/app/FontFamily.cpp @@ -21,6 +21,8 @@ const uint32 kInvalidFamilyFlags = ~0UL; +static BLocker sFontLock("font lock"); + static int font_score(const FontStyle* style) @@ -56,7 +58,7 @@ compare_font_styles(const FontStyle* a, const FontStyle* b) \param face FreeType handle for the font file after it is loaded - it will be kept open until the FontStyle is destroied */ FontStyle::FontStyle(node_ref& nodeRef, const char* path, FT_Face face) - : BLocker(BString("FontStyle_").Append(face->style_name).String()), + : //BLocker(BString("FontStyle_").Append(face->style_name).String()), fFreeTypeFace(face), fName(face->style_name), fPath(path), @@ -107,6 +109,20 @@ FontStyle::CompareTo(Hashable& other) const } +bool +FontStyle::Lock() +{ + return sFontLock.Lock(); +} + + +void +FontStyle::Unlock() +{ + return sFontLock.Unlock(); +} + + void FontStyle::GetHeight(float size, font_height& height) const { @@ -171,7 +187,7 @@ FontStyle::PreservedFace(uint16 face) const status_t FontStyle::UpdateFace(FT_Face face) { - if (!IsLocked()) { + if (!sFontLock.IsLocked()) { debugger("UpdateFace() called without having locked FontStyle!"); return B_ERROR; }