Fix call discard when hanging up before request.

This commit is contained in:
John Preston 2017-05-05 19:27:05 +03:00
parent 622fbdb64b
commit b3d5ac1660
2 changed files with 11 additions and 8 deletions

View File

@ -136,18 +136,19 @@ void Call::startOutgoing() {
return;
}
auto &phoneCall = call.vphone_call;
auto &waitingCall = phoneCall.c_phoneCallWaiting();
_id = waitingCall.vid.v;
_accessHash = waitingCall.vaccess_hash.v;
setState(State::Waiting);
if (_finishAfterRequestingCall) {
hangup();
return;
}
_discardByTimeoutTimer.callOnce(Global::CallReceiveTimeoutMs());
auto &phoneCall = call.vphone_call.c_phoneCallWaiting();
_id = phoneCall.vid.v;
_accessHash = phoneCall.vaccess_hash.v;
handleUpdate(call.vphone_call);
_discardByTimeoutTimer.callOnce(Global::CallReceiveTimeoutMs());
handleUpdate(phoneCall);
}).fail([this](const RPCError &error) {
handleRequestError(error);
}).send();

View File

@ -87,7 +87,9 @@ TopBar::TopBar(QWidget *parent, const base::weak_unique_ptr<Call> &call) : TWidg
void TopBar::initControls() {
_mute->setClickedCallback([this] {
_call->setMute(!_call->isMute());
if (auto call = _call.get()) {
call->setMute(!call->isMute());
}
});
setMuted(_call->isMute());
subscribe(_call->muteChanged(), [this](bool mute) {
@ -104,8 +106,8 @@ void TopBar::initControls() {
}
});
_hangup->setClickedCallback([this] {
if (_call) {
_call->hangup();
if (auto call = _call.get()) {
call->hangup();
}
});
_updateDurationTimer.setCallback([this] { updateDurationText(); });