diff --git a/app/src/main/java/org/linphone/ui/call/conference/model/ConferenceParticipantDeviceModel.kt b/app/src/main/java/org/linphone/ui/call/conference/model/ConferenceParticipantDeviceModel.kt index e4c584fee..2d9d937ae 100644 --- a/app/src/main/java/org/linphone/ui/call/conference/model/ConferenceParticipantDeviceModel.kt +++ b/app/src/main/java/org/linphone/ui/call/conference/model/ConferenceParticipantDeviceModel.kt @@ -192,9 +192,16 @@ class ConferenceParticipantDeviceModel @WorkerThread fun destroy() { + clearWindowId() device.removeListener(deviceListener) } + @WorkerThread + fun clearWindowId() { + Log.i("$TAG Clearing participant [${device.address.asStringUriOnly()}] device window ID") + device.nativeVideoWindowId = null + } + @UiThread fun setTextureView(view: TextureView) { Log.i( diff --git a/app/src/main/java/org/linphone/ui/call/conference/viewmodel/ConferenceViewModel.kt b/app/src/main/java/org/linphone/ui/call/conference/viewmodel/ConferenceViewModel.kt index e6b1ac40d..be868a14e 100644 --- a/app/src/main/java/org/linphone/ui/call/conference/viewmodel/ConferenceViewModel.kt +++ b/app/src/main/java/org/linphone/ui/call/conference/viewmodel/ConferenceViewModel.kt @@ -463,6 +463,9 @@ class ConferenceViewModel } } + Log.i("$TAG Clearing participant devices window IDs") + participantDevices.value.orEmpty().forEach(ConferenceParticipantDeviceModel::clearWindowId) + if (currentLayout == AUDIO_ONLY_LAYOUT) { // Previous layout was audio only, make sure video isn't sent without user consent when switching layout Log.i(