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; }
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; }