diff --git a/Telegram/SourceFiles/media/streaming/media_streaming_reader.cpp b/Telegram/SourceFiles/media/streaming/media_streaming_reader.cpp index cb14358c5..d87ad902f 100644 --- a/Telegram/SourceFiles/media/streaming/media_streaming_reader.cpp +++ b/Telegram/SourceFiles/media/streaming/media_streaming_reader.cpp @@ -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::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) { diff --git a/Telegram/SourceFiles/media/streaming/media_streaming_reader.h b/Telegram/SourceFiles/media/streaming/media_streaming_reader.h index 5db1f993c..c588823ac 100644 --- a/Telegram/SourceFiles/media/streaming/media_streaming_reader.h +++ b/Telegram/SourceFiles/media/streaming/media_streaming_reader.h @@ -77,6 +77,7 @@ public: void doneForDownloader(int64 offset); void cancelForDownloader( not_null downloader); + void continueDownloaderFromMainThread(); ~Reader(); diff --git a/Telegram/SourceFiles/storage/streamed_file_downloader.cpp b/Telegram/SourceFiles/storage/streamed_file_downloader.cpp index 95ee71009..ed9e074d1 100644 --- a/Telegram/SourceFiles/storage/streamed_file_downloader.cpp +++ b/Telegram/SourceFiles/storage/streamed_file_downloader.cpp @@ -88,6 +88,7 @@ void StreamedFileDownloader::requestParts() { && _partsRequested < kRequestPartsCount) { requestPart(); } + _reader->continueDownloaderFromMainThread(); } void StreamedFileDownloader::requestPart() {