mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Direct2D: Reduce DirectX resource thrashing in Direct2D Swapchain
This commit is contained in:
parent
878ac1a23f
commit
3b43b7ca13
1 changed files with 17 additions and 2 deletions
|
|
@ -371,7 +371,6 @@ public:
|
|||
if (chain != nullptr || hwnd == nullptr)
|
||||
return S_OK;
|
||||
|
||||
SharedResourcePointer<DirectX> directX;
|
||||
auto dxgiFactory = directX->adapters.getFactory();
|
||||
|
||||
if (dxgiFactory == nullptr || adapter->direct3DDevice == nullptr)
|
||||
|
|
@ -448,7 +447,6 @@ public:
|
|||
chain->GetDevice (__uuidof (device), (void**) device.resetAndGetPointerAddress());
|
||||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
|
||||
|
||||
SharedResourcePointer<DirectX> directX;
|
||||
createBuffer (Direct2DDeviceResources::findAdapter (directX->adapters, device));
|
||||
|
||||
return buffer != nullptr ? S_OK : E_FAIL;
|
||||
|
|
@ -527,6 +525,23 @@ private:
|
|||
deviceContext->CreateBitmapFromDxgiSurface (surface, bitmapProperties, buffer.resetAndGetPointerAddress());
|
||||
}
|
||||
|
||||
class AssignableDirectX
|
||||
{
|
||||
public:
|
||||
AssignableDirectX() = default;
|
||||
AssignableDirectX (const AssignableDirectX&) {}
|
||||
AssignableDirectX (AssignableDirectX&&) noexcept {}
|
||||
AssignableDirectX& operator= (const AssignableDirectX&) { return *this; }
|
||||
AssignableDirectX& operator= (AssignableDirectX&&) noexcept { return *this; }
|
||||
~AssignableDirectX() = default;
|
||||
|
||||
DirectX* operator->() const { return directX.operator->(); }
|
||||
|
||||
private:
|
||||
SharedResourcePointer<DirectX> directX;
|
||||
};
|
||||
|
||||
AssignableDirectX directX;
|
||||
ComSmartPtr<IDXGISwapChain1> chain;
|
||||
ComSmartPtr<ID2D1Bitmap1> buffer;
|
||||
std::optional<WindowsScopedEvent> swapChainEvent;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue