diff --git a/Source/Core/VideoBackends/D3D/D3DState.cpp b/Source/Core/VideoBackends/D3D/D3DState.cpp index 15e84f2018..a7b56145da 100644 --- a/Source/Core/VideoBackends/D3D/D3DState.cpp +++ b/Source/Core/VideoBackends/D3D/D3DState.cpp @@ -347,10 +347,9 @@ ID3D11SamplerState* StateCache::Get(SamplerState state) } ComPtr res; - HRESULT hr = D3D::device->CreateSamplerState(&sampdc, &res); + HRESULT hr = D3D::device->CreateSamplerState(&sampdc, res.GetAddressOf()); CHECK(SUCCEEDED(hr), "Creating D3D sampler state failed"); - m_sampler.emplace(state.hex, res); - return res.Get(); + return m_sampler.emplace(state.hex, std::move(res)).first->second.Get(); } ID3D11BlendState* StateCache::Get(BlendingState state) @@ -381,12 +380,11 @@ ID3D11BlendState* StateCache::Get(BlendingState state) tdesc.LogicOpEnable = TRUE; tdesc.LogicOp = logic_ops[state.logicmode]; - ID3D11BlendState1* res; - HRESULT hr = D3D::device1->CreateBlendState1(&desc, &res); + ComPtr res; + HRESULT hr = D3D::device1->CreateBlendState1(&desc, res.GetAddressOf()); if (SUCCEEDED(hr)) { - m_blend.emplace(state.hex, res); - return res; + return m_blend.emplace(state.hex, std::move(res)).first->second.Get(); } } @@ -425,10 +423,9 @@ ID3D11BlendState* StateCache::Get(BlendingState state) tdesc.BlendOpAlpha = state.subtractAlpha ? D3D11_BLEND_OP_REV_SUBTRACT : D3D11_BLEND_OP_ADD; ComPtr res; - HRESULT hr = D3D::device->CreateBlendState(&desc, &res); + HRESULT hr = D3D::device->CreateBlendState(&desc, res.GetAddressOf()); CHECK(SUCCEEDED(hr), "Creating D3D blend state failed"); - m_blend.emplace(state.hex, res); - return res.Get(); + return m_blend.emplace(state.hex, std::move(res)).first->second.Get(); } ID3D11RasterizerState* StateCache::Get(RasterizationState state) @@ -447,10 +444,9 @@ ID3D11RasterizerState* StateCache::Get(RasterizationState state) desc.ScissorEnable = TRUE; ComPtr res; - HRESULT hr = D3D::device->CreateRasterizerState(&desc, &res); + HRESULT hr = D3D::device->CreateRasterizerState(&desc, res.GetAddressOf()); CHECK(SUCCEEDED(hr), "Creating D3D rasterizer state failed"); - m_raster.emplace(state.hex, res); - return res.Get(); + return m_raster.emplace(state.hex, std::move(res)).first->second.Get(); } ID3D11DepthStencilState* StateCache::Get(DepthState state) @@ -490,10 +486,9 @@ ID3D11DepthStencilState* StateCache::Get(DepthState state) } ComPtr res; - HRESULT hr = D3D::device->CreateDepthStencilState(&depthdc, &res); + HRESULT hr = D3D::device->CreateDepthStencilState(&depthdc, res.GetAddressOf()); CHECK(SUCCEEDED(hr), "Creating D3D depth stencil state failed"); - m_depth.emplace(state.hex, res); - return res.Get(); + return m_depth.emplace(state.hex, std::move(res)).first->second.Get(); } D3D11_PRIMITIVE_TOPOLOGY StateCache::GetPrimitiveTopology(PrimitiveType primitive)