From c69bc126377729de1483d084a88d1aa5fbd36327 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 13 Jul 2021 14:12:58 +0200 Subject: [PATCH] Be more precise if the timer is paused and resume. --- .../main/java/im/vector/app/core/utils/CountUpTimer.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/vector/src/main/java/im/vector/app/core/utils/CountUpTimer.kt b/vector/src/main/java/im/vector/app/core/utils/CountUpTimer.kt index c812d8d644..e14fd99ef5 100644 --- a/vector/src/main/java/im/vector/app/core/utils/CountUpTimer.kt +++ b/vector/src/main/java/im/vector/app/core/utils/CountUpTimer.kt @@ -17,6 +17,7 @@ package im.vector.app.core.utils import io.reactivex.Observable +import timber.log.Timber import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicLong @@ -26,11 +27,12 @@ class CountUpTimer(private val intervalInMs: Long) { private val elapsedTime: AtomicLong = AtomicLong() private val resumed: AtomicBoolean = AtomicBoolean(false) - private val disposable = Observable.interval(intervalInMs, TimeUnit.MILLISECONDS) + private val disposable = Observable.interval(intervalInMs / 10, TimeUnit.MILLISECONDS) .filter { resumed.get() } - .doOnNext { elapsedTime.addAndGet(intervalInMs) } + .map { elapsedTime.addAndGet(intervalInMs / 10) } + .filter { it % intervalInMs == 0L } .subscribe { - tickListener?.onTick(elapsedTime.get()) + tickListener?.onTick(it) } var tickListener: TickListener? = null