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; }