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.
This commit is contained in:
parent
c0b2dee3ff
commit
14c9b81532
5 changed files with 10 additions and 9 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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."
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -145,8 +145,6 @@ class PlaybackFragment : Fragment() {
|
|||
}
|
||||
}
|
||||
|
||||
logD(resources.configuration.smallestScreenWidthDp)
|
||||
|
||||
logD("Fragment Created.")
|
||||
|
||||
return binding.root
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -22,10 +22,10 @@
|
|||
|
||||
<string name="lbl_sort">Sort</string>
|
||||
<string name="lbl_sort_name">Name</string>
|
||||
<string name="lbl_sort_asc">Ascending</string>
|
||||
<string name="lbl_sort_artist">Artist</string>
|
||||
<string name="lbl_sort_album">Album</string>
|
||||
<string name="lbl_sort_year">Year</string>
|
||||
<string name="lbl_sort_asc">Ascending</string>
|
||||
|
||||
<string name="lbl_playback">Now Playing</string>
|
||||
<string name="lbl_play">Play</string>
|
||||
|
|
Loading…
Reference in a new issue