diff --git a/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt b/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt index 9256ee762..97c161bba 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt @@ -33,10 +33,16 @@ import androidx.compose.material.Text import androidx.compose.material.TextButton import androidx.compose.material.rememberScaffoldState import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.Font @@ -204,6 +210,10 @@ private fun WallpaperThumbnailItem( aspectRatio: Float = 1.1f, onSelect: (Wallpaper) -> Unit ) { + var bitmap by remember { mutableStateOf(loadWallpaperResource(wallpaper)) } + DisposableEffect(LocalConfiguration.current.orientation) { + onDispose { bitmap = loadWallpaperResource(wallpaper) } + } val thumbnailShape = RoundedCornerShape(8.dp) val border = if (isSelected) { Modifier.border( @@ -214,9 +224,9 @@ private fun WallpaperThumbnailItem( Modifier } - val bitmap = loadWallpaperResource(wallpaper) // Completely avoid drawing the item if a bitmap cannot be loaded and is required if (bitmap == null && wallpaper != defaultWallpaper) return + Surface( elevation = 4.dp, shape = thumbnailShape, @@ -228,9 +238,9 @@ private fun WallpaperThumbnailItem( .then(border) .clickable { onSelect(wallpaper) } ) { - if (bitmap != null) { + bitmap?.let { Image( - bitmap = bitmap.asImageBitmap(), + bitmap = it.asImageBitmap(), contentScale = ContentScale.FillBounds, contentDescription = stringResource( R.string.wallpapers_item_name_content_description, wallpaper.name