From e3dec420fd56a9db93798e549080a89828d46f5b Mon Sep 17 00:00:00 2001 From: 0xb00bface <0xboobface@gmail.com> Date: Sun, 9 Apr 2023 19:15:34 +0200 Subject: [PATCH] Only update recordings, if they might have been changed --- common/src/main/java/ctbrec/Recording.java | 34 ++++++++++++------- .../ctbrec/recorder/NextGenLocalRecorder.java | 1 + 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/common/src/main/java/ctbrec/Recording.java b/common/src/main/java/ctbrec/Recording.java index 5c7f821d..20d05f1e 100644 --- a/common/src/main/java/ctbrec/Recording.java +++ b/common/src/main/java/ctbrec/Recording.java @@ -1,6 +1,11 @@ package ctbrec; -import static ctbrec.Recording.State.*; +import ctbrec.event.EventBusHolder; +import ctbrec.event.RecordingStateChangedEvent; +import ctbrec.io.IoUtils; +import ctbrec.recorder.download.Download; +import ctbrec.recorder.download.VideoLengthDetector; +import lombok.extern.slf4j.Slf4j; import java.io.File; import java.io.IOException; @@ -15,17 +20,10 @@ import java.util.Optional; import java.util.Set; import java.util.concurrent.Callable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import ctbrec.event.EventBusHolder; -import ctbrec.event.RecordingStateChangedEvent; -import ctbrec.io.IoUtils; -import ctbrec.recorder.download.Download; -import ctbrec.recorder.download.VideoLengthDetector; +import static ctbrec.Recording.State.*; +@Slf4j public class Recording implements Serializable, Callable { - private static final transient Logger LOG = LoggerFactory.getLogger(Recording.class); private String id; private Model model; @@ -44,6 +42,11 @@ public class Recording implements Serializable, Callable { private File postProcessedFile = null; private int selectedResolution = -1; + /** + * Signals, if the recording has been changed and it has to be refreshed + */ + private boolean dirtyFlag = true; + public enum State { RECORDING("recording"), GENERATING_PLAYLIST("generating playlist"), @@ -268,7 +271,7 @@ public class Recording implements Serializable, Callable { } return sum; } catch (IOException e) { - LOG.error("Couldn't determine recording size", e); + log.error("Couldn't determine recording size", e); return -1; } } @@ -288,7 +291,10 @@ public class Recording implements Serializable, Callable { } public void refresh() { - sizeInByte = getSize(); + if ((status != FINISHED && status != FAILED) || dirtyFlag) { + sizeInByte = getSize(); + dirtyFlag = false; + } } public boolean canBePostProcessed() { @@ -309,4 +315,8 @@ public class Recording implements Serializable, Callable { .findFirst() .map(File::new); } + + public void setDirtyFlag(boolean dirtyFlag) { + this.dirtyFlag = dirtyFlag; + } } diff --git a/common/src/main/java/ctbrec/recorder/NextGenLocalRecorder.java b/common/src/main/java/ctbrec/recorder/NextGenLocalRecorder.java index 3cd5f201..5badb613 100644 --- a/common/src/main/java/ctbrec/recorder/NextGenLocalRecorder.java +++ b/common/src/main/java/ctbrec/recorder/NextGenLocalRecorder.java @@ -182,6 +182,7 @@ public class NextGenLocalRecorder implements Recorder { private void submitPostProcessingJob(Recording recording) { ppPool.submit(() -> { try { + recording.setDirtyFlag(true); setRecordingStatus(recording, State.POST_PROCESSING); recording.getDownload().finalizeDownload(); recording.refresh();