diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_batch_tests_2.py b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_batch_tests_2.py index 239410c0ac..d0fe77c68d 100755 --- a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_batch_tests_2.py +++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_batch_tests_2.py @@ -213,7 +213,8 @@ class TestsAssetProcessorBatch_Windows(object): asset_processor.create_temp_asset_root() # Start the processor - asset_processor.gui_process(quitonidle=False, connect_to_ap=True) + # using -ap_disableAssetTreeView=true to skip the UI building of the Asset Tree for this test + asset_processor.gui_process(quitonidle=False, connect_to_ap=True, extra_params=[f'-ap_disableAssetTreeView=true']) asset_processor.stop() # fmt:off diff --git a/Code/Tools/AssetProcessor/native/ui/ProductAssetTreeModel.cpp b/Code/Tools/AssetProcessor/native/ui/ProductAssetTreeModel.cpp index 2fae1b536d..6c936420f4 100644 --- a/Code/Tools/AssetProcessor/native/ui/ProductAssetTreeModel.cpp +++ b/Code/Tools/AssetProcessor/native/ui/ProductAssetTreeModel.cpp @@ -11,9 +11,11 @@ #include #include #include +#include namespace AssetProcessor { + AZ_CVAR_EXTERNED(bool, ap_disableAssetTreeView); ProductAssetTreeModel::ProductAssetTreeModel(AZStd::shared_ptr sharedDbConnection, QObject *parent) : AssetTreeModel(sharedDbConnection, parent) @@ -26,6 +28,11 @@ namespace AssetProcessor void ProductAssetTreeModel::ResetModel() { + if (ap_disableAssetTreeView) + { + return; + } + m_productToTreeItem.clear(); m_productIdToTreeItem.clear(); AZStd::string databaseLocation; @@ -46,6 +53,11 @@ namespace AssetProcessor void ProductAssetTreeModel::OnProductFileChanged(const AzToolsFramework::AssetDatabase::ProductDatabaseEntry& entry) { + if (ap_disableAssetTreeView) + { + return; + } + // Model changes need to be run on the main thread. AZ::SystemTickBus::QueueFunction([&, entry]() { @@ -107,6 +119,11 @@ namespace AssetProcessor void ProductAssetTreeModel::OnProductFileRemoved(AZ::s64 productId) { + if (ap_disableAssetTreeView) + { + return; + } + // UI changes need to be done on the main thread. AZ::SystemTickBus::QueueFunction([&, productId]() { @@ -116,6 +133,11 @@ namespace AssetProcessor void ProductAssetTreeModel::OnProductFilesRemoved(const AzToolsFramework::AssetDatabase::ProductDatabaseEntryContainer& products) { + if (ap_disableAssetTreeView) + { + return; + } + // UI changes need to be done on the main thread. AZ::SystemTickBus::QueueFunction([&, products]() { @@ -128,6 +150,11 @@ namespace AssetProcessor QModelIndex ProductAssetTreeModel::GetIndexForProduct(const AZStd::string& product) { + if (ap_disableAssetTreeView) + { + return QModelIndex(); + } + auto productItem = m_productToTreeItem.find(product); if (productItem == m_productToTreeItem.end()) { diff --git a/Code/Tools/AssetProcessor/native/ui/SourceAssetTreeModel.cpp b/Code/Tools/AssetProcessor/native/ui/SourceAssetTreeModel.cpp index f7d8bc4aa1..3b0f197bdb 100644 --- a/Code/Tools/AssetProcessor/native/ui/SourceAssetTreeModel.cpp +++ b/Code/Tools/AssetProcessor/native/ui/SourceAssetTreeModel.cpp @@ -11,12 +11,13 @@ #include #include #include - +#include namespace AssetProcessor { + AZ_CVAR(bool, ap_disableAssetTreeView, false, nullptr, AZ::ConsoleFunctorFlags::Null, "Disable asset tree for automated tests."); - SourceAssetTreeModel::SourceAssetTreeModel(AZStd::shared_ptr sharedDbConnection, QObject *parent) : + SourceAssetTreeModel::SourceAssetTreeModel(AZStd::shared_ptr sharedDbConnection, QObject* parent) : AssetTreeModel(sharedDbConnection, parent) { } @@ -27,15 +28,20 @@ namespace AssetProcessor void SourceAssetTreeModel::ResetModel() { + if (ap_disableAssetTreeView) + { + return; + } + m_sourceToTreeItem.clear(); m_sourceIdToTreeItem.clear(); m_sharedDbConnection->QuerySourceAndScanfolder( [&](AzToolsFramework::AssetDatabase::SourceAndScanFolderDatabaseEntry& sourceAndScanFolder) - { - AddOrUpdateEntry(sourceAndScanFolder, sourceAndScanFolder, true); - return true; // return true to continue iterating over additional results, we are populating a container - }); + { + AddOrUpdateEntry(sourceAndScanFolder, sourceAndScanFolder, true); + return true; // return true to continue iterating over additional results, we are populating a container + }); } void SourceAssetTreeModel::AddOrUpdateEntry( @@ -128,16 +134,21 @@ namespace AssetProcessor void SourceAssetTreeModel::OnSourceFileChanged(const AzToolsFramework::AssetDatabase::SourceDatabaseEntry& entry) { + if (ap_disableAssetTreeView) + { + return; + } + // Model changes need to be run on the main thread. AZ::SystemTickBus::QueueFunction([&, entry]() - { - m_sharedDbConnection->QueryScanFolderBySourceID(entry.m_sourceID, - [&, entry](AzToolsFramework::AssetDatabase::ScanFolderDatabaseEntry& scanFolder) { - AddOrUpdateEntry(entry, scanFolder, false); - return true; + m_sharedDbConnection->QueryScanFolderBySourceID(entry.m_sourceID, + [&, entry](AzToolsFramework::AssetDatabase::ScanFolderDatabaseEntry& scanFolder) + { + AddOrUpdateEntry(entry, scanFolder, false); + return true; + }); }); - }); } void SourceAssetTreeModel::RemoveFoldersIfEmpty(AssetTreeItem* itemToCheck) @@ -182,22 +193,32 @@ namespace AssetProcessor void SourceAssetTreeModel::OnSourceFileRemoved(AZ::s64 sourceId) { + if (ap_disableAssetTreeView) + { + return; + } + // UI changes need to be done on the main thread. AZ::SystemTickBus::QueueFunction([&, sourceId]() - { - auto existingSource = m_sourceIdToTreeItem.find(sourceId); - if (existingSource == m_sourceIdToTreeItem.end() || !existingSource->second) { - // If the asset being removed wasn't previously cached, then something has gone wrong. Reset the model. - Reset(); - return; - } - RemoveAssetTreeItem(existingSource->second); - }); + auto existingSource = m_sourceIdToTreeItem.find(sourceId); + if (existingSource == m_sourceIdToTreeItem.end() || !existingSource->second) + { + // If the asset being removed wasn't previously cached, then something has gone wrong. Reset the model. + Reset(); + return; + } + RemoveAssetTreeItem(existingSource->second); + }); } QModelIndex SourceAssetTreeModel::GetIndexForSource(const AZStd::string& source) { + if (ap_disableAssetTreeView) + { + return QModelIndex(); + } + auto sourceItem = m_sourceToTreeItem.find(source); if (sourceItem == m_sourceToTreeItem.end()) {