diff options
author | Lei Zhang <thestig@chromium.org> | 2018-08-20 17:01:06 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-08-20 17:01:06 +0000 |
commit | 5b10a4c713fbc831cc7bed16936b44ff65fd68b1 (patch) | |
tree | a0e7d9c3ade6ec0318b5464cfcd14aefef23b3a1 | |
parent | 032b3bed2b1888f1226e1d940fe41e9a09d2336c (diff) | |
download | pdfium-chromium/3529.tar.xz |
Remove refcounting from CFPF_SkiaFont.chromium/3529
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 <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
-rw-r--r-- | core/fxge/android/cfpf_skiafont.cpp | 10 | ||||
-rw-r--r-- | core/fxge/android/cfpf_skiafont.h | 7 | ||||
-rw-r--r-- | core/fxge/android/cfpf_skiafontmgr.cpp | 28 | ||||
-rw-r--r-- | core/fxge/android/cfpf_skiafontmgr.h | 2 | ||||
-rw-r--r-- | 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<CFPF_SkiaFontMgr> const m_pFontMgr; UnownedPtr<const CFPF_SkiaPathFont> 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 <algorithm> +#include <utility> #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<CFPF_SkiaFont>(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<std::unique_ptr<CFPF_SkiaPathFont>> m_FontFaces; - std::map<uint32_t, CFPF_SkiaFont*> m_FamilyFonts; + std::map<uint32_t, std::unique_ptr<CFPF_SkiaFont>> 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<CFPF_SkiaFont*>(hFont)->Release(); -} +void CFX_AndroidFontInfo::DeleteFont(void* hFont) {} |