gap when changing queue workaround

This commit is contained in:
philippe44
2023-10-30 01:06:37 -07:00
parent 00a0b8c36e
commit f6269a2f7a
5 changed files with 34 additions and 14 deletions

View File

@@ -205,16 +205,18 @@ void SpircHandler::handleFrame(std::vector<uint8_t>& data) {
playbackState->syncWithRemote();
// 1st track is the current one, but update the position
trackQueue->updateTracks(
bool cleared = trackQueue->updateTracks(
playbackState->remoteFrame.state.position_ms +
ctx->timeProvider->getSyncedTimestamp() -
playbackState->innerFrame.state.position_measured_at,
false);
ctx->timeProvider->getSyncedTimestamp() -
playbackState->innerFrame.state.position_measured_at);
this->notify();
sendEvent(EventType::FLUSH);
trackPlayer->resetState();
// need to re-load all if streaming track is completed
if (cleared) {
sendEvent(EventType::FLUSH);
trackPlayer->resetState();
}
break;
}
case MessageType_kMessageTypeShuffle: {