From 27693e8f033b5a5bb857190d203f17a39d04c378 Mon Sep 17 00:00:00 2001 From: Anton Date: Wed, 12 Aug 2026 00:14:42 +0400 Subject: pica-client: fix call handling in audiovideocallcontroller --- pica-client/audiovideocallcontroller.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/pica-client/audiovideocallcontroller.cpp b/pica-client/audiovideocallcontroller.cpp index 4e23a96..2af7ced 100644 --- a/pica-client/audiovideocallcontroller.cpp +++ b/pica-client/audiovideocallcontroller.cpp @@ -91,6 +91,7 @@ void AudioVideoCallController::stopTones() void AudioVideoCallController::call_failed(QString reason) { qDebug() << "Call failed: " << reason << "\n"; + is_active = false; /* play unreachable */ playEarpieceTone(&TonePlayer::playUnreachable); } @@ -98,6 +99,8 @@ void AudioVideoCallController::call_failed(QString reason) void AudioVideoCallController::call_accepted(QByteArray peer_id) { stopTones(); + is_active = true; + callwindow->call_started(); } void AudioVideoCallController::call_rejected(QByteArray peer_id) @@ -108,16 +111,24 @@ void AudioVideoCallController::call_rejected(QByteArray peer_id) void AudioVideoCallController::call_hungup(QByteArray peer_id) { + callwindow->call_ended(); /* play busy tone */ playEarpieceTone(&TonePlayer::playBusy); + is_active = false; } void AudioVideoCallController::start_call(QByteArray peer_id) { if (callwindow) { + callwindow->show(); + + /* call is already in progress */ - return; + if (is_active) + return; + /* re-create callwindow for a new call */ + callwindow->close(); } m_peer_id = peer_id; @@ -159,6 +170,8 @@ void AudioVideoCallController::accept_call() { stopTones(); skynet->AcceptCall(m_peer_id); + is_active = true; + callwindow->call_started(); } void AudioVideoCallController::end_call() @@ -170,11 +183,13 @@ void AudioVideoCallController::end_call() else skynet->RejectCall(m_peer_id); + is_active = false; callwindow->close(); } void AudioVideoCallController::callwindow_closed(CallWindow *sender_window) { callwindow = 0; + is_active = false; } -- cgit v1.2.1