From 1af7aa8a16bbb9c12904d4ae4740dcf8bfaba0ad Mon Sep 17 00:00:00 2001 From: Dude so hot Date: Mon, 21 Oct 2024 16:29:33 +0800 Subject: [PATCH] Allow configure thumb concurrency temporarily --- app/src/main/kotlin/com/hippo/ehviewer/Settings.kt | 1 + .../hippo/ehviewer/coil/LimitConcurrencyNetworkClient.kt | 5 +++-- .../com/hippo/ehviewer/ui/settings/AdvancedScreen.kt | 7 +++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt b/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt index ed6ce83b0..86f656383 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt @@ -212,6 +212,7 @@ object Settings : DataStorePreferences(null) { val showNavigationOverlayNewUser = boolPref("reader_navigation_overlay_new_user", true) val showNavigationOverlayOnStart = boolPref("reader_navigation_overlay_on_start", false) val stripExtraneousAds = boolPref("strip_extraneous_ads", false) + var thumbConcurrency by intPref("thumb_concurrency", 4) val userAgent get() = if (desktopSite) CHROME_USER_AGENT else CHROME_MOBILE_USER_AGENT diff --git a/app/src/main/kotlin/com/hippo/ehviewer/coil/LimitConcurrencyNetworkClient.kt b/app/src/main/kotlin/com/hippo/ehviewer/coil/LimitConcurrencyNetworkClient.kt index c024df6ec..bf3d08847 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/coil/LimitConcurrencyNetworkClient.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/coil/LimitConcurrencyNetworkClient.kt @@ -4,6 +4,7 @@ import coil3.network.NetworkClient import coil3.network.NetworkRequest import coil3.network.NetworkResponse import coil3.network.ktor3.asNetworkClient +import com.hippo.ehviewer.Settings import com.hippo.ehviewer.client.URL_PREFIX_THUMB_E import com.hippo.ehviewer.client.URL_PREFIX_THUMB_EX import io.ktor.client.HttpClient @@ -11,8 +12,8 @@ import kotlinx.coroutines.sync.Semaphore import kotlinx.coroutines.sync.withPermit class LimitConcurrencyNetworkClient(val impl: NetworkClient) : NetworkClient { - val eSemaphore = Semaphore(4) - val exSemaphore = Semaphore(4) + val eSemaphore = Semaphore(Settings.thumbConcurrency) + val exSemaphore = Semaphore(Settings.thumbConcurrency) override suspend fun executeRequest(req: NetworkRequest, f: suspend (NetworkResponse) -> T): T { val url = req.url return when { diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt index 19cb8e957..0354040ca 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt @@ -182,6 +182,13 @@ fun AdvancedScreen(navigator: DestinationsNavigator) { value = Settings::enableCronet, ) } + IntSliderPreference( + maxValue = 16, + minValue = 2, + step = 1, + title = "Thumb Concurrency (Restart required)", + value = Settings::thumbConcurrency, + ) if (isAtLeastO) { IntSliderPreference( maxValue = 16384,