Files
amethyst/amethyst
Claude c82ba766f8 fix: WebRTC race conditions, thread safety, and PiP lifecycle
- CallActivity.onStop: move finishAndRemoveTask inside coroutine so
  hangup signaling completes before Activity destruction; add
  hangupInitiated flag to prevent double-hangup in onDestroy
- CallController: add per-peer renegotiation debouncing via
  pendingRenegotiation map to prevent queuing multiple createOffer calls
  when video is toggled rapidly
- CallController: guard ensureForegroundService in onPeerConnected
  callback with state check to prevent restarting the service after
  cleanup
- RemoteVideoMonitor: synchronize onRemoteVideoTrack, onPeerRemoved,
  and dispose with trackLock to prevent non-atomic map mutations and
  leaked video sinks from concurrent WebRTC callback threads
- CallMediaManager: add @Synchronized to createVideoResources to
  prevent check-then-act race between IO and main threads

https://claude.ai/code/session_017HrFJNxD6zrGwiZ3s69xTh
2026-04-11 00:48:27 +00:00
..