diff --git a/Telegram/SourceFiles/playerwidget.cpp b/Telegram/SourceFiles/playerwidget.cpp index c5fea8de2f..a4b269de43 100644 --- a/Telegram/SourceFiles/playerwidget.cpp +++ b/Telegram/SourceFiles/playerwidget.cpp @@ -305,14 +305,21 @@ void PlayerWidget::findCurrent() { } } } + preloadNext(); +} + +void PlayerWidget::preloadNext() { if (_index < 0) return; History *history = _msgmigrated ? _migrated : _history; + const History::MediaOverview *o = &history->overview[OverviewAudioDocuments]; HistoryItem *next = 0; if (_index < o->size() - 1) { next = App::histItemById(history->channelId(), o->at(_index + 1)); } else if (_msgmigrated && _index == o->size() - 1 && _history->overviewLoaded(OverviewAudioDocuments) && _history->overviewCount(OverviewAudioDocuments) > 0) { next = App::histItemById(_history->channelId(), _history->overview[OverviewAudioDocuments].at(0)); + } else if (_msgmigrated && _index == o->size() - 1 && !_history->overviewCountLoaded(OverviewAudioDocuments)) { + if (App::main()) App::main()->preloadOverview(_history->peer, OverviewAudioDocuments); } if (next) { if (HistoryDocument *document = static_cast(next->getMedia())) { @@ -351,6 +358,7 @@ void PlayerWidget::mediaOverviewUpdated(PeerData *peer, MediaOverviewType type) for (int i = 0, l = history->overview[OverviewAudioDocuments].size(); i < l; ++i) { if (history->overview[OverviewAudioDocuments].at(i) == _song.msgId.msg) { _index = i; + preloadNext(); break; } } diff --git a/Telegram/SourceFiles/playerwidget.h b/Telegram/SourceFiles/playerwidget.h index e69cd1e13a..fefac68acc 100644 --- a/Telegram/SourceFiles/playerwidget.h +++ b/Telegram/SourceFiles/playerwidget.h @@ -80,6 +80,7 @@ private: void updateControls(); void findCurrent(); + void preloadNext(); void startPlay(const FullMsgId &msgId);