diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-30 13:22:58 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-30 15:33:41 +0000 |
| commit | 576647202c9d398d09c42eb80a00d754c2a0dd9b (patch) | |
| tree | 71a1d10efb68924586d4de5cea865b6dbe5be542 | |
| parent | 9737bd153ecea81fe5e9c0efd41e7b0f890f8054 (diff) | |
| download | mullvadvpn-576647202c9d398d09c42eb80a00d754c2a0dd9b.tar.xz mullvadvpn-576647202c9d398d09c42eb80a00d754c2a0dd9b.zip | |
Separate actual jobs from reaper jobs
Make sure the actual job is cancelled instead of only the reaper job.
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt index 7be0668f61..51109e6f2d 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt @@ -8,6 +8,7 @@ import kotlinx.coroutines.launch class JobTracker { private val jobs = HashMap<Long, Job>() + private val reaperJobs = HashMap<Long, Job>() private val namedJobs = HashMap<String, Long>() private var jobIdCounter = 0L @@ -18,7 +19,9 @@ class JobTracker { jobIdCounter += 1 - jobs.put(jobId, GlobalScope.launch(Dispatchers.Default) { + jobs.put(jobId, job) + + reaperJobs.put(jobId, GlobalScope.launch(Dispatchers.Default) { job.join() synchronized(jobs) { @@ -69,6 +72,7 @@ class JobTracker { fun cancelJob(jobId: Long) { synchronized(jobs) { jobs.remove(jobId)?.cancel() + reaperJobs.remove(jobId)?.cancel() } } @@ -78,7 +82,12 @@ class JobTracker { job.cancel() } + for (job in reaperJobs.values) { + job.cancel() + } + jobs.clear() + reaperJobs.clear() } } } |
