Added DeallocateObjCBridge(WrappedMTL<type> *)

This replaces WrappedMTLObject::Dealloc() which was not implemented or hooked up (it was a TODO).
Deleted WrappedMTLObject::Dealloc()
DeallocateObjCBridge calls resource manager ReleaseWrappedResource().
This commit is contained in:
Jake Turner
2022-07-01 14:52:44 +01:00
committed by Baldur Karlsson
parent 8c41ff714e
commit c56beb77c8
14 changed files with 17 additions and 18 deletions
@@ -40,7 +40,7 @@
#pragma clang diagnostic ignored "-Wobjc-missing-super-calls"
- (void)dealloc
{
GetWrapped(self)->Dealloc();
DeallocateObjCBridge(GetWrapped(self));
}
#pragma clang diagnostic pop
@@ -40,7 +40,7 @@
#pragma clang diagnostic ignored "-Wobjc-missing-super-calls"
- (void)dealloc
{
GetWrapped(self)->Dealloc();
DeallocateObjCBridge(GetWrapped(self));
}
#pragma clang diagnostic pop
@@ -40,7 +40,7 @@
#pragma clang diagnostic ignored "-Wobjc-missing-super-calls"
- (void)dealloc
{
GetWrapped(self)->Dealloc();
DeallocateObjCBridge(GetWrapped(self));
}
#pragma clang diagnostic pop
@@ -40,7 +40,7 @@
#pragma clang diagnostic ignored "-Wobjc-missing-super-calls"
- (void)dealloc
{
GetWrapped(self)->Dealloc();
DeallocateObjCBridge(GetWrapped(self));
}
#pragma clang diagnostic pop
@@ -43,7 +43,7 @@
#pragma clang diagnostic ignored "-Wobjc-missing-super-calls"
- (void)dealloc
{
GetWrapped(self)->Dealloc();
DeallocateObjCBridge(GetWrapped(self));
}
#pragma clang diagnostic pop
@@ -40,7 +40,7 @@
#pragma clang diagnostic ignored "-Wobjc-missing-super-calls"
- (void)dealloc
{
GetWrapped(self)->Dealloc();
DeallocateObjCBridge(GetWrapped(self));
}
#pragma clang diagnostic pop
@@ -40,7 +40,7 @@
#pragma clang diagnostic ignored "-Wobjc-missing-super-calls"
- (void)dealloc
{
GetWrapped(self)->Dealloc();
DeallocateObjCBridge(GetWrapped(self));
}
#pragma clang diagnostic pop
@@ -40,7 +40,7 @@
#pragma clang diagnostic ignored "-Wobjc-missing-super-calls"
- (void)dealloc
{
GetWrapped(self)->Dealloc();
DeallocateObjCBridge(GetWrapped(self));
}
#pragma clang diagnostic pop
@@ -40,7 +40,7 @@
#pragma clang diagnostic ignored "-Wobjc-missing-super-calls"
- (void)dealloc
{
GetWrapped(self)->Dealloc();
DeallocateObjCBridge(GetWrapped(self));
}
#pragma clang diagnostic pop
@@ -47,11 +47,6 @@ ResourceId GetResID(WrappedMTLObject *obj)
METALCPP_WRAPPED_PROTOCOLS(IMPLEMENT_WRAPPED_TYPE_HELPERS)
#undef IMPLEMENT_WRAPPED_TYPE_HELPERS
void WrappedMTLObject::Dealloc()
{
// TODO: call the wrapped object destructor
}
MetalResourceManager *WrappedMTLObject::GetResourceManager()
{
return m_Device->GetResourceManager();
-2
View File
@@ -64,8 +64,6 @@ struct WrappedMTLObject
}
~WrappedMTLObject() = default;
void Dealloc();
MTL::Device *GetDevice() { return (MTL::Device *)m_Device; }
MetalResourceManager *GetResourceManager();
@@ -40,7 +40,7 @@
#pragma clang diagnostic ignored "-Wobjc-missing-super-calls"
- (void)dealloc
{
GetWrapped(self)->Dealloc();
DeallocateObjCBridge(GetWrapped(self));
}
#pragma clang diagnostic pop
+5
View File
@@ -65,6 +65,11 @@ RDCCOMPILE_ASSERT(sizeof(NS::UInteger) == sizeof(std::uintptr_t),
((MTL::CPPTYPE *)objc)->release(); \
} \
} \
void DeallocateObjCBridge(WrappedMTL##CPPTYPE *wrappedCPP) \
{ \
wrappedCPP->m_ObjcBridge = NULL; \
wrappedCPP->m_Real = NULL; \
wrappedCPP->GetResourceManager()->ReleaseWrappedResource(wrappedCPP); \
}
METALCPP_WRAPPED_PROTOCOLS(DEFINE_OBJC_HELPERS)
+2 -1
View File
@@ -73,7 +73,8 @@ DECLARE_WRAPPED_TYPE_SERIALISE(Resource)
{ \
return (WrappedMTL##CPPTYPE *)cppType; \
} \
extern void AllocateObjCBridge(WrappedMTL##CPPTYPE *wrapped);
extern void AllocateObjCBridge(WrappedMTL##CPPTYPE *wrapped); \
extern void DeallocateObjCBridge(WrappedMTL##CPPTYPE *wrapped);
METALCPP_WRAPPED_PROTOCOLS(DECLARE_OBJC_HELPERS)
#undef DECLARE_OBJC_HELPERS