| Index: core/src/fxcodec/codec/fx_codec_icc.cpp
|
| diff --git a/core/src/fxcodec/codec/fx_codec_icc.cpp b/core/src/fxcodec/codec/fx_codec_icc.cpp
|
| index dad880a936e3cf675c2a3c54ba5669ce360dc456..2a8ccc364cdbe0fdc961c1289cd8d639f5dc3bfb 100644
|
| --- a/core/src/fxcodec/codec/fx_codec_icc.cpp
|
| +++ b/core/src/fxcodec/codec/fx_codec_icc.cpp
|
| @@ -434,7 +434,8 @@ void* CCodec_IccModule::CreateProfile(ICodec_IccModule::IccParam* pIccParam,
|
| CFX_ByteString ProfileKey(key.GetBuffer(), key.GetSize());
|
| ASSERT(pTransformKey);
|
| pTransformKey->AppendBlock(ProfileKey.GetBuffer(0), ProfileKey.GetLength());
|
| - if (!m_MapProfile.Lookup(ProfileKey, (void*&)pCache)) {
|
| + auto it = m_MapProfile.find(ProfileKey);
|
| + if (it == m_MapProfile.end()) {
|
| pCache = new CFX_IccProfileCache;
|
| switch (pIccParam->dwProfileType) {
|
| case Icc_PARAMTYPE_BUFFER:
|
| @@ -456,8 +457,9 @@ void* CCodec_IccModule::CreateProfile(ICodec_IccModule::IccParam* pIccParam,
|
| default:
|
| break;
|
| }
|
| - m_MapProfile.SetAt(ProfileKey, pCache);
|
| + m_MapProfile[ProfileKey] = pCache;
|
| } else {
|
| + pCache = it->second;
|
| pCache->m_dwRate++;
|
| }
|
| return pCache->m_pProfile;
|
| @@ -496,7 +498,8 @@ void* CCodec_IccModule::CreateTransform(
|
| << (pProofProfile != NULL) << dwPrfIntent << dwPrfFlag;
|
| CFX_ByteStringC TransformKey(key.GetBuffer(), key.GetSize());
|
| CFX_IccTransformCache* pTransformCache;
|
| - if (!m_MapTranform.Lookup(TransformKey, (void*&)pTransformCache)) {
|
| + auto it = m_MapTranform.find(TransformKey);
|
| + if (it == m_MapTranform.end()) {
|
| pCmm = FX_Alloc(CLcmsCmm, 1);
|
| pCmm->m_nSrcComponents = T_CHANNELS(dwInputProfileType);
|
| pCmm->m_nDstComponents = T_CHANNELS(dwOutputProfileType);
|
| @@ -512,26 +515,22 @@ void* CCodec_IccModule::CreateTransform(
|
| dwOutputProfileType, dwIntent, dwFlag);
|
| }
|
| pCmm->m_hTransform = pTransformCache->m_pIccTransform;
|
| - m_MapTranform.SetAt(TransformKey, pTransformCache);
|
| + m_MapTranform[TransformKey] = pTransformCache;
|
| } else {
|
| + pTransformCache = it->second;
|
| pTransformCache->m_dwRate++;
|
| }
|
| return pTransformCache->m_pCmm;
|
| }
|
| CCodec_IccModule::~CCodec_IccModule() {
|
| - FX_POSITION pos = m_MapProfile.GetStartPosition();
|
| - CFX_ByteString key;
|
| - CFX_IccProfileCache* pProfileCache;
|
| - while (pos) {
|
| - m_MapProfile.GetNextAssoc(pos, key, (void*&)pProfileCache);
|
| - delete pProfileCache;
|
| + for (const auto& pair : m_MapProfile) {
|
| + delete pair.second;
|
| }
|
| - pos = m_MapTranform.GetStartPosition();
|
| - CFX_IccTransformCache* pTransformCache;
|
| - while (pos) {
|
| - m_MapTranform.GetNextAssoc(pos, key, (void*&)pTransformCache);
|
| - delete pTransformCache;
|
| + m_MapProfile.clear();
|
| + for (const auto& pair : m_MapTranform) {
|
| + delete pair.second;
|
| }
|
| + m_MapTranform.clear();
|
| }
|
| void* CCodec_IccModule::CreateTransform_sRGB(const uint8_t* pProfileData,
|
| FX_DWORD dwProfileSize,
|
|
|