⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smbmusicapfilemgrrscmgr.cpp

📁 索爱手机代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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;
			}
		
		//儕僜乕僗枹庢摼忬懺偺応崌壗傕偟側偄
		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()
	{
	//儕僜乕僗枹庢摼忬懺偺応崌壗傕偟側偄
//	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;
	// 摿偵壗傕張棟偟側偄
	}

/**
 *	儕僜乕僗嫞崌妋擣墳摎傪捠抦
 *
 *	@param[in] aResult	儕僜乕僗嫞崌妋擣梫媮偺敾掕寢壥
 */
void CSmbMusicAPFileMgrRscMgr::CheckResourceCompetitionResL(TSmbRscMgrRscResult /*aResult*/)
	{
	OUTPUT_FUNC;
	// 摿偵壗傕張棟偟側偄
	}
	
/**
 *	儕僜乕僗棙梡尃妉摼墳摎傪捠抦
 *
 *	@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	側偟
 * @return	儕僜乕僗娗棟僋儔僗忬懺
 */
CSmbMusicAPFileMgrRscMgr::TSmbMusicAPFileMgrRscMgrState CSmbMusicAPFileMgrRscMgr::State(TInt aCategory) const
	{
	return iRscStateArray->At(aCategory);
	}
	
/**
 忬懺僙僢僩
 * @param [in]	aRscMgrState		
 * @return	側偟
 */
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	側偟
 * @return	儕僜乕僗娗棟僋儔僗忬懺
 */
TSmbMusicAPFileMgrRscMgrResponse CSmbMusicAPFileMgrRscMgr::ConvertResultRes(TInt aCategory, TInt aResult)
	{
	OUTPUT_FUNC;
	
	//張棟寢壥傪儕僜乕僗庬暿偵傛偭偰僐儞僶乕僩
	switch(aResult)
		{
	case ESmbRscMgrRscResultOK:							//儕僜乕僗棙梡尃妉摼嫋壜丄儕僜乕僗忳搉OK丄儕僜乕僗嫞崌側偟
		//儕僜乕僗棙梡壜擻忬懺偵僙僢僩
		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. */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -