Fix streamed media downloading.

Fixes #8500.
This commit is contained in:
John Preston 2022-12-22 10:26:07 +04:00
parent 1d7ad701b4
commit b3858d5d97
3 changed files with 13 additions and 10 deletions

View File

@ -944,20 +944,16 @@ void Reader::loadForDownloader(
_loader->attachDownloader(downloader);
}
_downloaderOffsetRequests.emplace(uint32(offset));
if (_streamingActive) {
wakeFromSleep();
} else {
processDownloaderRequests();
}
// Will be processed in continueDownloaderFromMainThread()
// from StreamedFileDownloader::requestParts().
}
void Reader::doneForDownloader(int64 offset) {
Expects(offset >= 0 && offset <= std::numeric_limits<uint32>::max());
_downloaderOffsetAcks.emplace(offset);
if (!_streamingActive) {
processDownloaderRequests();
}
// Will be processed in continueDownloaderFromMainThread()
// from StreamedFileDownloader::requestParts().
}
void Reader::cancelForDownloader(
@ -1104,10 +1100,15 @@ bool Reader::downloaderWaitForCachedSlice(uint32 offset) {
}
void Reader::checkCacheResultsForDownloader() {
continueDownloaderFromMainThread();
}
void Reader::continueDownloaderFromMainThread() {
if (_streamingActive) {
return;
wakeFromSleep();
} else {
processDownloaderRequests();
}
processDownloaderRequests();
}
void Reader::setLoaderPriority(int priority) {

View File

@ -77,6 +77,7 @@ public:
void doneForDownloader(int64 offset);
void cancelForDownloader(
not_null<Storage::StreamedFileDownloader*> downloader);
void continueDownloaderFromMainThread();
~Reader();

View File

@ -88,6 +88,7 @@ void StreamedFileDownloader::requestParts() {
&& _partsRequested < kRequestPartsCount) {
requestPart();
}
_reader->continueDownloaderFromMainThread();
}
void StreamedFileDownloader::requestPart() {