@@ -401,7 +401,7 @@ public void trackChanged(@NotNull String playbackId, @Nullable MetadataWrapper m
401401 state .setPosition (pos );
402402 state .updated ();
403403
404- events .trackChanged ();
404+ events .trackChanged (false );
405405 events .metadataAvailable ();
406406
407407 session .eventService ().sendEvent (new NewPlaybackIdEvent (state .getSessionId (), playbackId ));
@@ -495,7 +495,7 @@ private void loadTrack(boolean play, @NotNull TransitionInfo trans) {
495495 state .setState (true , !play , true );
496496 state .updated ();
497497
498- events .trackChanged ();
498+ events .trackChanged (true );
499499 if (play ) events .playbackResumed ();
500500 else events .playbackPaused ();
501501
@@ -859,7 +859,7 @@ public void close() {
859859 public interface EventsListener {
860860 void onContextChanged (@ NotNull Player player , @ NotNull String newUri );
861861
862- void onTrackChanged (@ NotNull Player player , @ NotNull PlayableId id , @ Nullable MetadataWrapper metadata );
862+ void onTrackChanged (@ NotNull Player player , @ NotNull PlayableId id , @ Nullable MetadataWrapper metadata , boolean userInitiated );
863863
864864 void onPlaybackEnded (@ NotNull Player player );
865865
@@ -973,7 +973,8 @@ public void onContextChanged(@NotNull Player player, @NotNull String newUri) {
973973 }
974974
975975 @ Override
976- public void onTrackChanged (@ NotNull Player player , @ NotNull PlayableId id , @ Nullable MetadataWrapper metadata ) {
976+ public void onTrackChanged (@ NotNull Player player , @ NotNull PlayableId id , @ Nullable MetadataWrapper metadata , boolean userInitiated ) {
977+ if (userInitiated ) dacpPipe .sendPipeFlush ();
977978 }
978979
979980 @ Override
@@ -1066,13 +1067,13 @@ void contextChanged() {
10661067 executorService .execute (() -> l .onContextChanged (Player .this , uri ));
10671068 }
10681069
1069- void trackChanged () {
1070+ void trackChanged (boolean userInitiated ) {
10701071 PlayableId id = state .getCurrentPlayable ();
10711072 if (id == null ) return ;
10721073
10731074 MetadataWrapper metadata = currentMetadata ();
10741075 for (EventsListener l : new ArrayList <>(listeners ))
1075- executorService .execute (() -> l .onTrackChanged (Player .this , id , metadata ));
1076+ executorService .execute (() -> l .onTrackChanged (Player .this , id , metadata , userInitiated ));
10761077 }
10771078
10781079 void seeked (int pos ) {
0 commit comments