summaryrefslogtreecommitdiff
path: root/core/fpdfapi/render/cpdf_pagerendercache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/render/cpdf_pagerendercache.cpp')
-rw-r--r--core/fpdfapi/render/cpdf_pagerendercache.cpp27
1 files changed, 9 insertions, 18 deletions
diff --git a/core/fpdfapi/render/cpdf_pagerendercache.cpp b/core/fpdfapi/render/cpdf_pagerendercache.cpp
index dfd05bc494..f58837a794 100644
--- a/core/fpdfapi/render/cpdf_pagerendercache.cpp
+++ b/core/fpdfapi/render/cpdf_pagerendercache.cpp
@@ -28,17 +28,9 @@ struct CacheInfo {
} // namespace
-CPDF_PageRenderCache::CPDF_PageRenderCache(CPDF_Page* pPage)
- : m_pPage(pPage),
- m_pCurImageCacheEntry(nullptr),
- m_nTimeCount(0),
- m_nCacheSize(0),
- m_bCurFindCache(false) {}
-
-CPDF_PageRenderCache::~CPDF_PageRenderCache() {
- for (const auto& it : m_ImageCache)
- delete it.second;
-}
+CPDF_PageRenderCache::CPDF_PageRenderCache(CPDF_Page* pPage) : m_pPage(pPage) {}
+
+CPDF_PageRenderCache::~CPDF_PageRenderCache() = default;
void CPDF_PageRenderCache::CacheOptimization(int32_t dwLimitCacheSize) {
if (m_nCacheSize <= (uint32_t)dwLimitCacheSize)
@@ -76,7 +68,6 @@ void CPDF_PageRenderCache::ClearImageCacheEntry(CPDF_Stream* pStream) {
return;
m_nCacheSize -= it->second->EstimateSize();
- delete it->second;
m_ImageCache.erase(it);
}
@@ -90,10 +81,10 @@ bool CPDF_PageRenderCache::StartGetCachedBitmap(
const auto it = m_ImageCache.find(pStream);
m_bCurFindCache = it != m_ImageCache.end();
if (m_bCurFindCache) {
- m_pCurImageCacheEntry = it->second;
+ m_pCurImageCacheEntry = it->second.get();
} else {
- m_pCurImageCacheEntry =
- new CPDF_ImageCacheEntry(m_pPage->GetDocument(), pImage);
+ m_pCurImageCacheEntry = pdfium::MakeUnique<CPDF_ImageCacheEntry>(
+ m_pPage->GetDocument(), pImage);
}
CPDF_DIBBase::LoadState ret = m_pCurImageCacheEntry->StartGetCachedBitmap(
pRenderStatus->GetFormResource(), m_pPage->m_pPageResources.Get(), bStdCS,
@@ -103,7 +94,7 @@ bool CPDF_PageRenderCache::StartGetCachedBitmap(
m_nTimeCount++;
if (!m_bCurFindCache)
- m_ImageCache[pStream] = m_pCurImageCacheEntry;
+ m_ImageCache[pStream] = m_pCurImageCacheEntry.Release();
if (ret == CPDF_DIBBase::LoadState::kFail)
m_nCacheSize += m_pCurImageCacheEntry->EstimateSize();
@@ -120,7 +111,7 @@ bool CPDF_PageRenderCache::Continue(PauseIndicatorIface* pPause,
m_nTimeCount++;
if (!m_bCurFindCache) {
m_ImageCache[m_pCurImageCacheEntry->GetImage()->GetStream()] =
- m_pCurImageCacheEntry;
+ m_pCurImageCacheEntry.Release();
}
m_nCacheSize += m_pCurImageCacheEntry->EstimateSize();
return false;
@@ -133,7 +124,7 @@ void CPDF_PageRenderCache::ResetBitmap(const RetainPtr<CPDF_Image>& pImage) {
if (it == m_ImageCache.end())
return;
- pEntry = it->second;
+ pEntry = it->second.get();
m_nCacheSize -= pEntry->EstimateSize();
pEntry->Reset(nullptr);
m_nCacheSize += pEntry->EstimateSize();