Эх сурвалжийг харах

Tweak malformed gid handling

ashthespy 6 жил өмнө
parent
commit
b0ee8ec74d
1 өөрчлөгдсөн 10 нэмэгдсэн , 15 устгасан
  1. 10 15
      connect/src/spirc.rs

+ 10 - 15
connect/src/spirc.rs

@@ -794,30 +794,25 @@ impl SpircTask {
     }
 
     fn load_track(&mut self, play: bool) {
-        let mut index = self.state.get_playing_track_index();
         let track = {
-            // let gid = self.state.get_track()[index as usize].get_gid();
-            let track_ref = self.state.get_track()[index as usize].to_owned();
-            let mut gid = track_ref.get_gid();
-            if gid.len() != 16 {
-                let track_len = self.state.get_track().len() as u32;
-                if index < track_len - 1 {
-                    index = 0;
-                } else {
-                    index = index + 1;
-                }
+            let mut index = self.state.get_playing_track_index();
+            // Check for malformed gid
+            let tracks_len = self.state.get_track().len() as u32;
+            let mut track_ref = &self.state.get_track()[index as usize];
+            while track_ref.get_gid().len() != 16 {
                 warn!(
                     "Skipping track {:?} at position [{}] of {}",
                     track_ref.get_uri(),
                     index,
-                    track_len
+                    tracks_len
                 );
-                gid = self.state.get_track()[index as usize].get_gid();
+                index = if index + 1 < tracks_len { index + 1 } else { 0 };
+                track_ref = &self.state.get_track()[index as usize];
             }
-            SpotifyId::from_raw(gid).unwrap()
+            SpotifyId::from_raw(track_ref.get_gid()).unwrap()
         };
-        let position = self.state.get_position_ms();
 
+        let position = self.state.get_position_ms();
         let end_of_track = self.player.load(track, play, position);
 
         if play {