From 5c2b718d79dd706a9f2fe92085cc60206ac587ed Mon Sep 17 00:00:00 2001
From: G2-Games <ke0bhogsg@gmail.com>
Date: Tue, 5 Dec 2023 13:26:47 -0600
Subject: [PATCH] Indefinite network streams are now properly queued

---
 src/music_player.rs | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/music_player.rs b/src/music_player.rs
index 929332f..0bae684 100644
--- a/src/music_player.rs
+++ b/src/music_player.rs
@@ -171,7 +171,7 @@ impl Player {
                 self.play().unwrap();
 
                 while uri.get::<&str>().unwrap_or("") == self.property("current-uri").get::<&str>().unwrap_or("")
-                    || self.raw_duration().is_none()
+                    || self.position().is_none()
                 {
                     std::thread::sleep(std::time::Duration::from_millis(10));
                 }
@@ -267,15 +267,22 @@ impl Player {
 
     /// Seek absolutely
     pub fn seek_to(&mut self, target_pos: Duration) -> Result<(), Box<dyn Error>> {
+        let start;
         if self.start.read().unwrap().is_none() {
             return Err("Failed to seek: No START time".into());
+        } else {
+            start = self.start.read().unwrap().unwrap();
         }
 
+        let end;
         if self.end.read().unwrap().is_none() {
             return Err("Failed to seek: No END time".into());
+        } else {
+            end = self.end.read().unwrap().unwrap();
         }
 
-        let clamped_target = target_pos.clamp(self.start.read().unwrap().unwrap(), self.end.read().unwrap().unwrap());
+        let adjusted_target = target_pos + start;
+        let clamped_target = adjusted_target.clamp(start, end);
 
         let seek_pos_clock =
             ClockTime::from_useconds(clamped_target.num_microseconds().unwrap() as u64);