From 14c9b81532b1f4acda5a70c93525a17341e0f5f0 Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Fri, 26 Nov 2021 11:41:01 -0700 Subject: [PATCH] coil: fix mosaics on odd image sizes Round the image sizes we use for our mosaics so that they are even. Previously we didn't, and that resulted in bad mosaics being created. --- .../main/java/org/oxycblt/auxio/coil/AuxioFetcher.kt | 11 +++++++---- .../main/java/org/oxycblt/auxio/music/MusicStore.kt | 2 +- .../org/oxycblt/auxio/playback/PlaybackFragment.kt | 2 -- .../org/oxycblt/auxio/playback/PlaybackViewModel.kt | 2 +- app/src/main/res/values/strings.xml | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/coil/AuxioFetcher.kt b/app/src/main/java/org/oxycblt/auxio/coil/AuxioFetcher.kt index 6e45eda44..9489ab792 100644 --- a/app/src/main/java/org/oxycblt/auxio/coil/AuxioFetcher.kt +++ b/app/src/main/java/org/oxycblt/auxio/coil/AuxioFetcher.kt @@ -126,7 +126,7 @@ abstract class AuxioFetcher : Fetcher { context, MediaItem.fromUri(uri) ) - // future.get is a blocking call that makes the us spin until the future is done. + // future.get is a blocking call that makes us spin until the future is done. // This is bad for a co-routine, as it prevents cancellation and by extension // messes with the image loading process and causes frustrating bugs. // To fix this we wrap this around in a withContext call to make it suspend and make @@ -212,10 +212,11 @@ abstract class AuxioFetcher : Fetcher { } } - // Use whatever size coil gives us to create the mosaic. If there is no size, default - // to a 512x512 mosaic. + // Use whatever size coil gives us to create the mosaic, rounding it to even so that we + // get a symmetrical mosaic [and to prevent bugs]. If there is no size, default to a + // 512x512 mosaic. val mosaicSize = when (size) { - is PixelSize -> size + is PixelSize -> PixelSize(size.width.roundEven(), size.height.roundEven()) else -> PixelSize(512, 512) } @@ -263,4 +264,6 @@ abstract class AuxioFetcher : Fetcher { dataSource = DataSource.DISK ) } + + private fun Int.roundEven(): Int = if (mod(2) != 0) inc() else this } diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicStore.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicStore.kt index e7cfd3536..a03d89156 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicStore.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicStore.kt @@ -205,7 +205,7 @@ class MusicStore private constructor() { */ fun requireInstance(): MusicStore { return requireNotNull(maybeGetInstance()) { - "MusicStore instance was not loaded or loading failed." + "Required MusicStore instance was not available." } } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt index 46396e8e2..5235d69c5 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt @@ -145,8 +145,6 @@ class PlaybackFragment : Fragment() { } } - logD(resources.configuration.smallestScreenWidthDp) - logD("Fragment Created.") return binding.root diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt index 56d5fa01c..3ac870a3b 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt @@ -245,7 +245,7 @@ class PlaybackViewModel : ViewModel(), PlaybackStateManager.Callback { private fun playWithUriInternal(uri: Uri, context: Context) { logD("Playing with uri $uri") - val musicStore = MusicStore.requireInstance() + val musicStore = MusicStore.maybeGetInstance() ?: return musicStore.findSongForUri(uri, context.contentResolver)?.let { song -> playSong(song) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3e8750013..435a9d43b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -22,10 +22,10 @@ Sort Name - Ascending Artist Album Year + Ascending Now Playing Play