X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Ftext%2Ftext-abstraction%2Ffont-client-plugin-impl.cpp;h=14efb7b56135101d22c5f6c2acbf365035b57bb7;hb=16784fe4b4ef0eb3a542fbaf4f6a13fdbadedb08;hp=faa61f082fcf8912a77f2885b7a895c50b85b27c;hpb=b2c082b9f256fb88769cb9d79210b1593ec18a33;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/text/text-abstraction/font-client-plugin-impl.cpp b/dali/internal/text/text-abstraction/font-client-plugin-impl.cpp index faa61f0..14efb7b 100644 --- a/dali/internal/text/text-abstraction/font-client-plugin-impl.cpp +++ b/dali/internal/text/text-abstraction/font-client-plugin-impl.cpp @@ -252,7 +252,7 @@ FontClient::Plugin::~Plugin() #ifdef ENABLE_VECTOR_BASED_TEXT_RENDERING delete mVectorFontCache; #endif - + DestroyMatchedPatterns(); FT_Done_FreeType( mFreeTypeLibrary ); } @@ -1955,9 +1955,9 @@ void FontClient::Plugin::CacheFontPath( FT_Face ftFace, FontId id, PointSize26Do 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. @@ -1977,7 +1977,7 @@ void FontClient::Plugin::CacheFontPath( FT_Face ftFace, FontId id, PointSize26Do } } -FcCharSet* FontClient::Plugin::CreateCharacterSetFromDescription( const FontDescription& description ) const +FcCharSet* FontClient::Plugin::CreateCharacterSetFromDescription( const FontDescription& description ) { FcCharSet* characterSet = NULL; @@ -1989,14 +1989,22 @@ FcCharSet* FontClient::Plugin::CreateCharacterSetFromDescription( const FontDesc 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(object)); + } + mMatchedFcPatternCache.Clear(); +} + } // namespace Internal } // namespace TextAbstraction