From af38886f9739ce9e533315d3aeda4f51a2ae93ad Mon Sep 17 00:00:00 2001
From: reusedname <155286845+reusedname@users.noreply.github.com>
Date: Sun, 19 Jan 2025 11:35:56 +0500
Subject: [PATCH] faster shutdown, adjust download reschedule time

(cherry picked from commit ef818843185eba80fbe58786c91e2bc52994f9da)
---
 .../main/java/ctbrec/recorder/SimplifiedLocalRecorder.java    | 2 +-
 .../ctbrec/recorder/download/hls/AbstractHlsDownload.java     | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/common/src/main/java/ctbrec/recorder/SimplifiedLocalRecorder.java b/common/src/main/java/ctbrec/recorder/SimplifiedLocalRecorder.java
index 067d9f22..d5383409 100644
--- a/common/src/main/java/ctbrec/recorder/SimplifiedLocalRecorder.java
+++ b/common/src/main/java/ctbrec/recorder/SimplifiedLocalRecorder.java
@@ -728,7 +728,7 @@ public class SimplifiedLocalRecorder implements Recorder {
     }
 
     private void tryRestartRecording(Model model) {
-        if (!running) {
+        if (!running || shuttingDown) {
             // recorder is not in recording state
             return;
         }
diff --git a/common/src/main/java/ctbrec/recorder/download/hls/AbstractHlsDownload.java b/common/src/main/java/ctbrec/recorder/download/hls/AbstractHlsDownload.java
index 80a205da..c09f5ab7 100644
--- a/common/src/main/java/ctbrec/recorder/download/hls/AbstractHlsDownload.java
+++ b/common/src/main/java/ctbrec/recorder/download/hls/AbstractHlsDownload.java
@@ -154,7 +154,7 @@ public abstract class AbstractHlsDownload extends AbstractDownload {
                 model.delay();
                 stop();
             } else {
-                rescheduleTime = beforeLastPlaylistRequest; // try again as fast as possible
+                rescheduleTime = Instant.now(); // try again as fast as possible
             }
         } catch (EOFException e) {
             // end of playlist reached
@@ -422,6 +422,8 @@ public abstract class AbstractHlsDownload extends AbstractDownload {
 
     private void calculateRescheduleTime() {
         rescheduleTime = beforeLastPlaylistRequest.plusMillis(1000);
+        if (Instant.now().isAfter(rescheduleTime))
+            rescheduleTime = Instant.now();
         recordingEvents.add(RecordingEvent.of("next playlist download scheduled for " + rescheduleTime.toString()));
     }