From e4941e5b008d380ee20eb0823f3d7a4e461cc570 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sun, 15 Oct 2023 18:46:15 +0200 Subject: [PATCH] Add asset loading task state check on fail --- .../Content/Loading/Tasks/LoadAssetTask.h | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/Source/Engine/Content/Loading/Tasks/LoadAssetTask.h b/Source/Engine/Content/Loading/Tasks/LoadAssetTask.h index 5ee384769..19d6fdd31 100644 --- a/Source/Engine/Content/Loading/Tasks/LoadAssetTask.h +++ b/Source/Engine/Content/Loading/Tasks/LoadAssetTask.h @@ -31,10 +31,13 @@ public: if (Asset) { Asset->Locker.Lock(); - Asset->_loadFailed = true; - Asset->_isLoaded = false; - LOG(Error, "Loading asset \'{0}\' result: {1}.", ToString(), ToString(Result::TaskFailed)); - Asset->_loadingTask = nullptr; + if (Asset->_loadingTask == this) + { + Asset->_loadFailed = true; + Asset->_isLoaded = false; + LOG(Error, "Loading asset \'{0}\' result: {1}.", ToString(), ToString(Result::TaskFailed)); + Asset->_loadingTask = nullptr; + } Asset->Locker.Unlock(); } } @@ -73,7 +76,10 @@ protected: { if (Asset) { - Asset->_loadingTask = nullptr; + Asset->Locker.Lock(); + if (Asset->_loadingTask == this) + Asset->_loadingTask = nullptr; + Asset->Locker.Unlock(); Asset = nullptr; } @@ -84,7 +90,10 @@ protected: { if (Asset) { - Asset->_loadingTask = nullptr; + Asset->Locker.Lock(); + if (Asset->_loadingTask == this) + Asset->_loadingTask = nullptr; + Asset->Locker.Unlock(); Asset = nullptr; }