From bd0ba98a21ebf41b950910278103f2b2096f4153 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 22 Jun 2022 10:44:58 +0200 Subject: [PATCH] Fixed crashes related to grid layout when more than 6 participants --- .../activities/voip/fragments/ConferenceLayoutFragment.kt | 3 ++- .../org/linphone/activities/voip/views/GridBoxLayout.kt | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceLayoutFragment.kt b/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceLayoutFragment.kt index 5b8c9bfa9..703cc550a 100644 --- a/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceLayoutFragment.kt +++ b/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceLayoutFragment.kt @@ -22,6 +22,7 @@ package org.linphone.activities.voip.fragments import android.os.Bundle import android.view.View import android.widget.LinearLayout +import androidx.constraintlayout.widget.ConstraintLayout import androidx.navigation.navGraphViewModels import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R @@ -81,7 +82,7 @@ class ConferenceLayoutFragment : GenericFragment(R.id.too_many_participants_dialog) + val dialog = binding.root.findViewById(R.id.too_many_participants_dialog) dialog?.visibility = View.VISIBLE } } diff --git a/app/src/main/java/org/linphone/activities/voip/views/GridBoxLayout.kt b/app/src/main/java/org/linphone/activities/voip/views/GridBoxLayout.kt index 27e17fee7..3e68f86e4 100644 --- a/app/src/main/java/org/linphone/activities/voip/views/GridBoxLayout.kt +++ b/app/src/main/java/org/linphone/activities/voip/views/GridBoxLayout.kt @@ -24,6 +24,7 @@ import android.content.Context import android.util.AttributeSet import android.widget.GridLayout import androidx.core.view.children +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.core.tools.Log class GridBoxLayout : GridLayout { @@ -64,6 +65,13 @@ class GridBoxLayout : GridLayout { child.layoutParams = LayoutParams() } + val maxChild = placementMatrix[0].size + if (childCount > maxChild) { + val maxMosaicParticipants = corePreferences.maxConferenceParticipantsForMosaicLayout + Log.e("[GridBoxLayout] $childCount children but placementMatrix only knows how to display $maxChild (max allowed participants for grid layout in settings is $maxMosaicParticipants)") + return + } + val availableSize = Pair(right - left, bottom - top) var cellSize = 0 for (index in 1..childCount) {