From 3403db90496fc87269d7bb1d033347ee19fc0c38 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Mon, 15 Jun 2015 16:58:19 -0700 Subject: 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. --- core/src/fpdfapi/fpdf_render/fpdf_render.cpp | 42 +++++++++++----------------- 1 file changed, 17 insertions(+), 25 deletions(-) (limited to 'core/src/fpdfapi/fpdf_render/fpdf_render.cpp') 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* cache; + CPDF_CountedObject* 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* value; + CPDF_CountedObject* 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* pCache; + CPDF_CountedObject* pCache; if (!m_Type3FaceMap.Lookup(pFont, pCache)) { CPDF_Type3Cache* pType3 = new CPDF_Type3Cache(pFont); - pCache = new CPDF_CountedObject; - pCache->m_Obj = pType3; - pCache->m_nCount = 1; + pCache = new CPDF_CountedObject(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* pCache; - if (!m_Type3FaceMap.Lookup(pFont, pCache)) { - return; - } - pCache->m_nCount--; + CPDF_CountedObject* 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* pTransferCounter; + CPDF_CountedObject* 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; - pTransferCounter->m_nCount = 1; - pTransferCounter->m_Obj = pTransfer; + pTransferCounter = new CPDF_CountedObject(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* pTransferCounter; + CPDF_CountedObject* pTransferCounter; if (!m_TransferFuncMap.Lookup(pObj, pTransferCounter)) { return; } - pTransferCounter->m_nCount--; + pTransferCounter->RemoveRef(); } CPDF_RenderConfig::CPDF_RenderConfig() { -- cgit v1.2.3