summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Pena <npm@chromium.org>2017-03-21 11:39:24 -0400
committerNicolás Peña <npm@chromium.org>2017-03-21 15:40:58 +0000
commit76921113bf704588bd766b5b71d2df07a4ee0149 (patch)
tree420c17f89fdd5be1685963c5978e4fb630fdd77d
parent2079dce2ca47f3866f1dd5d51849c53362727f7b (diff)
downloadpdfium-76921113bf704588bd766b5b71d2df07a4ee0149.tar.xz
M58: Manual revert of: Avoid cloning in CPDF_ImageCacheEntry::ContinueGetCachedBitmap
Not cloning is causing issues when printing to XPS printer. I have no idea why. CL being reverted: https://codereview.chromium.org/2518063005/ BUG=698350 Change-Id: I7c814c712f9959d10d0b6502a28e15ecd752f94a Reviewed-on: https://pdfium-review.googlesource.com/2930 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org> (cherry picked from commit 1704350a92234b1e38f0a84010ddf9ecdfce48f8) Change-Id: I267f43c7839b8428fb646af776b81c5f3a5e8d2b Reviewed-on: https://pdfium-review.googlesource.com/3133 Reviewed-by: Nicolás Peña <npm@chromium.org>
-rw-r--r--core/fpdfapi/render/cpdf_imagecacheentry.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/core/fpdfapi/render/cpdf_imagecacheentry.cpp b/core/fpdfapi/render/cpdf_imagecacheentry.cpp
index f11cae888d..82b6117f86 100644
--- a/core/fpdfapi/render/cpdf_imagecacheentry.cpp
+++ b/core/fpdfapi/render/cpdf_imagecacheentry.cpp
@@ -97,11 +97,21 @@ void CPDF_ImageCacheEntry::ContinueGetCachedBitmap() {
CPDF_RenderContext* pContext = m_pRenderStatus->GetContext();
CPDF_PageRenderCache* pPageRenderCache = pContext->GetPageCache();
m_dwTimeCount = pPageRenderCache->GetTimeCount();
- m_pCachedBitmap = pdfium::WrapUnique<CFX_DIBSource>(m_pCurBitmap);
- if (m_pCurMask)
- m_pCachedMask = pdfium::WrapUnique<CFX_DIBSource>(m_pCurMask);
- else
- m_pCurMask = m_pCachedMask.get();
+ if (m_pCurBitmap->GetPitch() * m_pCurBitmap->GetHeight() <
+ FPDF_HUGE_IMAGE_SIZE) {
+ m_pCachedBitmap = m_pCurBitmap->Clone();
+ delete m_pCurBitmap;
+ m_pCurBitmap = nullptr;
+ } else {
+ m_pCachedBitmap = pdfium::WrapUnique<CFX_DIBSource>(m_pCurBitmap);
+ }
+ if (m_pCurMask) {
+ m_pCachedMask = m_pCurMask->Clone();
+ delete m_pCurMask;
+ m_pCurMask = nullptr;
+ }
+ m_pCurBitmap = m_pCachedBitmap.get();
+ m_pCurMask = m_pCachedMask.get();
CalcSize();
}