LRESULT CRTCSampleMainInterface::onRemoteTrackAvailableNotifyMT()

in AliRTC2.5/Windows/MFC Demo/RtcSample/RTCSampleMainInterface.cpp [833:884]


LRESULT CRTCSampleMainInterface::onRemoteTrackAvailableNotifyMT(WPARAM wParam, LPARAM lParam)
{
	if (m_pEngine == NULL) return -1;

	m_sRemoteUserRelease.s_bRemoteTrackAvailableActioning = true;

	subChangedParam *subChange = (subChangedParam *)lParam;

	Dictionary dict;
	bool bIsScreen = false;
	vector<String>::iterator VecIterCamera = m_vecRemoteInfoList.end();

	if (0 != m_pEngine->GetUserInfo(subChange->uid.c_str(), dict))  goto exit;
	if (0 == m_mapRemoteInfo.count(subChange->uid.c_str())) goto exit;
	
	for (vector<String>::iterator VecIter = m_vecRemoteInfoList.begin(); VecIter != m_vecRemoteInfoList.end(); VecIter++)
	{
		if (*VecIter == subChange->uid)
		{
			if (VecIterCamera == m_vecRemoteInfoList.end())
				VecIterCamera = VecIter;
			else
			{
				if (AliEngineVideoTrackBoth != subChange->vt)
				{
					m_vecRemoteInfoList.erase(VecIter);
					break;
				}
				else
					bIsScreen = true;
			}
		}
	}

	if (AliEngineVideoTrackBoth == subChange->vt && !bIsScreen)
	{
		m_vecRemoteInfoList.insert(VecIterCamera, subChange->uid);
	}

	if (5 < m_vecRemoteInfoList.size())
	{
		GetDlgItem(IDC_BUTTON_RIGHT)->EnableWindow(true);
	}

	UpdateSubscribe(subChange->uid, subChange->at, subChange->vt);

	exit:
	delete subChange;

	m_sRemoteUserRelease.s_bRemoteTrackAvailableActioning = false;
	return 0;
}