From ff68336c1bd36d4f946ce5372be1cd4e8d10cc4b Mon Sep 17 00:00:00 2001 From: velvettear Date: Fri, 24 Nov 2023 10:10:39 +0100 Subject: [PATCH] calculate sleep time for slideshow interval more accurately --- internal/slideshow/slideshow.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/slideshow/slideshow.go b/internal/slideshow/slideshow.go index 873ce02..17ee643 100644 --- a/internal/slideshow/slideshow.go +++ b/internal/slideshow/slideshow.go @@ -21,9 +21,10 @@ var previousImage string func Start() { loggo.Info("starting the image slideshow...", "interval: "+strconv.FormatFloat(config.Interval.Seconds(), 'f', 0, 64)+" seconds") var sleepTime time.Duration - var scaleTime time.Duration + var loopTime time.Duration scaleImages := config.IsResolutionSet() for { + loopTimestamp := time.Now() var image string var palette []color.Color var data []byte @@ -34,18 +35,17 @@ func Start() { } } if scaleImages { - scaleTimestamp := time.Now() tmp, error := scale(image) if error != nil { loggo.Error("encountered an error scaling an image", "image: "+image, error.Error()) continue } data = tmp - scaleTime = time.Since(scaleTimestamp) palette, _ = getColorPaletteRaw(data) } else { palette, _ = getColorPalette(image) } + loopTime = time.Since(loopTimestamp) if sleepTime > 0 { loggo.Debug("sleeping for " + strconv.FormatInt(sleepTime.Milliseconds(), 10) + "ms before next image will be displayed...") time.Sleep(sleepTime) @@ -64,7 +64,7 @@ func Start() { } loggo.Info("set new background image", "image: "+image) } - sleepTime = config.Interval - scaleTime + sleepTime = config.Interval - loopTime } }