From c3e83387db98c87be98afb6a0a515120a1aa46cf Mon Sep 17 00:00:00 2001 From: Jeremy Ong Date: Tue, 24 Aug 2021 19:33:34 -0600 Subject: [PATCH] Address additional PR feedback Signed-off-by: Jeremy Ong --- Code/Framework/AzCore/AzCore/Debug/Budget.h | 2 +- Code/Framework/AzCore/AzCore/Debug/BudgetTracker.cpp | 8 ++------ Code/Framework/AzCore/AzCore/Debug/BudgetTracker.h | 4 +++- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Code/Framework/AzCore/AzCore/Debug/Budget.h b/Code/Framework/AzCore/AzCore/Debug/Budget.h index d051ba860b..4646ef8b2c 100644 --- a/Code/Framework/AzCore/AzCore/Debug/Budget.h +++ b/Code/Framework/AzCore/AzCore/Debug/Budget.h @@ -73,7 +73,7 @@ namespace AZ::Debug // If using a budget defined in a different C++ source file, add AZ_DECLARE_BUDGET(yourBudget); somewhere in your source file at namespace // scope Alternatively, AZ_DECLARE_BUDGET can be used in a header to declare the budget for use across any users of the header -#define AZ_DECLARE_BUDGET(name) extern ::AZ::Debug::Budget* AZ_BUDGET_GETTER(name)() +#define AZ_DECLARE_BUDGET(name) ::AZ::Debug::Budget* AZ_BUDGET_GETTER(name)() // Declare budgets that are core engine budgets, or may be shared/needed across multiple external gems // You should NOT need to declare user-space or budgets with isolated usage here. Prefer declaring them local to the module(s) that use diff --git a/Code/Framework/AzCore/AzCore/Debug/BudgetTracker.cpp b/Code/Framework/AzCore/AzCore/Debug/BudgetTracker.cpp index 959f8ba3a8..255a740e32 100644 --- a/Code/Framework/AzCore/AzCore/Debug/BudgetTracker.cpp +++ b/Code/Framework/AzCore/AzCore/Debug/BudgetTracker.cpp @@ -19,7 +19,7 @@ namespace AZ::Debug { constexpr static const char* BudgetTrackerEnvName = "budgetTrackerEnv"; - struct BudgetTrackerImpl + struct BudgetTracker::BudgetTrackerImpl { AZStd::unordered_map m_budgets; }; @@ -65,11 +65,7 @@ namespace AZ::Debug { AZStd::scoped_lock lock{ m_mutex }; - auto it = m_impl->m_budgets.find(budgetName); - if (it == m_impl->m_budgets.end()) - { - it = m_impl->m_budgets.try_emplace(budgetName, budgetName, crc).first; - } + auto it = m_impl->m_budgets.try_emplace(budgetName, budgetName, crc).first; return it->second; } diff --git a/Code/Framework/AzCore/AzCore/Debug/BudgetTracker.h b/Code/Framework/AzCore/AzCore/Debug/BudgetTracker.h index d89d55b913..1357bb5870 100644 --- a/Code/Framework/AzCore/AzCore/Debug/BudgetTracker.h +++ b/Code/Framework/AzCore/AzCore/Debug/BudgetTracker.h @@ -31,11 +31,13 @@ namespace AZ::Debug Budget& GetBudget(const char* budgetName, uint32_t crc); private: + struct BudgetTrackerImpl; + AZStd::mutex m_mutex; // The BudgetTracker is likely included in proportionally high number of files throughout the // engine, so indirection is used here to avoid imposing excessive recompilation in periods // while the budget system is iterated on. - struct BudgetTrackerImpl* m_impl = nullptr; + BudgetTrackerImpl* m_impl = nullptr; }; } // namespace AZ::Debug