From 7a3b762b530a164a2b333c2f5d4e8a565b13e50b Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Fri, 19 Apr 2024 11:28:34 -0700 Subject: [PATCH] cleanup details/Material.h Should Fix #7774 --- filament/src/details/Material.cpp | 20 ++++++++++++++++++-- filament/src/details/Material.h | 26 ++++++++++---------------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/filament/src/details/Material.cpp b/filament/src/details/Material.cpp index 319069d304..b4e665a20f 100644 --- a/filament/src/details/Material.cpp +++ b/filament/src/details/Material.cpp @@ -629,6 +629,21 @@ void FMaterial::applyPendingEdits() noexcept { latchPendingEdits(); } +void FMaterial::setPendingEdits(std::unique_ptr pendingEdits) noexcept { + std::lock_guard const lock(mPendingEditsLock); + std::swap(pendingEdits, mPendingEdits); +} + +bool FMaterial::hasPendingEdits() noexcept { + std::lock_guard const lock(mPendingEditsLock); + return (bool)mPendingEdits; +} + +void FMaterial::latchPendingEdits() noexcept { + std::lock_guard const lock(mPendingEditsLock); + std::swap(mPendingEdits, mMaterialParser); +} + /** * Callback handlers for the debug server, potentially called from any thread. These methods are * never called during normal operation and exist for debugging purposes only. @@ -655,10 +670,11 @@ void FMaterial::onQueryCallback(void* userdata, VariantList* pVariants) { material->mActivePrograms.reset(); } -#endif - /** @}*/ +#endif // FILAMENT_ENABLE_MATDBG + + void FMaterial::destroyPrograms(FEngine& engine) { DriverApi& driverApi = engine.getDriverApi(); auto& cachedPrograms = mCachedPrograms; diff --git a/filament/src/details/Material.h b/filament/src/details/Material.h index 20f1e309aa..e0acd13d0c 100644 --- a/filament/src/details/Material.h +++ b/filament/src/details/Material.h @@ -56,6 +56,10 @@ #include #include +#if FILAMENT_ENABLE_MATDBG +#include +#endif + namespace filament { class MaterialParser; @@ -238,12 +242,12 @@ private: backend::Program getProgramWithVariants(Variant variant, Variant vertexVariant, Variant fragmentVariant) const noexcept; - void processBlendingMode(MaterialParser const* const parser); + void processBlendingMode(MaterialParser const* parser); void processSpecializationConstants(FEngine& engine, Material::Builder const& builder, - MaterialParser const* const parser); + MaterialParser const* parser); - void processDepthVariants(FEngine& engine, MaterialParser const* const parser); + void processDepthVariants(FEngine& engine, MaterialParser const* parser); void createAndCacheProgram(backend::Program&& p, Variant variant) const noexcept; @@ -311,19 +315,9 @@ private: mutable VariantList mActivePrograms; mutable utils::Mutex mPendingEditsLock; std::unique_ptr mPendingEdits; - void setPendingEdits(std::unique_ptr pendingEdits) noexcept { - std::lock_guard lock(mPendingEditsLock); - std::swap(pendingEdits, mPendingEdits); - } - bool hasPendingEdits() noexcept { - std::lock_guard lock(mPendingEditsLock); - return (bool)mPendingEdits; - } - void latchPendingEdits() noexcept { - std::lock_guard lock(mPendingEditsLock); - std::swap(mPendingEdits, mMaterialParser); - } - + void setPendingEdits(std::unique_ptr pendingEdits) noexcept; + bool hasPendingEdits() noexcept; + void latchPendingEdits() noexcept; #endif utils::CString mName;