Skip to content

Commit f9d8adc

Browse files
WebGPUObjectWrappers: minor improvements
1 parent 0dc3820 commit f9d8adc

File tree

2 files changed

+29
-23
lines changed

2 files changed

+29
-23
lines changed

Graphics/GraphicsEngineWebGPU/include/WebGPUObjectWrappers.hpp

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -36,74 +36,80 @@ template <typename WebGPUObjectType, typename WebGPUObjectDeleter>
3636
class WebGPUObjectWrapper
3737
{
3838
public:
39-
WebGPUObjectWrapper() :
40-
m_ObjectHandle{}, m_ObjectDeleter{} {}
39+
WebGPUObjectWrapper()
40+
{}
4141

4242
~WebGPUObjectWrapper()
4343
{
44-
if (m_ObjectHandle)
45-
m_ObjectDeleter(m_ObjectHandle);
44+
if (m_Handle)
45+
m_Deleter(m_Handle);
4646
}
4747

4848
explicit WebGPUObjectWrapper(WebGPUObjectType ObjectHandle, WebGPUObjectDeleter ObjectDeleter = WebGPUObjectDeleter{}) :
49-
m_ObjectHandle(ObjectHandle), m_ObjectDeleter(ObjectDeleter) {}
49+
m_Handle{ObjectHandle},
50+
m_Deleter{ObjectDeleter}
51+
{}
5052

5153
WebGPUObjectWrapper(const WebGPUObjectWrapper&) = delete;
5254

5355
WebGPUObjectWrapper& operator=(const WebGPUObjectWrapper&) = delete;
5456

5557
WebGPUObjectWrapper(WebGPUObjectWrapper&& RHS) noexcept :
56-
m_ObjectHandle(RHS.Release()), m_ObjectDeleter(std::move(RHS.m_ObjectDeleter))
58+
m_Handle{RHS.Detach()},
59+
m_Deleter{std::move(RHS.m_Deleter)}
5760
{
5861
}
5962

6063
WebGPUObjectWrapper& operator=(WebGPUObjectWrapper&& RHS) noexcept
6164
{
62-
Reset(RHS.Release());
63-
m_ObjectDeleter = std::move(RHS.m_ObjectDeleter);
65+
if (this == &RHS)
66+
return *this;
67+
68+
Reset(RHS.Detach());
69+
m_Deleter = std::move(RHS.m_Deleter);
6470
return *this;
6571
}
6672

6773
const WebGPUObjectType& Get() const
6874
{
69-
return m_ObjectHandle;
75+
return m_Handle;
7076
}
7177

7278
WebGPUObjectType& Get()
7379
{
74-
return m_ObjectHandle;
80+
return m_Handle;
7581
}
7682

7783
operator WebGPUObjectType() const
7884
{
79-
return m_ObjectHandle;
85+
return m_Handle;
8086
}
8187

8288
void Reset(WebGPUObjectType Handle = nullptr)
8389
{
84-
if (m_ObjectHandle != Handle)
90+
if (m_Handle != Handle)
8591
{
86-
if (m_ObjectHandle)
87-
m_ObjectDeleter(m_ObjectHandle);
88-
m_ObjectHandle = Handle;
92+
if (m_Handle)
93+
m_Deleter(m_Handle);
94+
m_Handle = Handle;
8995
}
9096
}
9197

92-
WebGPUObjectType Release()
98+
WebGPUObjectType Detach()
9399
{
94-
WebGPUObjectType ReleaseHandle = m_ObjectHandle;
95-
m_ObjectHandle = nullptr;
96-
return ReleaseHandle;
100+
WebGPUObjectType Handle = m_Handle;
101+
m_Handle = nullptr;
102+
return Handle;
97103
}
98104

99105
explicit operator bool() const
100106
{
101-
return m_ObjectHandle != nullptr;
107+
return m_Handle != nullptr;
102108
}
103109

104110
private:
105-
WebGPUObjectType m_ObjectHandle;
106-
WebGPUObjectDeleter m_ObjectDeleter;
111+
WebGPUObjectType m_Handle{};
112+
WebGPUObjectDeleter m_Deleter{};
107113
};
108114

109115

Graphics/GraphicsEngineWebGPU/src/EngineFactoryWebGPU.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ void EngineFactoryWebGPUImpl::CreateDeviceAndContextsWebGPU(const EngineWebGPUCr
515515
}
516516

517517
WebGPUDeviceWrapper Device = CreateDeviceForAdapter(EngineCI, wgpuInstance.Get(), SpecificAdapter.Get());
518-
AttachToWebGPUDevice(wgpuInstance.Release(), SpecificAdapter.Release(), Device.Release(), EngineCI, ppDevice, ppImmediateContext);
518+
AttachToWebGPUDevice(wgpuInstance.Detach(), SpecificAdapter.Detach(), Device.Detach(), EngineCI, ppDevice, ppImmediateContext);
519519
}
520520
catch (const std::runtime_error&)
521521
{

0 commit comments

Comments
 (0)