cd86660cae
- Clear discoveredCalleePeers on transitionToEnded to prevent stale peers from triggering mesh setup in subsequent calls - Cap processedEventIds and completedCallIds with LRU eviction to prevent unbounded memory growth over long app sessions - Store and release SurfaceTextureHelper in startCamera/stopCamera to prevent GL thread and texture leaks - Wrap stopCamera's stopCapture in try-catch for InterruptedException to ensure camera resources are always released - Add Mutex to CallManager to serialize state mutations, preventing races when signaling events arrive concurrently from multiple relays - Add @Synchronized to CallController's toggleAudioMute, toggleVideo, and cleanup to prevent races with WebRTC callbacks https://claude.ai/code/session_01TTPrYjcz1eYEzdSV5N6rHi