Skip to content

Commit 567ec43

Browse files
committed
fix: indexing stuck sometimes
ref: #657 #723
1 parent d053610 commit 567ec43

File tree

3 files changed

+6
-6
lines changed

3 files changed

+6
-6
lines changed

android/app/src/main/kotlin/com/msob7y/namida/FAudioTagger.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import java.io.File
1414
import java.io.FileOutputStream
1515
import java.nio.ByteBuffer
1616
import java.util.Base64
17-
import java.util.concurrent.CompletableFuture
1817
import kotlin.collections.List
1918
import kotlin.collections.Map
2019
import kotlinx.coroutines.*
@@ -40,7 +39,7 @@ public class FAudioTagger : FlutterPlugin, MethodCallHandler {
4039
lateinit var channel: MethodChannel
4140
lateinit var binaryMessenger: BinaryMessenger
4241
val eventChannels = HashMap<Number, BetterEventChannel>()
43-
val streamCompleters = HashMap<Number, CompletableFuture<Number>>()
42+
val streamCompleters = HashMap<Number, CompletableDeferred<Number>>()
4443
lateinit var context: Context
4544

4645
companion object {
@@ -145,13 +144,13 @@ public class FAudioTagger : FlutterPlugin, MethodCallHandler {
145144
val eventChannel = eventChannels.get(streamKey)!!
146145
val eventChannelIndices = BetterEventChannel(binaryMessenger, "faudiotagger/stream/" + streamKey + ".index")
147146

148-
streamCompleters.set(streamKey, CompletableFuture<Number>())
147+
streamCompleters.set(streamKey, CompletableDeferred<Number>())
149148
result.success(streamKey)
150149

151150
CoroutineScope(Dispatchers.IO).launch {
152151
_addLogsUser()
153152
// waiting for confirmation before posting to stream
154-
streamCompleters.get(streamKey)!!.get()
153+
streamCompleters.get(streamKey)!!.await()
155154
var index: Int = -1
156155
for (p in paths) {
157156
var map = HashMap<String, Any>()

lib/controller/platform/tags_extractor/tags_extractor_base.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,5 +114,6 @@ class ExtractingPathKey {
114114
int _initial = 0;
115115
ExtractingPathKey.create();
116116

117-
int next() => _initial++;
117+
// always use unique keys, reusing same event channels can result in indexing being stuck
118+
int next() => (_initial++) + DateTime.now().microsecondsSinceEpoch;
118119
}

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: namida
22
description: A Beautiful and Feature-rich Music Player, With YouTube & Video Support Built in Flutter
33
publish_to: "none"
4-
version: 5.4.65-beta+251111197
4+
version: 5.4.66-beta+251113212
55

66
environment:
77
sdk: ">=3.6.0 <4.0.0"

0 commit comments

Comments
 (0)