diff --git a/src/mainview/components/MessageBar.qml b/src/mainview/components/MessageBar.qml
index a68e0dfd1bcf8a315479ef959958f525698cba31..ed56cd2064739ac20255535ea8a84df307f44269 100644
--- a/src/mainview/components/MessageBar.qml
+++ b/src/mainview/components/MessageBar.qml
@@ -113,6 +113,7 @@ ColumnLayout {
             Layout.alignment: Qt.AlignVCenter
             Layout.preferredWidth: JamiTheme.chatViewFooterButtonSize
             Layout.preferredHeight: JamiTheme.chatViewFooterButtonSize
+            visible: VideoDevices.listSize !== 0
 
             radius: JamiTheme.chatViewFooterButtonRadius
             preferredSize: JamiTheme.chatViewFooterButtonIconSize
diff --git a/src/mainview/components/OngoingCallPage.qml b/src/mainview/components/OngoingCallPage.qml
index 4a6908c5b8edba54b132573c5688dfd5a322e0f5..f2905207a83089b16a1ebf80b7f0d2c981c48116 100644
--- a/src/mainview/components/OngoingCallPage.qml
+++ b/src/mainview/components/OngoingCallPage.qml
@@ -179,24 +179,8 @@ Rectangle {
                     id: previewRenderer
 
                     lrcInstance: LRCInstance
-                    visible: !callOverlay.isAudioOnly && !callOverlay.isConferenceCall && !callOverlay.isVideoMuted && !callOverlay.isPaused
-
-                    Connections {
-                        target: CallAdapter
-
-                        function onPreviewVisibilityNeedToChange(visible) {
-                            previewRenderer.visible = visible
-                        }
-                    }
-
-                    Connections {
-                        target: VideoDevices
-
-                        // TODO: previewRenderer visible should be listening to a property
-                        function onDeviceListChanged() {
-                            previewRenderer.visible = VideoDevices.listSize !== 0
-                        }
-                    }
+                    visible: !callOverlay.isAudioOnly && !callOverlay.isConferenceCall && !callOverlay.isVideoMuted && !callOverlay.isPaused &&
+                             ((VideoDevices.listSize !== 0 && AvAdapter.currentRenderingDeviceType === Video.DeviceType.CAMERA) || AvAdapter.currentRenderingDeviceType !== Video.DeviceType.CAMERA )
 
                     width: Math.max(callPageMainRect.width / 5, JamiTheme.minimumPreviewWidth)
                     x: callPageMainRect.width - previewRenderer.width - previewMargin
diff --git a/src/mainview/components/ParticipantsLayer.qml b/src/mainview/components/ParticipantsLayer.qml
index f54ac0df5fb3510fc69031be44d501fb1c5092e9..b29320567e76bcb160969d2c9ed8c5cceaad385d 100644
--- a/src/mainview/components/ParticipantsLayer.qml
+++ b/src/mainview/components/ParticipantsLayer.qml
@@ -90,7 +90,6 @@ Item {
         participantOverlays = participantOverlays.filter(part => !deletedUris.includes(part.uri))
 
         if (infos.length === 0) { // Return to normal call
-            previewRenderer.visible = !isAudioOnly && !isVideoMuted && !isConferenceCall && !isPaused
             for (var part in participantOverlays) {
                 if (participantOverlays[part]) {
                     participantOverlays[part].destroy()
@@ -98,7 +97,6 @@ Item {
             }
             participantOverlays = []
         } else {
-            previewRenderer.visible = false
             for (var infoVariant in infos) {
                 // Only create overlay for new participants
                 if (!currentUris.includes(infos[infoVariant].uri)) {