From b5fcbedad62bc037046997db2ea0441fbc891fd6 Mon Sep 17 00:00:00 2001 From: Bruce Yan Date: Thu, 11 Mar 2021 11:30:08 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E5=88=B02.4.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/engine/AssetsManagerEx.cpp | 39 +++++++++++++++++++++++++---- packages/engine/AssetsManagerEx.h | 8 ++++++ 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/packages/engine/AssetsManagerEx.cpp b/packages/engine/AssetsManagerEx.cpp index 9a0147c4..189a7bdb 100644 --- a/packages/engine/AssetsManagerEx.cpp +++ b/packages/engine/AssetsManagerEx.cpp @@ -79,6 +79,7 @@ AssetsManagerEx::AssetsManagerEx(const std::string& manifestUrl, const std::stri , _currConcurrentTask(0) , _verifyCallback(nullptr) , _inited(false) +, _canceled(false) { init(manifestUrl, storagePath); } @@ -208,6 +209,7 @@ AssetsManagerEx* AssetsManagerEx::create(const std::string& manifestUrl, const s void AssetsManagerEx::initManifests() { _inited = true; + _canceled = false; // Init and load temporary manifest _tempManifest = new (std::nothrow) Manifest(); if (_tempManifest) @@ -269,6 +271,7 @@ bool AssetsManagerEx::loadLocalManifest(Manifest* localManifest, const std::stri return false; } _inited = true; + _canceled = false; // Reset storage path if (storagePath.size() > 0) { @@ -1011,7 +1014,7 @@ void AssetsManagerEx::updateSucceed() } // Remove from delete list for safe, although this is not the case in general. - auto diff_itr = diff_map.find(dstPath); + auto diff_itr = diff_map.find(relativePath); if (diff_itr != diff_map.end()) { diff_map.erase(diff_itr); } @@ -1271,6 +1274,9 @@ void AssetsManagerEx::onError(const network::DownloadTask& task, } else { + if (_downloadingTask.find(task.identifier) != _downloadingTask.end()) { + _downloadingTask.erase(task.identifier); + } fileError(task.identifier, errorStr, errorCode, errorCodeInternal); } } @@ -1345,6 +1351,10 @@ void AssetsManagerEx::onSuccess(const std::string &/*srcUrl*/, const std::string } else { + if (_downloadingTask.find(customId) != _downloadingTask.end()) { + _downloadingTask.erase(customId); + } + bool ok = true; auto &assets = _remoteManifest->getAssets(); auto assetIt = assets.find(customId); @@ -1407,13 +1417,13 @@ void AssetsManagerEx::batchDownload() void AssetsManagerEx::queueDowload() { - if (_totalWaitToDownload == 0) + if (_totalWaitToDownload == 0 || (_canceled && _currConcurrentTask == 0)) { this->onDownloadUnitsFinished(); return; } - while (_currConcurrentTask < _maxConcurrentTask && _queue.size() > 0) + while (_currConcurrentTask < _maxConcurrentTask && _queue.size() > 0 && !_canceled) { std::string key = _queue.back(); _queue.pop_back(); @@ -1421,8 +1431,8 @@ void AssetsManagerEx::queueDowload() _currConcurrentTask++; DownloadUnit& unit = _downloadUnits[key]; _fileUtils->createDirectory(basename(unit.storagePath)); - _downloader->createDownloadFileTask(unit.srcUrl, unit.storagePath, unit.customId); - + auto downloadTask = _downloader->createDownloadFileTask(unit.srcUrl, unit.storagePath, unit.customId); + _downloadingTask.emplace(unit.customId, downloadTask); _tempManifest->setAssetDownloadState(key, Manifest::DownloadState::DOWNLOADING); } if (_percentByFile / 100 > _nextSavePoint) @@ -1450,4 +1460,23 @@ void AssetsManagerEx::onDownloadUnitsFinished() } } +void AssetsManagerEx::cancelUpdate() +{ + if (_canceled) + { + return; + } + _canceled = true; + std::vector> tasks; + for (const auto& it : _downloadingTask) + { + tasks.push_back(it.second); + } + for (const auto& it : tasks) + { + _downloader->abort(*it); + } + _downloadingTask.clear(); +} + NS_CC_EXT_END diff --git a/packages/engine/AssetsManagerEx.h b/packages/engine/AssetsManagerEx.h index 7bd5be62..b09b1656 100644 --- a/packages/engine/AssetsManagerEx.h +++ b/packages/engine/AssetsManagerEx.h @@ -193,6 +193,10 @@ public: */ void setEventCallback(const EventCallback& callback) {_eventCallback = callback;}; + /** @brief Cancel update + */ + void cancelUpdate(); + /** * @brief 设置热更新地址,由于热更新地址会动态的发生变化,热更新的地址以下发的地址为准,设置热更新地址后,会自动的替换所有热更新的源地址 */ @@ -404,6 +408,10 @@ private: //! Marker for whether the assets manager is inited bool _inited; + //! Marker for whether the update is canceled + bool _canceled; + //! Downloading task container + std::unordered_map> _downloadingTask; /*是否启用资源下载类型*/ bool _isUsingAssetsType; /*资源类型 ""为大厅 其它为子游戏包名*/ -- Gitee From 21c46fa847120bc3609fd63ec2503fff4a3988ff Mon Sep 17 00:00:00 2001 From: Bruce Yan Date: Thu, 11 Mar 2021 11:48:37 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E5=88=B02.4.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/fix_engine/main.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/fix_engine/main.js b/packages/fix_engine/main.js index e2c132b7..e0d3b901 100644 --- a/packages/fix_engine/main.js +++ b/packages/fix_engine/main.js @@ -219,7 +219,8 @@ module.exports = { if (creatorVersion == "2.4.0" || creatorVersion == "2.4.1" || creatorVersion == "2.4.2" || - creatorVersion == "2.4.3" + creatorVersion == "2.4.3" || + creatorVersion == "2.4.4" ) { Editor.log("Creator 版本 : " + Editor.versions.CocosCreator); Editor.log("Creator cocos2d 版本 : " + Editor.versions.cocos2d); -- Gitee From d900d6a132f9186341d15e2f3d0bc6d4e57aa816 Mon Sep 17 00:00:00 2001 From: Bruce Yan Date: Thu, 11 Mar 2021 11:59:12 +0800 Subject: [PATCH 3/3] 2.4.4 --- project.json | 2 +- settings/project.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/project.json b/project.json index ec020d46..8f5986ec 100644 --- a/project.json +++ b/project.json @@ -1,7 +1,7 @@ { "engine": "cocos2d-html5", "packages": "packages", - "version": "2.4.3", + "version": "2.4.4", "id": "92b3c247-ed81-4660-8b62-79a3740a2e97", "isNew": false } \ No newline at end of file diff --git a/settings/project.json b/settings/project.json index 293e689d..bd79e65e 100644 --- a/settings/project.json +++ b/settings/project.json @@ -172,7 +172,7 @@ }, "use-customize-simulator": true, "use-project-simulator-setting": false, - "last-module-event-record-time": 1609754655364, + "last-module-event-record-time": 1615434241540, "assets-sort-type": "name", "facebook": { "appID": "", -- Gitee