Skip to content

Commit e1eb2f4

Browse files
committed
Send DACP pipe flush command only if track change is user initiated (#361)
1 parent e3b4f7e commit e1eb2f4

1 file changed

Lines changed: 7 additions & 6 deletions

File tree

  • player/src/main/java/xyz/gianlu/librespot/player

player/src/main/java/xyz/gianlu/librespot/player/Player.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)