File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -84,6 +84,7 @@ struct SpircTaskConfig {
8484 autoplay : bool ,
8585}
8686
87+ const CONTEXT_TRACKS_HISTORY : usize = 10 ;
8788const CONTEXT_FETCH_THRESHOLD : u32 = 5 ;
8889
8990const VOLUME_STEPS : i64 = 64 ;
@@ -1051,9 +1052,21 @@ impl SpircTask {
10511052 let new_tracks = & context. tracks ;
10521053 debug ! ( "Adding {:?} tracks from context to frame" , new_tracks. len( ) ) ;
10531054 let mut track_vec = self . state . take_track ( ) . into_vec ( ) ;
1055+ if let Some ( head) = track_vec. len ( ) . checked_sub ( CONTEXT_TRACKS_HISTORY ) {
1056+ track_vec. drain ( 0 ..head) ;
1057+ }
10541058 track_vec. extend_from_slice ( new_tracks) ;
10551059 self . state
10561060 . set_track ( protobuf:: RepeatedField :: from_vec ( track_vec) ) ;
1061+
1062+ // Update playing index
1063+ if let Some ( new_index) = self
1064+ . state
1065+ . get_playing_track_index ( )
1066+ . checked_sub ( CONTEXT_TRACKS_HISTORY as u32 )
1067+ {
1068+ self . state . set_playing_track_index ( new_index) ;
1069+ }
10571070 } else {
10581071 warn ! ( "No context to update from!" ) ;
10591072 }
You can’t perform that action at this time.
0 commit comments