From cac8ee37d9ff12a7416bd90eab607be26d67a0eb Mon Sep 17 00:00:00 2001 From: reusedname <155286845+reusedname@users.noreply.github.com> Date: Wed, 12 Mar 2025 18:56:34 +0500 Subject: [PATCH] revert to also respecting order of models in a group --- .../ctbrec/recorder/RecordingPreconditions.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/common/src/main/java/ctbrec/recorder/RecordingPreconditions.java b/common/src/main/java/ctbrec/recorder/RecordingPreconditions.java index 66482995..d1da7641 100644 --- a/common/src/main/java/ctbrec/recorder/RecordingPreconditions.java +++ b/common/src/main/java/ctbrec/recorder/RecordingPreconditions.java @@ -20,6 +20,8 @@ import java.util.Objects; import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; +import java.util.stream.IntStream; +import java.util.List; public class RecordingPreconditions { @@ -199,13 +201,16 @@ public class RecordingPreconditions { // go through each model in group in descendind priority order, checking this model last amongst same-prio models // this is to make sure that we only stop lower priority recordings in favor of this one. I.e. if same-prio model is recordnig, let it run - for (var groupModel : modelGroup.get().getModelUrls().stream() - .map(modelUrl -> getModelForUrl(modelUrl)) - .filter(x -> x.isPresent()) - .map(x -> x.get()) + var models = modelGroup.get().getModelUrls().stream() + .map(modelUrl -> getModelForUrl(modelUrl)) + .filter(x -> x.isPresent()) + .map(x -> x.get()) + .toList(); + for (var groupModel : IntStream.range(0, models.size()).boxed() .sorted(Comparator - .comparing((Model m) -> m.getPriority()).reversed() // high to low - .thenComparing((Model m) -> m.getUrl().equals(model.getUrl()))) // this model last (false -> true) + .comparing((Integer i) -> models.get(i).getPriority()).reversed() // high to low + .thenComparing((Integer i) -> i)) // in group's order + .map((Integer i) -> models.get(i)) .toList()) { if (model.getUrl().equals(groupModel.getUrl())) { // no other model with higher prio is online, start recording