XnStatus PlayerNode::Destroy() { CloseStream(); //Don't verify return value - proceed anyway if (m_pNodeInfoMap != NULL) { for (XnUInt32 i = 0; i < m_nMaxNodes; i++) { RemovePlayerNodeInfo(i); } XN_DELETE_ARR(m_pNodeInfoMap); m_pNodeInfoMap = NULL; } if (m_aSeekTempArray != NULL) { xnOSFree(m_aSeekTempArray); m_aSeekTempArray = NULL; } XN_DELETE_ARR(m_pRecordBuffer); m_pRecordBuffer = NULL; XN_DELETE_ARR(m_pUncompressedData); m_pUncompressedData = NULL; return XN_STATUS_OK; }
XnStatus PlayerNode::HandleNodeRemovedRecord(NodeRemovedRecord record) { XN_VALIDATE_INPUT_PTR(m_pNodeNotifications); XnStatus nRetVal = record.Decode(); XN_IS_STATUS_OK(nRetVal); DEBUG_LOG_RECORD(record, "NodeRemoved"); PlayerNodeInfo* pPlayerNodeInfo = GetPlayerNodeInfo(record.GetNodeID()); XN_VALIDATE_PTR(pPlayerNodeInfo, XN_STATUS_CORRUPT_FILE); if (!pPlayerNodeInfo->bValid) { XN_ASSERT(FALSE); XN_LOG_ERROR_RETURN(XN_STATUS_CORRUPT_FILE, XN_MASK_OPEN_NI, "Got a node removed record for non-existing node %u.", record.GetNodeID()); } nRetVal = RemovePlayerNodeInfo(record.GetNodeID()); XN_IS_STATUS_OK(nRetVal); return XN_STATUS_OK; }