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