From f454f467782accab4061a4a24559dccf9af8284f Mon Sep 17 00:00:00 2001 From: Matthias Urhahn Date: Thu, 2 Feb 2023 16:46:36 +0100 Subject: [PATCH] Fix potential widget issue where a broadcast race condition causes the goAsync() to fail. (#94) --- .../java/eu/darken/capod/main/ui/widget/WidgetProvider.kt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetProvider.kt b/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetProvider.kt index cd30f8b8..e234601f 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetProvider.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetProvider.kt @@ -37,15 +37,13 @@ class WidgetProvider : AppWidgetProvider() { @Inject lateinit var upgradeRepo: UpgradeRepo @AppScope @Inject lateinit var appScope: CoroutineScope - private var asyncBarrier: PendingResult? = null - private fun executeAsync( tag: String, - timeout: Duration = Duration.ofSeconds(10), + timeout: Duration = Duration.ofSeconds(8), block: suspend () -> Unit ) { val start = System.currentTimeMillis() - asyncBarrier = goAsync() + val asyncBarrier = goAsync() log(TAG, VERBOSE) { "executeAsync($tag) starting asyncBarrier=$asyncBarrier " } appScope.launch { @@ -54,7 +52,7 @@ class WidgetProvider : AppWidgetProvider() { } catch (e: Exception) { log(TAG, ERROR) { "executeAsync($tag) failed: ${e.asLog()}" } } finally { - asyncBarrier?.finish() + asyncBarrier.finish() val stop = System.currentTimeMillis() log(TAG, VERBOSE) { "executeAsync($tag) DONE (${stop - start}ms) " } }