summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2025-08-01 16:05:06 +0200
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2025-08-01 16:05:06 +0200
commita7b8f9e34cb4135dea66289ee2e5ffc1ec4d8382 (patch)
tree39a4f5c014ec7906cf3beb031f1ce839fcfc7f7c /android/app/src
parent5a8e054da09b27b541cf57722252feb63affdb96 (diff)
parentaed51df25e9ac8c5047bd5dfdcc7a5f5c83104d3 (diff)
downloadmullvadvpn-a7b8f9e34cb4135dea66289ee2e5ffc1ec4d8382.tar.xz
mullvadvpn-a7b8f9e34cb4135dea66289ee2e5ffc1ec4d8382.zip
Merge branch 'app-crashes-when-using-split-tunneling-on-new-android-droid-2099'
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/Drawable.kt10
2 files changed, 7 insertions, 8 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt
index 796ce53baa..05fa19e28f 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt
@@ -33,7 +33,8 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.compose.component.SpacedColumn
-import net.mullvad.mullvadvpn.compose.util.isBelowMaxSize
+import net.mullvad.mullvadvpn.compose.util.hasValidSize
+import net.mullvad.mullvadvpn.compose.util.isBelowMaxByteSize
import net.mullvad.mullvadvpn.lib.theme.AppTheme
import net.mullvad.mullvadvpn.lib.theme.Dimens
import net.mullvad.mullvadvpn.lib.theme.color.AlphaDisabled
@@ -81,7 +82,7 @@ fun SplitTunnelingCell(
launch(Dispatchers.IO) {
val drawable = onResolveIcon(packageName ?: "")
icon =
- if (drawable != null && drawable.isBelowMaxSize()) {
+ if (drawable != null && drawable.isBelowMaxByteSize() && drawable.hasValidSize()) {
IconState.Icon(drawable = drawable)
} else {
IconState.NoIcon
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/Drawable.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/Drawable.kt
index 3985590879..7d7e2605eb 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/Drawable.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/Drawable.kt
@@ -5,9 +5,7 @@ import android.graphics.drawable.Drawable
private const val MAX_BITMAP_SIZE_BYTES = 100 * 1024 * 1024 // 100MB
-fun Drawable.isBelowMaxSize(): Boolean =
- if (this is BitmapDrawable) {
- bitmap.byteCount < MAX_BITMAP_SIZE_BYTES
- } else {
- true
- }
+fun Drawable.isBelowMaxByteSize(): Boolean =
+ if (this is BitmapDrawable) bitmap.byteCount < MAX_BITMAP_SIZE_BYTES else true
+
+fun Drawable.hasValidSize(): Boolean = intrinsicHeight > 0 && intrinsicWidth > 0