@@ -530,6 +530,9 @@ public class Music.PlaybackManager : Object {
530530 update_next_previous_sensitivity ();
531531
532532 play_pause_action. set_enabled (current_audio != null );
533+
534+ var uri_last_played = current_audio != null ? current_audio. uri : " " ;
535+ settings. set_string (" uri-last-played" , uri_last_played);
533536 }
534537
535538 private void save_queue () {
@@ -544,6 +547,10 @@ public class Music.PlaybackManager : Object {
544547 }
545548
546549 public void restore_queue () {
550+ // Restoring the queue overwrites the last played. So we need to retrieve it before taking care of the queue
551+ var uri_last_played = settings. get_string (" uri-last-played" );
552+ var file_last_played = File . new_for_uri (uri_last_played);
553+
547554 var last_session_uri = settings. get_strv (" previous-queue" );
548555 var last_session_files = new File [last_session_uri. length];
549556
@@ -555,5 +562,19 @@ public class Music.PlaybackManager : Object {
555562
556563 var files_to_play = Application . loop_through_files (last_session_files);
557564 queue_files (files_to_play);
565+
566+ if (uri_last_played != " " && file_last_played. query_exists ()) {
567+ var audio_object = new AudioObject (uri_last_played);
568+ uint position = - 1 ;
569+ if (! queue_liststore. find_with_equal_func (
570+ audio_object,
571+ (EqualFunc<AudioObject > ) AudioObject . equal_func,
572+ out position
573+ )) {
574+ return ;
575+ }
576+
577+ current_audio = (AudioObject ) queue_liststore. get_item (position);
578+ }
558579 }
559580}
0 commit comments