From 1ba7ee701c5f2f7847d8430b3bce8a162c5e7384 Mon Sep 17 00:00:00 2001 From: TurtleP Date: Thu, 29 Dec 2022 12:29:11 -0500 Subject: [PATCH] delete this copy c'tors to prevent lifetime issues --- .../deko_examples/source/SampleFramework/CCmdMemRing.h | 3 +++ .../deko_examples/source/SampleFramework/CDescriptorSet.h | 5 ++++- .../deko_examples/source/SampleFramework/CExternalImage.h | 3 +++ .../deko3d/deko_examples/source/SampleFramework/CMemPool.h | 7 +++++++ .../deko3d/deko_examples/source/SampleFramework/CShader.h | 3 +++ 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/graphics/deko3d/deko_examples/source/SampleFramework/CCmdMemRing.h b/graphics/deko3d/deko_examples/source/SampleFramework/CCmdMemRing.h index 3a8e1a0..aab2905 100644 --- a/graphics/deko3d/deko_examples/source/SampleFramework/CCmdMemRing.h +++ b/graphics/deko3d/deko_examples/source/SampleFramework/CCmdMemRing.h @@ -15,6 +15,9 @@ class CCmdMemRing dk::Fence m_fences[NumSlices]; public: CCmdMemRing() : m_mem{}, m_curSlice{}, m_fences{} { } + + CCmdMemRing(const CCmdMemRing&) = delete; + ~CCmdMemRing() { m_mem.destroy(); diff --git a/graphics/deko3d/deko_examples/source/SampleFramework/CDescriptorSet.h b/graphics/deko3d/deko_examples/source/SampleFramework/CDescriptorSet.h index a1c0ed9..e807beb 100644 --- a/graphics/deko3d/deko_examples/source/SampleFramework/CDescriptorSet.h +++ b/graphics/deko3d/deko_examples/source/SampleFramework/CDescriptorSet.h @@ -18,7 +18,10 @@ class CDescriptorSet CMemPool::Handle m_mem; public: CDescriptorSet() : m_mem{} { } - ~CDescriptorSet() + + CDescriptorSet(const CDescriptorSet&) = delete; + + ~CDescriptorSet() { m_mem.destroy(); } diff --git a/graphics/deko3d/deko_examples/source/SampleFramework/CExternalImage.h b/graphics/deko3d/deko_examples/source/SampleFramework/CExternalImage.h index 230e2e9..5ca2022 100644 --- a/graphics/deko3d/deko_examples/source/SampleFramework/CExternalImage.h +++ b/graphics/deko3d/deko_examples/source/SampleFramework/CExternalImage.h @@ -13,6 +13,9 @@ class CExternalImage CMemPool::Handle m_mem; public: CExternalImage() : m_image{}, m_descriptor{}, m_mem{} { } + + CExternalImage(const CExternalImage&) = delete; + ~CExternalImage() { m_mem.destroy(); diff --git a/graphics/deko3d/deko_examples/source/SampleFramework/CMemPool.h b/graphics/deko3d/deko_examples/source/SampleFramework/CMemPool.h index 978755c..f45bea6 100644 --- a/graphics/deko3d/deko_examples/source/SampleFramework/CMemPool.h +++ b/graphics/deko3d/deko_examples/source/SampleFramework/CMemPool.h @@ -42,6 +42,8 @@ class CMemPool uint32_t m_start; uint32_t m_end; + Slice(const Slice&) = delete; + constexpr uint32_t getSize() const { return m_end - m_start; } constexpr bool canCoalesce(Slice const& rhs) const { return m_pool == rhs.m_pool && m_block == rhs.m_block && m_end == rhs.m_start; } @@ -72,6 +74,8 @@ public: constexpr bool operator==(Handle const& rhs) const { return m_slice == rhs.m_slice; } constexpr bool operator!=(Handle const& rhs) const { return m_slice != rhs.m_slice; } + Handle(const Handle&) = delete; + void destroy() { if (m_slice) @@ -109,9 +113,12 @@ public: CMemPool(dk::Device dev, uint32_t flags = DkMemBlockFlags_CpuUncached | DkMemBlockFlags_GpuCached, uint32_t blockSize = DefaultBlockSize) : m_dev{dev}, m_flags{flags}, m_blockSize{blockSize}, m_blocks{}, m_memMap{}, m_sliceHeap{}, m_freeList{} { } + ~CMemPool(); Handle allocate(uint32_t size, uint32_t alignment = DK_CMDMEM_ALIGNMENT); + + CMemPool(const CMemPool&) = delete; }; constexpr bool operator<(uint32_t lhs, CMemPool::Slice const& rhs) diff --git a/graphics/deko3d/deko_examples/source/SampleFramework/CShader.h b/graphics/deko3d/deko_examples/source/SampleFramework/CShader.h index b39dfe0..1609987 100644 --- a/graphics/deko3d/deko_examples/source/SampleFramework/CShader.h +++ b/graphics/deko3d/deko_examples/source/SampleFramework/CShader.h @@ -12,6 +12,9 @@ class CShader CMemPool::Handle m_codemem; public: CShader() : m_shader{}, m_codemem{} { } + + CShader(const CShader&) = delete; + ~CShader() { m_codemem.destroy();