From 44603a3efaeeb57856d428e9c065a27373a7aa00 Mon Sep 17 00:00:00 2001 From: arkon Date: Fri, 18 Nov 2022 22:57:54 -0500 Subject: [PATCH] Limit parallelism for Coil image loading Reference: https://www.reddit.com/r/androiddev/comments/xbeizp/comment/io4ytdv/ Co-authored-by: ivaniskandar (cherry picked from commit eb6ba96b573a43e171c181f83919f8e16f97ce8d) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/App.kt --- app/src/main/java/eu/kanade/tachiyomi/App.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index c8edfba3b..bc0bef390 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -72,6 +72,7 @@ import exh.log.XLogLogcatLogger import exh.log.xLogD import exh.log.xLogE import exh.syDebugVersion +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.launchIn @@ -206,6 +207,11 @@ class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory { crossfade((300 * this@App.animatorDurationScale).toInt()) allowRgb565(getSystemService()!!.isLowRamDevice) if (networkPreferences.verboseLogging().get()) logger(DebugLogger()) + + // Coil spawns a new thread for every image load by default + fetcherDispatcher(Dispatchers.IO.limitedParallelism(8)) + decoderDispatcher(Dispatchers.IO.limitedParallelism(2)) + transformationDispatcher(Dispatchers.IO.limitedParallelism(2)) }.build() }