diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-06-15 16:58:19 -0700 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-06-15 16:58:19 -0700 |
commit | 3403db90496fc87269d7bb1d033347ee19fc0c38 (patch) | |
tree | 5a021983df77507ccead2cdb6faef4f2b6294c04 /core/src/fpdfapi/fpdf_render | |
parent | 366e1c47335717b73d14b804020291758c8afc38 (diff) | |
download | pdfium-3403db90496fc87269d7bb1d033347ee19fc0c38.tar.xz |
Merge to XFA: Provide a constructor for CPDF_CountedObject.
Original Review URL: https://codereview.chromium.org/1182903002.
TBR=thestig@chromium.org
Review URL: https://codereview.chromium.org/1191553005.
Diffstat (limited to 'core/src/fpdfapi/fpdf_render')
-rw-r--r-- | core/src/fpdfapi/fpdf_render/fpdf_render.cpp | 42 | ||||
-rw-r--r-- | core/src/fpdfapi/fpdf_render/render_int.h | 4 |
2 files changed, 19 insertions, 27 deletions
diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp index e111976e98..01bec5bcb7 100644 --- a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp +++ b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp @@ -26,10 +26,10 @@ void CPDF_DocRenderData::Clear(FX_BOOL bRelease) pos = m_Type3FaceMap.GetStartPosition(); while (pos) { CPDF_Font* pFont; - CPDF_CountedObject<CPDF_Type3Cache*>* cache; + CPDF_CountedObject<CPDF_Type3Cache>* cache; m_Type3FaceMap.GetNextAssoc(pos, pFont, cache); - if (bRelease || cache->m_nCount < 2) { - delete cache->m_Obj; + if (bRelease || cache->use_count() < 2) { + delete cache->get(); delete cache; m_Type3FaceMap.RemoveKey(pFont); } @@ -39,10 +39,10 @@ void CPDF_DocRenderData::Clear(FX_BOOL bRelease) pos = m_TransferFuncMap.GetStartPosition(); while (pos) { CPDF_Object* key; - CPDF_CountedObject<CPDF_TransferFunc*>* value; + CPDF_CountedObject<CPDF_TransferFunc>* value; m_TransferFuncMap.GetNextAssoc(pos, key, value); - if (bRelease || value->m_nCount < 2) { - delete value->m_Obj; + if (bRelease || value->use_count() < 2) { + delete value->get(); delete value; m_TransferFuncMap.RemoveKey(key); } @@ -64,24 +64,19 @@ FX_BOOL CPDF_DocRenderData::Initialize() } CPDF_Type3Cache* CPDF_DocRenderData::GetCachedType3(CPDF_Type3Font* pFont) { - CPDF_CountedObject<CPDF_Type3Cache*>* pCache; + CPDF_CountedObject<CPDF_Type3Cache>* pCache; if (!m_Type3FaceMap.Lookup(pFont, pCache)) { CPDF_Type3Cache* pType3 = new CPDF_Type3Cache(pFont); - pCache = new CPDF_CountedObject<CPDF_Type3Cache*>; - pCache->m_Obj = pType3; - pCache->m_nCount = 1; + pCache = new CPDF_CountedObject<CPDF_Type3Cache>(pType3); m_Type3FaceMap.SetAt(pFont, pCache); } - pCache->m_nCount++; - return pCache->m_Obj; + return pCache->AddRef(); } void CPDF_DocRenderData::ReleaseCachedType3(CPDF_Type3Font* pFont) { - CPDF_CountedObject<CPDF_Type3Cache*>* pCache; - if (!m_Type3FaceMap.Lookup(pFont, pCache)) { - return; - } - pCache->m_nCount--; + CPDF_CountedObject<CPDF_Type3Cache>* pCache; + if (m_Type3FaceMap.Lookup(pFont, pCache)) + pCache->RemoveRef(); } class CPDF_RenderModule : public CPDF_RenderModuleDef { @@ -1184,7 +1179,7 @@ CPDF_TransferFunc* CPDF_DocRenderData::GetTransferFunc(CPDF_Object* pObj) if (pObj == NULL) { return NULL; } - CPDF_CountedObject<CPDF_TransferFunc*>* pTransferCounter; + CPDF_CountedObject<CPDF_TransferFunc>* pTransferCounter; if (!m_TransferFuncMap.Lookup(pObj, pTransferCounter)) { CPDF_TransferFunc* pTransfer = NULL; CPDF_Function* pFuncs[3] = {NULL, NULL, NULL}; @@ -1211,9 +1206,7 @@ CPDF_TransferFunc* CPDF_DocRenderData::GetTransferFunc(CPDF_Object* pObj) } pTransfer = new CPDF_TransferFunc; pTransfer->m_pPDFDoc = m_pPDFDoc; - pTransferCounter = new CPDF_CountedObject<CPDF_TransferFunc*>; - pTransferCounter->m_nCount = 1; - pTransferCounter->m_Obj = pTransfer; + pTransferCounter = new CPDF_CountedObject<CPDF_TransferFunc>(pTransfer); m_TransferFuncMap.SetAt(pObj, pTransferCounter); static const int kMaxOutputs = 16; FX_FLOAT output[kMaxOutputs]; @@ -1253,16 +1246,15 @@ CPDF_TransferFunc* CPDF_DocRenderData::GetTransferFunc(CPDF_Object* pObj) } pTransfer->m_bIdentity = bIdentity; } - pTransferCounter->m_nCount++; - return pTransferCounter->m_Obj; + return pTransferCounter->AddRef(); } void CPDF_DocRenderData::ReleaseTransferFunc(CPDF_Object* pObj) { - CPDF_CountedObject<CPDF_TransferFunc*>* pTransferCounter; + CPDF_CountedObject<CPDF_TransferFunc>* pTransferCounter; if (!m_TransferFuncMap.Lookup(pObj, pTransferCounter)) { return; } - pTransferCounter->m_nCount--; + pTransferCounter->RemoveRef(); } CPDF_RenderConfig::CPDF_RenderConfig() { diff --git a/core/src/fpdfapi/fpdf_render/render_int.h b/core/src/fpdfapi/fpdf_render/render_int.h index 8d40b17f85..7aa8358b8d 100644 --- a/core/src/fpdfapi/fpdf_render/render_int.h +++ b/core/src/fpdfapi/fpdf_render/render_int.h @@ -52,8 +52,8 @@ public: CFX_DIBSource* TranslateImage(const CFX_DIBSource* pSrc, FX_BOOL bAutoDropSrc); FX_COLORREF TranslateColor(FX_COLORREF src); }; -typedef CFX_MapPtrTemplate<CPDF_Font*, CPDF_CountedObject<CPDF_Type3Cache*>*> CPDF_Type3CacheMap; -typedef CFX_MapPtrTemplate<CPDF_Object*, CPDF_CountedObject<CPDF_TransferFunc*>*> CPDF_TransferFuncMap; +typedef CFX_MapPtrTemplate<CPDF_Font*, CPDF_CountedObject<CPDF_Type3Cache>*> CPDF_Type3CacheMap; +typedef CFX_MapPtrTemplate<CPDF_Object*, CPDF_CountedObject<CPDF_TransferFunc>*> CPDF_TransferFuncMap; class CPDF_DocRenderData { public: |