Skip to content

Commit 96b2ffe

Browse files
committed
Fixed shuffling issues
1 parent 6e1ddc4 commit 96b2ffe

1 file changed

Lines changed: 9 additions & 12 deletions

File tree

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

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

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ private void handleFrame(@NotNull Spirc.MessageType type, @NotNull Spirc.Frame s
129129
break;
130130
case kMessageTypeReplace:
131131
if (frame != null && frame.endpoint == Remote3Frame.Endpoint.UpdateContext) {
132-
updatedTracks(frame, true);
132+
updatedTracks(frame);
133133
stateUpdated();
134134
}
135135
break;
@@ -263,7 +263,7 @@ private void handleSeek(int pos) {
263263
stateUpdated();
264264
}
265265

266-
private void updatedTracks(@NotNull Remote3Frame frame, boolean fromFrame) {
266+
private void updatedTracks(@NotNull Remote3Frame frame) {
267267
if (frame.context.uri != null) {
268268
state.update(frame);
269269

@@ -274,16 +274,13 @@ private void updatedTracks(@NotNull Remote3Frame frame, boolean fromFrame) {
274274
tracksProvider = new PlaylistProvider(session, state.state, conf);
275275
}
276276

277-
Optional.ofNullable(frame.options.playerOptionsOverride.repeatingContext).ifPresent(state::setRepeat);
278-
Optional.ofNullable(frame.options.playerOptionsOverride.shufflingContext).ifPresent(state::setShuffle);
279-
280-
if (fromFrame) {
281-
if (state.getShuffle() && conf.defaultUnshuffleBehaviour())
282-
shuffleTracks(true);
283-
} else {
284-
if (state.getShuffle())
285-
shuffleTracks(true);
277+
if (frame.options != null && frame.options.playerOptionsOverride != null) {
278+
Optional.ofNullable(frame.options.playerOptionsOverride.repeatingContext).ifPresent(state::setRepeat);
279+
Optional.ofNullable(frame.options.playerOptionsOverride.shufflingContext).ifPresent(state::setShuffle);
286280
}
281+
282+
if (state.getShuffle())
283+
shuffleTracks(frame.options == null || frame.options.skipTo.trackUid == null);
287284
}
288285

289286
@Override
@@ -359,7 +356,7 @@ private void handleLoad(@NotNull Remote3Frame frame) {
359356

360357
LOGGER.debug(String.format("Loading context, uri: %s", frame.context.uri));
361358

362-
updatedTracks(frame, frame.context.pages != null);
359+
updatedTracks(frame);
363360

364361
if (state.getTrackCount() > 0) {
365362
state.setPositionMs(frame.options.seekTo == -1 ? 0 : frame.options.seekTo);

0 commit comments

Comments
 (0)