cleanup details/Material.h

Should Fix #7774
This commit is contained in:
Mathias Agopian
2024-04-19 12:08:03 -07:00
committed by Mathias Agopian
parent 67268cb76d
commit 7a3b762b53
2 changed files with 28 additions and 18 deletions
+18 -2
View File
@@ -629,6 +629,21 @@ void FMaterial::applyPendingEdits() noexcept {
latchPendingEdits();
}
void FMaterial::setPendingEdits(std::unique_ptr<MaterialParser> 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;
+10 -16
View File
@@ -56,6 +56,10 @@
#include <stddef.h>
#include <stdint.h>
#if FILAMENT_ENABLE_MATDBG
#include <matdbg/DebugServer.h>
#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<MaterialParser> mPendingEdits;
void setPendingEdits(std::unique_ptr<MaterialParser> 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<MaterialParser> pendingEdits) noexcept;
bool hasPendingEdits() noexcept;
void latchPendingEdits() noexcept;
#endif
utils::CString mName;