Colin White
Colin White
Agreed, it sounds like `MediaMetadataRetriever` slow decoding is likely the cause, though I'm not sure why Glide's Compose integration would be faster as I believe they also use `MediaMetadataRetriever`.
Took a spike at using `launch(start = CoroutineStart.UNDISPATCHED)` instead of `Dispatchers.Main.immedate` and `UNDISPATCHED` still causes us to dispatch as we only avoid dispatching "until the next suspension", which is `imageLoader.execute`....
Preserving binary compatibility `data class` is [hard to maintain](https://jakewharton.com/public-api-challenges-in-kotlin/). Using a builder pattern like you mentioned or using [Poko](https://github.com/drewhamilton/Poko) and manually defining secondary constructors and `copy` functions and [deprecating them...
Yep it's definitely bad design on `ImageDecoder`'s part. Worst case we can probably work around this in Coil by checking if the returned input stream is an `AssetInputStream` ahead of...