diff options
| author | Anton <anton@picapica.im> | 2026-08-09 14:30:20 +0400 |
|---|---|---|
| committer | Anton <anton@picapica.im> | 2026-08-09 14:30:20 +0400 |
| commit | 4bfdcf3288b921c7a648dc1f85754ee4482c24d5 (patch) | |
| tree | a432e80cba02277b3a376fc4d19e767335ac04d7 /pica-client/audiovideocallcontroller.cpp | |
| parent | 3fcb0660953fbf222b6cbe5e08c2b0488b7b68f8 (diff) | |
| download | pica-pica-4bfdcf3288b921c7a648dc1f85754ee4482c24d5.tar.gz pica-pica-4bfdcf3288b921c7a648dc1f85754ee4482c24d5.zip | |
pica-client: fix CallWindow only being usable for the first call
AudioVideoCallController never cleared its callwindow pointer after a
call ended, so start_call()/call_from() would see it as non-null
forever and silently refuse every subsequent call.
CallWindow now sets WA_DeleteOnClose and emits callwindow_closed() from
closeEvent(), mirroring the ChatWindow/MsgUIRouter pattern. The
controller resets its pointer to 0 in response, and end_call() closes
the window once the hangup/reject has been handled.
Diffstat (limited to 'pica-client/audiovideocallcontroller.cpp')
| -rw-r--r-- | pica-client/audiovideocallcontroller.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/pica-client/audiovideocallcontroller.cpp b/pica-client/audiovideocallcontroller.cpp index d9b6571..4e23a96 100644 --- a/pica-client/audiovideocallcontroller.cpp +++ b/pica-client/audiovideocallcontroller.cpp @@ -124,6 +124,7 @@ void AudioVideoCallController::start_call(QByteArray peer_id) callwindow = new CallWindow(peer_id, false); connect(callwindow, SIGNAL(start_call_pressed()), this, SLOT(initiate_call())); connect(callwindow, SIGNAL(hang_call_pressed()), this, SLOT(end_call())); + connect(callwindow, SIGNAL(callwindow_closed(CallWindow*)), this, SLOT(callwindow_closed(CallWindow*))); callwindow->show(); } @@ -140,6 +141,7 @@ void AudioVideoCallController::call_from(QByteArray peer_id) callwindow = new CallWindow(peer_id, true); connect(callwindow, SIGNAL(accept_call_pressed()), this, SLOT(accept_call())); connect(callwindow, SIGNAL(hang_call_pressed()), this, SLOT(end_call())); + connect(callwindow, SIGNAL(callwindow_closed(CallWindow*)), this, SLOT(callwindow_closed(CallWindow*))); callwindow->show(); /* play ring tone */ @@ -167,5 +169,12 @@ void AudioVideoCallController::end_call() skynet->HangupCall(m_peer_id); else skynet->RejectCall(m_peer_id); + + callwindow->close(); +} + +void AudioVideoCallController::callwindow_closed(CallWindow *sender_window) +{ + callwindow = 0; } |
