Create a new Instance for each screencast.

This commit is contained in:
John Preston 2021-05-07 11:19:02 +04:00
parent 9ac510a1ad
commit 909a3cef9b

View file

@ -1077,6 +1077,9 @@ void GroupCall::rejoinPresentation() {
const auto weak = base::make_weak(this); const auto weak = base::make_weak(this);
_screenInstance->emitJoinPayload([=](tgcalls::GroupJoinPayload payload) { _screenInstance->emitJoinPayload([=](tgcalls::GroupJoinPayload payload) {
crl::on_main(weak, [=, payload = std::move(payload)]{ crl::on_main(weak, [=, payload = std::move(payload)]{
if (!_screenInstance) {
return;
}
const auto ssrc = payload.audioSsrc; const auto ssrc = payload.audioSsrc;
LOG(("Call Info: Join payload received, joining with ssrc: %1." LOG(("Call Info: Join payload received, joining with ssrc: %1."
).arg(ssrc)); ).arg(ssrc));
@ -1109,6 +1112,7 @@ void GroupCall::rejoinPresentation() {
} }
void GroupCall::leavePresentation() { void GroupCall::leavePresentation() {
destroyScreencast();
if (!_screenSsrc) { if (!_screenSsrc) {
return; return;
} }
@ -1428,6 +1432,9 @@ void GroupCall::handlePossibleCreateOrJoinResponse(
void GroupCall::handlePossibleCreateOrJoinResponse( void GroupCall::handlePossibleCreateOrJoinResponse(
const MTPDupdateGroupCallConnection &data) { const MTPDupdateGroupCallConnection &data) {
if (data.is_presentation()) { if (data.is_presentation()) {
if (!_screenInstance) {
return;
}
setScreenInstanceMode(InstanceMode::Rtc); setScreenInstanceMode(InstanceMode::Rtc);
data.vparams().match([&](const MTPDdataJSON &data) { data.vparams().match([&](const MTPDdataJSON &data) {
const auto json = data.vdata().v; const auto json = data.vdata().v;
@ -1435,6 +1442,9 @@ void GroupCall::handlePossibleCreateOrJoinResponse(
_screenInstance->setJoinResponsePayload(json.toStdString()); _screenInstance->setJoinResponsePayload(json.toStdString());
}); });
} else { } else {
if (!_instance) {
return;
}
setInstanceMode(InstanceMode::Rtc); setInstanceMode(InstanceMode::Rtc);
data.vparams().match([&](const MTPDdataJSON &data) { data.vparams().match([&](const MTPDdataJSON &data) {
const auto json = data.vdata().v; const auto json = data.vdata().v;