From 582a464a5293ece6dff2d41ae01e649e7d80fe0b Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 9 Jun 2026 12:36:09 -0300 Subject: [PATCH] Fix screen share video being center-cropped. --- .../components/webrtc/v2/CallParticipantViewer.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallParticipantViewer.kt b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallParticipantViewer.kt index 189ef746f6..b124266aa3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallParticipantViewer.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallParticipantViewer.kt @@ -471,6 +471,7 @@ private fun VideoRenderer( } setMirror(mirror) + applyScreenShareAwareScaling(participant.isScreenSharing) } renderer = textureRenderer @@ -491,6 +492,7 @@ private fun VideoRenderer( } textureRenderer.setMirror(mirror) + textureRenderer.applyScreenShareAwareScaling(participant.isScreenSharing) } }, onRelease = { @@ -500,6 +502,18 @@ private fun VideoRenderer( ) } +/** + * Screen-shared content is fit inside the view ([RendererCommon.ScalingType.SCALE_ASPECT_FIT]) so nothing is cropped, + * while camera video fills the view, falling back to balanced scaling when the video orientation does not match the view. + */ +private fun TextureViewRenderer.applyScreenShareAwareScaling(isScreenSharing: Boolean) { + if (isScreenSharing) { + setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT) + } else { + setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FILL, RendererCommon.ScalingType.SCALE_ASPECT_BALANCED) + } +} + @Composable internal fun ParticipantAudioIndicator( participant: CallParticipant,