diff --git a/musikr/src/main/java/org/oxycblt/musikr/pipeline/ExtractStep.kt b/musikr/src/main/java/org/oxycblt/musikr/pipeline/ExtractStep.kt index 72be20214..60395be44 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/pipeline/ExtractStep.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/pipeline/ExtractStep.kt @@ -90,7 +90,6 @@ private class ExtractStepImpl( val fds = uncachedSongs - .shuffle() .mapNotNull { wrap(it) { file -> withContext(Dispatchers.IO) { diff --git a/musikr/src/main/java/org/oxycblt/musikr/pipeline/FlowUtil.kt b/musikr/src/main/java/org/oxycblt/musikr/pipeline/FlowUtil.kt index 2ae472a29..f8716ba04 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/pipeline/FlowUtil.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/pipeline/FlowUtil.kt @@ -82,15 +82,3 @@ internal fun Flow.distribute(n: Int): DistributedFlow { val hotFlows = posChannels.map { it.receiveAsFlow() }.toTypedArray() return DistributedFlow(managerFlow, hotFlows) } - -internal fun Flow.shuffle() = flow { - // As far as I'm aware, the only way to get a truly normal distribution - // on a flow is by evaluating it. I tried a bunch of different strategies - // on lazily shuffling a flow and it simply doesn't produce a good enough - // distribution since you need to emit late stuff early and early stuff - // late. It's best to just eval and re-emit. - val output = mutableListOf() - toList(output) - output.shuffle() - emitAll(output.asFlow()) -}