diff --git a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java index 4b71a86fc..a27808f3e 100644 --- a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java @@ -270,11 +270,26 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe public void onStop() { binding.remoteVideo.release(); binding.localVideo.release(); + final WeakReference weakReference = this.rtpConnectionReference; + final JingleRtpConnection jingleRtpConnection = weakReference == null ? null : weakReference.get(); + if (jingleRtpConnection != null) { + releaseVideoTracks(jingleRtpConnection); + } releaseProximityWakeLock(); - //TODO maybe we want to finish if call had ended super.onStop(); } + private void releaseVideoTracks(final JingleRtpConnection jingleRtpConnection) { + final Optional remoteVideo = jingleRtpConnection.getRemoteVideoTrack(); + if (remoteVideo.isPresent()) { + remoteVideo.get().removeSink(binding.remoteVideo); + } + final Optional localVideo = jingleRtpConnection.geLocalVideoTrack(); + if (localVideo.isPresent()) { + localVideo.get().removeSink(binding.localVideo); + } + } + @Override public void onBackPressed() { endCall();