HRESULT MV_CC_DSS_Exit(void)
{
	HRESULT res;

	if (pMV_APP_DSS == NULL)
		MV_CC_DBG_Error(E_NOTREADY, "MV_CC_DSS_Exit", NULL);

	MV_OSAL_Mutex_Lock(pMV_APP_DSS->m_hGSListMutex);

	res = MV_CC_DSS_GlobalServiceList_Exit();
	if (res != S_OK)
		MV_CC_DBG_Error(res, "MV_CC_DSS_Exit" \
		" MV_CC_DSS_GlobalServiceList_Exit", NULL);

	MV_OSAL_Mutex_Unlock(pMV_APP_DSS->m_hGSListMutex);

	MV_OSAL_Mutex_Destroy(&(pMV_APP_DSS->m_hGSListMutex));
	MV_OSAL_Mutex_Destroy(&(pMV_APP_DSS->m_SeqIDMutex));

	MV_OSAL_Free(pMV_APP_DSS);

	pMV_APP_DSS = NULL;

	return S_OK;
}
Пример #2
0
HRESULT MV_CC_DSS_Destructor(pMV_CC_DSP_t 		self)
{
	HRESULT res;
	
	/* Parameter Check */
	if (self == NULL)
		MV_CC_DBG_Error(E_INVALIDARG, "MV_CC_DSS_Destructor", NULL);

	if (pMV_APP_DSS == NULL)
		MV_CC_DBG_Error(E_NOTREADY, "MV_CC_DSS_Destructor", NULL);

	pMV_APP_DSS = NULL;

	
	MV_OSAL_Mutex_Lock(self->m_hGSListMutex);

	res = MV_CC_DSS_GlobalServiceList_Exit();
	if (res != S_OK)
	    MV_CC_DBG_Error(res, "MV_CC_DSS_Destructor MV_CC_DSS_GlobalServiceList_Exit", NULL);
	    	
	MV_OSAL_Mutex_Unlock(self->m_hGSListMutex);

	MV_OSAL_Mutex_Destroy(&(self->m_hGSListMutex));
	MV_OSAL_Mutex_Destroy(&(self->m_SeqIDMutex));
		
	self->m_PrType = MV_CC_Protocol_TEST;
	self->OnRecvDemux = NULL;
	self->m_pICCNet = NULL;

	self->m_RdCount = 0;
	self->m_RdErrCount = 0;	
	self->m_WrCount = 0;
	self->m_WrErrCount = 0;

    self->m_bStatusUpdate = false;
    self->m_RemoteCPU = MV_CC_DSS_REMOTECPU_NONE;
    self->m_SeqID = MV_CC_ServiceID_DynamicStart;
        
	return S_OK;
}