From 73c2bee34bb2e9e2dfac8a2c47d7b3607e98f44b Mon Sep 17 00:00:00 2001 From: teoxoy <28601907+teoxoy@users.noreply.github.com> Date: Mon, 11 May 2026 11:16:18 +0200 Subject: [PATCH] eliminate `static_cast` --- .../renderer/d3d/d3d11/ResourceManager11.h | 7 +------ .../renderer/d3d/d3d11/renderer11_utils.h | 15 +++++++++------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/libANGLE/renderer/d3d/d3d11/ResourceManager11.h b/src/libANGLE/renderer/d3d/d3d11/ResourceManager11.h index 67302c5..d51f618 100644 --- a/src/libANGLE/renderer/d3d/d3d11/ResourceManager11.h +++ b/src/libANGLE/renderer/d3d/d3d11/ResourceManager11.h @@ -317,12 +317,7 @@ class SharedResource11 : public Resource11Base> friend class ResourceManager11; SharedResource11(Resource11 &&obj) : Resource11Base>() { - std::swap(this->mData->manager, obj.mData->manager); - - // Can't use std::swap because of ID3D11Resource. - auto temp = this->mData->object; - this->mData->object = obj.mData->object; - obj.mData->object = static_cast(temp); + this->mData = std::move(obj.mData); } }; diff --git a/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h b/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h index e556183..413cd31 100644 --- a/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h +++ b/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h @@ -338,7 +338,9 @@ class [[nodiscard]] ScopedUnmapper final : angle::NonCopyable struct GenericData { GenericData() {} - ~GenericData() + ~GenericData() { reset(); } + + void reset() { if (object) { @@ -381,12 +383,13 @@ class TextureHelper11 : public Resource11Base void init(Resource11 &&texture, const DescT &desc, const d3d11::Format &format) { - std::swap(mData->manager, texture.mData->manager); + // Release previous resource, if any. + mData->reset(); - // Can't use std::swap because texture is typed, and here we use ID3D11Resource. - ID3D11Resource *temp = mData->object; - mData->object = texture.mData->object; - texture.mData->object = static_cast(temp); + mData->manager = texture.mData->manager; + texture.mData->manager = nullptr; + mData->object = texture.mData->object; + texture.mData->object = nullptr; mFormatSet = &format; initDesc(desc); -- 2.43.0