?? smbmusicapfilemgrrscmgr.cpp
字號:
TSmbRscMgrRsc rscId;
TInt category = KErrNotFound;
switch(aCategory)
{
case ESmbMusicAPFileMgrRscMgrSDBindRscCategory: //SDBind儕僜乕僗梫媮
rscId = ESmbRscMgrRscSdKeyBind; // SD(Bind)
category = ESDBindRscCategory;
break;
case ESmbMusicAPFileMgrRscMgrMemoryModeRscCategory: //儊儌儕儌乕僪儕僜乕僗梫媮
rscId = ESmbRscMgrRscExtMemoryAccess; // 儊儌儕儌乕僪
category = EMemoryModeRscCategory;
break;
case ESmbMusicAPFileMgrRscMgrMTPModeRscCategory: //MTP儌乕僪儕僜乕僗梫媮
rscId = ESmbRscMgrRscMTPModeForInternal; // MTP儌乕僪
category = EMTPModeRscCategory;
break;
default:
//堎忢宯
//儘僌弌椡
OUTPUT_LOG_ERROR("CSmbMusicAPFileMgrRscMgr::ReleaseResourceL()[NG!]");
return;
}
//儕僜乕僗枹庢摼忬懺偺応崌壗傕偟側(cè)偄
if(ERscMgrRscNone == State(category))
{
return;
}
// 奐曻儕僜乕僗儕僗僩傪惗惉偡傞
CArrayFixFlat<TSmbRscMgrRsc>* releaseRscList = new (ELeave) CArrayFixFlat<TSmbRscMgrRsc>(KSmbRscMgrAppRscListMax);
CleanupStack::PushL(releaseRscList);
releaseRscList->AppendL(rscId);
// 儕僜乕僗嫞崌娗棟偵儕僜乕僗奐曻捠抦偡傞
TInt err = KErrNone;
TSmbRscMgrRes res = ESmbRscMgrResultOK;
TRAP(err, res = iRscMgrRscClient->ReleaseResourceNotifyL(releaseRscList));
if ((KErrNone != err) || (ESmbRscMgrResultOK != res))
{
//儘僌弌椡
OUTPUT_LOG("CSmbMusicAPFileMgrRscMgr::ReleaseResourceL()[NG!]");
}
// 奐曻儕僜乕僗儕僗僩傪嶍彍偡傞
CleanupStack::PopAndDestroy(); // releaseRscList
//儕僜乕僗枹庢摼忬懺偵僙僢僩
SetState(category, ERscMgrRscNone);
}
}
/**
* 慡儕僜乕僗奐曻
*/
void CSmbMusicAPFileMgrRscMgr::CancelAndReleaseAllResources()
{
//儕僜乕僗枹庢摼忬懺偺応崌壗傕偟側(cè)偄
// if((ERscMgrRscNone == State(ESDBindRscCategory))
// && (ERscMgrRscNone == State(EMemoryModeRscCategory))
// && (ERscMgrRscNone == State(EMTPModeRscCategory)))
// {
// return;
// }
//慡儕僜乕僗僉儍儞僙儖
iRscMgrRscClient->CancelAndReleaseAllResources();
//慡儕僜乕僗枹庢摼忬懺偵僙僢僩
SetState(ECategoryMax, ERscMgrRscNone);
}
/**
* 儕僜乕僗棙梡尃妉摼墳摎傪捠抦
*
* @param[in] aResult 儕僜乕僗妉摼梫媮偺敾掕寢壥
*/
void CSmbMusicAPFileMgrRscMgr::AllocationResourceResL(TSmbRscMgrRscResult aResult)
{
OUTPUT_FUNC;
//儕僜乕僗棙梡尃妉摼墳摎張棟
OnEndAllocationResourceResL(iCategory, aResult);
iCategory = KErrNotFound;
}
/**
* 儕僜乕僗奐曻梫媮傪捠抦
*
* @param[in] aList 奐曻傪梫媮偡傞儕僜乕僗偺儕僗僩
*/
void CSmbMusicAPFileMgrRscMgr::ReleaseResourceReqL(CArrayFixFlat<TSmbRscMgrRsc>* aList)
{
OUTPUT_FUNC;
//夝曻梫媮儕僜乕僗傪僙僢僩
TInt cnt = aList->Count();
TUint res = ECategoryNone;
for(TInt i = 0; i < cnt; i++)
{
switch(aList->At(i))
{
//SDBind儕僜乕僗夝曻
case ESmbRscMgrRscSdKeyBind:
//儕僜乕僗棙梡尃墳摎寢壥張棟
res |= ESmbMusicAPFileMgrRscMgrSDBindRscCategory;
continue;
//儊儌儕儌乕僪儕僜乕僗夝曻
case ESmbRscMgrRscExtMemoryAccess:
//儕僜乕僗棙梡尃墳摎寢壥張棟
res |= ESmbMusicAPFileMgrRscMgrMemoryModeRscCategory;
continue;
//MTP儌乕僪儕僜乕僗夝曻
case ESmbRscMgrRscMTPModeForInternal:
//MTP儕僜乕僗棙梡尃墳摎寢壥張棟
res |= ESmbMusicAPFileMgrRscMgrMTPModeRscCategory;
continue;
default:
continue;
}
}
//儕僜乕僗棙梡尃夝曻捠抦張棟
iObserver.NotifyReleaseResourcesL(res);
//儕僜乕僗棙梡尃墳摎寢壥張棟
// iObserver.NotifyResourceResL(ESmbMusicAPFileMgrRscMgrReleaseSDBindRscReq);
}
/**
* 儕僜乕僗棙梡尃忳搉墳摎傪捠抦
*
* @param[in] aResult 儕僜乕僗忳搉梫媮偺敾掕寢壥
*/
void CSmbMusicAPFileMgrRscMgr::ReallocationResourceResL(TSmbRscMgrRscResult /*aResult*/)
{
OUTPUT_FUNC;
// 摿偵壗傕張棟偟側(cè)偄
}
/**
* 儕僜乕僗嫞崌妋擣墳摎傪捠抦
*
* @param[in] aResult 儕僜乕僗嫞崌妋擣梫媮偺敾掕寢壥
*/
void CSmbMusicAPFileMgrRscMgr::CheckResourceCompetitionResL(TSmbRscMgrRscResult /*aResult*/)
{
OUTPUT_FUNC;
// 摿偵壗傕張棟偟側(cè)偄
}
/**
* 儕僜乕僗棙梡尃妉摼墳摎傪捠抦
*
* @param[in] aResult 儕僜乕僗妉摼梫媮偺敾掕寢壥
*/
void CSmbMusicAPFileMgrRscMgr::OnEndAllocationResourceResL(TInt aCategory, TInt aResult)
{
OUTPUT_FUNC;
if(ERscMgrRequestRscBusy != State(aCategory))
{
OUTPUT_LOG("ERROR::ERscMgrRequestRscBusy != State(aCategory)");
}
TSmbMusicAPFileMgrRscMgrResponse res = ConvertResultRes(aCategory, aResult);
//儕僜乕僗棙梡尃墳摎寢壥張棟
iObserver.NotifyResourceResL(res);
}
/**
忬懺庢摼
* @param 側(cè)偟
* @return 儕僜乕僗娗棟僋儔僗忬懺
*/
CSmbMusicAPFileMgrRscMgr::TSmbMusicAPFileMgrRscMgrState CSmbMusicAPFileMgrRscMgr::State(TInt aCategory) const
{
return iRscStateArray->At(aCategory);
}
/**
忬懺僙僢僩
* @param [in] aRscMgrState
* @return 側(cè)偟
*/
void CSmbMusicAPFileMgrRscMgr::SetState(TInt aCategory, TSmbMusicAPFileMgrRscMgrState aRscMgrState)
{
//慡偰儕僙僢僩偺応崌
if(ECategoryMax == aCategory)
{
iRscStateArray->At(ESDBindRscCategory) = aRscMgrState;
iRscStateArray->At(EMemoryModeRscCategory) = aRscMgrState;
iRscStateArray->At(EMTPModeRscCategory) = aRscMgrState;
return;
}
iRscStateArray->At(aCategory) = aRscMgrState;
}
/**
張棟寢壥曄姺
* @param 側(cè)偟
* @return 儕僜乕僗娗棟僋儔僗忬懺
*/
TSmbMusicAPFileMgrRscMgrResponse CSmbMusicAPFileMgrRscMgr::ConvertResultRes(TInt aCategory, TInt aResult)
{
OUTPUT_FUNC;
//張棟寢壥傪儕僜乕僗庬暿偵傛?zhèn)羵膬R儞僶乕僩
switch(aResult)
{
case ESmbRscMgrRscResultOK: //儕僜乕僗棙梡尃妉摼嫋壜丄儕僜乕僗忳搉OK丄儕僜乕僗嫞崌側(cè)偟
//儕僜乕僗棙梡壜擻忬懺偵僙僢僩
SetState(aCategory, ERscMgrAllocRsc);
switch(aCategory)
{
case ESDBindRscCategory: //SDBind儕僜乕僗
return ESmbMusicAPFileMgrRscMgrGetSDBindRscOKRes;
case EMemoryModeRscCategory: //儊儌儕儌乕僪儕僜乕僗
return ESmbMusicAPFileMgrRscMgrGetMemoryModeRscOKRes;
case EMTPModeRscCategory: //MTP儌乕僪儕僜乕僗梫媮
return ESmbMusicAPFileMgrRscMgrGetMTPModeRscOKRes;
default:
OUTPUT_LOG1_ERROR("ERROR::ConvertResultRes():%d", aCategory);
__ASSERT_DEBUG(EFalse, PANIC(KErrArgument));
return ENone;
}
case ESmbRscMgrRscResultNG: //儕僜乕僗棙梡尃妉摼嫅斲丄儕僜乕僗忳搉NG丄儕僜乕僗嫞崌偁傝
case ESmbRscMgrRscResultCanceled: //僉儍儞僙儖張棟惉岟
case ESmbRscMgrRscResultAbort: //張棟偺拞抐
default:
//儕僜乕僗枹庢摼忬懺偵僙僢僩
SetState(aCategory, ERscMgrRscNone);
switch(aCategory)
{
case ESDBindRscCategory: //SDBind儕僜乕僗
return ESmbMusicAPFileMgrRscMgrGetSDBindRscNGRes;
case EMemoryModeRscCategory: //儊儌儕儌乕僪儕僜乕僗
return ESmbMusicAPFileMgrRscMgrGetMemoryModeRscNGRes;
case EMTPModeRscCategory: //MTP儌乕僪儕僜乕僗梫媮
return ESmbMusicAPFileMgrRscMgrGetMTPModeRscNGRes;
default:
OUTPUT_LOG1_ERROR("ERROR::ConvertResultRes():%d", aCategory);
__ASSERT_DEBUG(EFalse, PANIC(KErrArgument));
return ENone;
}
}
}
// end of CSmbMusicAPFileMgrRscMgr.cpp
/* Copyright (C) 2007 Sony Ericsson Mobile Communications Japan, Inc. */
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -