mirror of
https://github.com/fcitx5-android/fcitx5-android.git
synced 2026-08-02 04:44:35 +08:00
Replace PriorityQueue with CopyOnWriteArrayList in FcitxRemoteService
PriorityQueue's iterator does not guarantee the traverse order https://docs.oracle.com/javase/8/docs/api/java/util/PriorityQueue.html#iterator--
This commit is contained in:
parent
736d782bd8
commit
e1371c95c5
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
* SPDX-FileCopyrightText: Copyright 2021-2023 Fcitx5 for Android Contributors
|
||||
* SPDX-FileCopyrightText: Copyright 2021-2026 Fcitx5 for Android Contributors
|
||||
*/
|
||||
package org.fcitx.fcitx5.android
|
||||
|
||||
@ -27,7 +27,7 @@ import org.fcitx.fcitx5.android.utils.Const
|
||||
import org.fcitx.fcitx5.android.utils.desc
|
||||
import org.fcitx.fcitx5.android.utils.descEquals
|
||||
import timber.log.Timber
|
||||
import java.util.PriorityQueue
|
||||
import java.util.concurrent.CopyOnWriteArrayList
|
||||
|
||||
class FcitxRemoteService : Service() {
|
||||
|
||||
@ -35,8 +35,7 @@ class FcitxRemoteService : Service() {
|
||||
|
||||
private val scope = MainScope() + CoroutineName("FcitxRemoteService")
|
||||
|
||||
private val clipboardTransformers =
|
||||
PriorityQueue<IClipboardEntryTransformer>(3, compareByDescending { it.priority })
|
||||
private val clipboardTransformers = CopyOnWriteArrayList<IClipboardEntryTransformer>()
|
||||
|
||||
private fun transformClipboard(source: String): String {
|
||||
var result = source
|
||||
@ -75,6 +74,7 @@ class FcitxRemoteService : Service() {
|
||||
Timber.d("registerClipboardEntryTransformer: ${transformer.desc}")
|
||||
if (transformer.description.isNullOrBlank()) {
|
||||
Timber.w("Cannot register ClipboardEntryTransformer of null or empty description")
|
||||
return
|
||||
}
|
||||
if (clipboardTransformers.any { it.descEquals(transformer) }) {
|
||||
Timber.w("ClipboardEntryTransformer ${transformer.desc} has already been registered")
|
||||
@ -85,6 +85,7 @@ class FcitxRemoteService : Service() {
|
||||
unregisterClipboardEntryTransformer(transformer)
|
||||
}, 0)
|
||||
clipboardTransformers.add(transformer)
|
||||
clipboardTransformers.sortByDescending { it.priority }
|
||||
updateClipboardManager()
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user