summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBo Xu <bo_xu@foxitsoftware.com>2014-09-16 13:24:37 -0700
committerJun Fang <jun_fang@foxitsoftware.com>2014-09-29 12:36:25 -0700
commitebd58e74e86db32f60219dbe459ebd8b1678a097 (patch)
treeb09d59d4aca81166da8431d04ba3e77cd11062b2
parente7e9da54a57f73b995b8aa213a675de7fcdc61cf (diff)
downloadpdfium-ebd58e74e86db32f60219dbe459ebd8b1678a097.tar.xz
When forcing clear page data, no need to release colorspace when releasing pattern
BUG=414661 R=tsepez@chromium.org Review URL: https://codereview.chromium.org/572853006 Conflicts: core/include/fpdfapi/fpdf_resource.h core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp
-rw-r--r--core/include/fpdfapi/fpdf_resource.h4
-rw-r--r--core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp1
-rw-r--r--core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp4
3 files changed, 5 insertions, 4 deletions
diff --git a/core/include/fpdfapi/fpdf_resource.h b/core/include/fpdfapi/fpdf_resource.h
index 25256fa86a..dfbe0c3cee 100644
--- a/core/include/fpdfapi/fpdf_resource.h
+++ b/core/include/fpdfapi/fpdf_resource.h
@@ -730,7 +730,7 @@ class CPDF_Pattern : public CFX_Object
public:
virtual ~CPDF_Pattern();
- void SaveColor(CPDF_Color* pColor) {m_pColor = pColor;}
+ void SetForceClear(FX_BOOL bForceClear) { m_bForceClear = bForceClear; }
CPDF_Object* m_pPatternObj;
@@ -743,8 +743,8 @@ public:
CPDF_Color* m_pColor;
protected:
-
CPDF_Pattern(const CFX_AffineMatrix* pParentMatrix);
+ FX_BOOL m_bForceClear;
};
class CPDF_TilingPattern : public CPDF_Pattern
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp
index 131edbe9b5..77db4534fb 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp
@@ -229,6 +229,7 @@ void CPDF_DocPageData::Clear(FX_BOOL bForceRelease)
m_PatternMap.GetNextAssoc(pos, ptObj, ptData);
nCount = ptData->m_nCount;
if (bForceRelease || nCount < 2) {
+ ptData->m_Obj->SetForceClear(bForceRelease);
delete ptData->m_Obj;
ptData->m_Obj = NULL;
}
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp
index c7c1e7a565..c4de9e14dd 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp
@@ -8,7 +8,7 @@
#include "pageint.h"
CPDF_Pattern::CPDF_Pattern(const CFX_AffineMatrix* pParentMatrix) :
- m_pPatternObj(NULL), m_PatternType(PATTERN_TILING), m_pDocument(NULL), m_pColor(NULL)
+ m_pPatternObj(NULL), m_PatternType(PATTERN_TILING), m_pDocument(NULL), m_bForceClear(FALSE)
{
if (pParentMatrix) {
m_ParentMatrix = *pParentMatrix;
@@ -102,7 +102,7 @@ void CPDF_ShadingPattern::Clear()
m_pFunctions[i] = NULL;
}
CPDF_ColorSpace* pCS = m_pCS;
- if (pCS && m_pDocument) {
+ if (!m_bForceClear && pCS && m_pDocument) {
m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray());
}
m_ShadingType = 0;