#ifdef ENABLE_VECTOR_BASED_TEXT_RENDERING
delete mVectorFontCache;
#endif
-
+ DestroyMatchedPatterns();
FT_Done_FreeType( mFreeTypeLibrary );
}
FcCharSet* characterSet = NULL;
FcPatternGetCharSet( match, FC_CHARSET, 0u, &characterSet );
- FcPatternDestroy( match );
FcPatternDestroy( pattern );
+ mMatchedFcPatternCache.PushBack( match );
mFontCache[id-1u].mCharacterSet = characterSet;
// Add the path to the cache.
}
}
-FcCharSet* FontClient::Plugin::CreateCharacterSetFromDescription( const FontDescription& description ) const
+FcCharSet* FontClient::Plugin::CreateCharacterSetFromDescription( const FontDescription& description )
{
FcCharSet* characterSet = NULL;
FcPattern* match = FcFontMatch( NULL, pattern, &result );
FcPatternGetCharSet( match, FC_CHARSET, 0u, &characterSet );
+ mMatchedFcPatternCache.PushBack( match );
- FcPatternDestroy( match );
FcPatternDestroy( pattern );
}
return characterSet;
}
+void FontClient::Plugin::DestroyMatchedPatterns()
+{
+ for (auto & object : mMatchedFcPatternCache) {
+ FcPatternDestroy(reinterpret_cast<FcPattern*>(object));
+ }
+ mMatchedFcPatternCache.Clear();
+}
+
} // namespace Internal
} // namespace TextAbstraction