From 5b10a4c713fbc831cc7bed16936b44ff65fd68b1 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Mon, 20 Aug 2018 17:01:06 +0000 Subject: Remove refcounting from CFPF_SkiaFont. The refcounting is useless, since CFPF_SkiaFontMgr always has a reference to the fonts anyway. Just make CFPF_SkiaFontMgr own the fonts, like on other platforms. Change-Id: Ifadb5c4e09f151ada4a0a68e0588166c2f2974d4 Reviewed-on: https://pdfium-review.googlesource.com/40610 Reviewed-by: Tom Sepez Commit-Queue: Lei Zhang --- core/fxge/android/cfpf_skiafont.cpp | 10 ---------- core/fxge/android/cfpf_skiafont.h | 7 +------ core/fxge/android/cfpf_skiafontmgr.cpp | 28 +++++++++++++--------------- core/fxge/android/cfpf_skiafontmgr.h | 2 +- core/fxge/android/cfx_androidfontinfo.cpp | 7 +------ 5 files changed, 16 insertions(+), 38 deletions(-) diff --git a/core/fxge/android/cfpf_skiafont.cpp b/core/fxge/android/cfpf_skiafont.cpp index 2d9f274219..2d4ff685b2 100644 --- a/core/fxge/android/cfpf_skiafont.cpp +++ b/core/fxge/android/cfpf_skiafont.cpp @@ -30,16 +30,6 @@ CFPF_SkiaFont::~CFPF_SkiaFont() { FXFT_Done_Face(m_Face); } -void CFPF_SkiaFont::Release() { - if (--m_dwRefCount == 0) - delete this; -} - -CFPF_SkiaFont* CFPF_SkiaFont::Retain() { - m_dwRefCount++; - return this; -} - ByteString CFPF_SkiaFont::GetFamilyName() { if (!m_Face) return ByteString(); diff --git a/core/fxge/android/cfpf_skiafont.h b/core/fxge/android/cfpf_skiafont.h index 4e3b02d892..0dfb14b238 100644 --- a/core/fxge/android/cfpf_skiafont.h +++ b/core/fxge/android/cfpf_skiafont.h @@ -20,9 +20,7 @@ class CFPF_SkiaFont { const CFPF_SkiaPathFont* pFont, uint32_t dwStyle, uint8_t uCharset); - - void Release(); - CFPF_SkiaFont* Retain(); + ~CFPF_SkiaFont(); bool IsValid() const { return !!m_Face; } @@ -41,14 +39,11 @@ class CFPF_SkiaFont { uint32_t GetFontData(uint32_t dwTable, uint8_t* pBuffer, uint32_t dwSize); private: - ~CFPF_SkiaFont(); - UnownedPtr const m_pFontMgr; UnownedPtr const m_pFont; const FXFT_Face m_Face; const uint32_t m_dwStyle; const uint8_t m_uCharset; - uint32_t m_dwRefCount = 0; }; #endif // CORE_FXGE_ANDROID_CFPF_SKIAFONT_H_ diff --git a/core/fxge/android/cfpf_skiafontmgr.cpp b/core/fxge/android/cfpf_skiafontmgr.cpp index cd6aab1f2d..f9afdabb93 100644 --- a/core/fxge/android/cfpf_skiafontmgr.cpp +++ b/core/fxge/android/cfpf_skiafontmgr.cpp @@ -7,6 +7,7 @@ #include "core/fxge/android/cfpf_skiafontmgr.h" #include +#include #include "core/fxcrt/fx_codepage.h" #include "core/fxcrt/fx_extension.h" @@ -228,9 +229,6 @@ uint32_t FPF_SkiaGetFaceCharset(TT_OS2* pOS2) { CFPF_SkiaFontMgr::CFPF_SkiaFontMgr() = default; CFPF_SkiaFontMgr::~CFPF_SkiaFontMgr() { - for (const auto& pair : m_FamilyFonts) - pair.second->Release(); - m_FamilyFonts.clear(); m_FontFaces.clear(); if (m_FTLibrary) @@ -256,7 +254,7 @@ CFPF_SkiaFont* CFPF_SkiaFontMgr::CreateFont(const ByteStringView& bsFamilyname, uint32_t dwHash = FPF_SKIAGetFamilyHash(bsFamilyname, dwStyle, uCharset); auto it = m_FamilyFonts.find(dwHash); if (it != m_FamilyFonts.end()) - return it->second->Retain(); + return it->second.get(); uint32_t dwFaceName = FPF_SKIANormalizeFontName(bsFamilyname); uint32_t dwSubst = FPF_SkiaGetSubstFont(dwFaceName, g_SkiaFontmap, @@ -319,17 +317,17 @@ CFPF_SkiaFont* CFPF_SkiaFontMgr::CreateFont(const ByteStringView& bsFamilyname, break; } } - if (pBestFont) { - CFPF_SkiaFont* pFont = - new CFPF_SkiaFont(this, pBestFont, dwStyle, uCharset); - pFont->Retain(); - if (pFont->IsValid()) { - m_FamilyFonts[dwHash] = pFont; - return pFont; - } - pFont->Release(); - } - return nullptr; + if (!pBestFont) + return nullptr; + + auto pFont = + pdfium::MakeUnique(this, pBestFont, dwStyle, uCharset); + if (!pFont->IsValid()) + return nullptr; + + CFPF_SkiaFont* pRet = pFont.get(); + m_FamilyFonts[dwHash] = std::move(pFont); + return pRet; } FXFT_Face CFPF_SkiaFontMgr::GetFontFace(const ByteStringView& bsFile, diff --git a/core/fxge/android/cfpf_skiafontmgr.h b/core/fxge/android/cfpf_skiafontmgr.h index 2c7d8679c5..a5ad5b4f77 100644 --- a/core/fxge/android/cfpf_skiafontmgr.h +++ b/core/fxge/android/cfpf_skiafontmgr.h @@ -39,7 +39,7 @@ class CFPF_SkiaFontMgr { bool m_bLoaded = false; FXFT_Library m_FTLibrary = nullptr; std::vector> m_FontFaces; - std::map m_FamilyFonts; + std::map> m_FamilyFonts; }; #endif // CORE_FXGE_ANDROID_CFPF_SKIAFONTMGR_H_ diff --git a/core/fxge/android/cfx_androidfontinfo.cpp b/core/fxge/android/cfx_androidfontinfo.cpp index 20776414ab..2b3b42cc32 100644 --- a/core/fxge/android/cfx_androidfontinfo.cpp +++ b/core/fxge/android/cfx_androidfontinfo.cpp @@ -77,9 +77,4 @@ bool CFX_AndroidFontInfo::GetFontCharset(void* hFont, int* charset) { return false; } -void CFX_AndroidFontInfo::DeleteFont(void* hFont) { - if (!hFont) - return; - - static_cast(hFont)->Release(); -} +void CFX_AndroidFontInfo::DeleteFont(void* hFont) {} -- cgit v1.2.3