@@ -371,7 +371,6 @@ class SwapChain
371371 if (chain != nullptr || hwnd == nullptr )
372372 return S_OK;
373373
374- SharedResourcePointer<DirectX> directX;
375374 auto dxgiFactory = directX->adapters .getFactory ();
376375
377376 if (dxgiFactory == nullptr || adapter->direct3DDevice == nullptr )
@@ -448,7 +447,6 @@ class SwapChain
448447 chain->GetDevice (__uuidof (device), (void **) device.resetAndGetPointerAddress ());
449448 JUCE_END_IGNORE_WARNINGS_GCC_LIKE
450449
451- SharedResourcePointer<DirectX> directX;
452450 createBuffer (Direct2DDeviceResources::findAdapter (directX->adapters , device));
453451
454452 return buffer != nullptr ? S_OK : E_FAIL;
@@ -527,6 +525,23 @@ class SwapChain
527525 deviceContext->CreateBitmapFromDxgiSurface (surface, bitmapProperties, buffer.resetAndGetPointerAddress ());
528526 }
529527
528+ class AssignableDirectX
529+ {
530+ public:
531+ AssignableDirectX () = default ;
532+ AssignableDirectX (const AssignableDirectX&) {}
533+ AssignableDirectX (AssignableDirectX&&) noexcept {}
534+ AssignableDirectX& operator = (const AssignableDirectX&) { return *this ; }
535+ AssignableDirectX& operator = (AssignableDirectX&&) noexcept { return *this ; }
536+ ~AssignableDirectX () = default ;
537+
538+ DirectX* operator ->() const { return directX.operator ->(); }
539+
540+ private:
541+ SharedResourcePointer<DirectX> directX;
542+ };
543+
544+ AssignableDirectX directX;
530545 ComSmartPtr<IDXGISwapChain1> chain;
531546 ComSmartPtr<ID2D1Bitmap1> buffer;
532547 std::optional<WindowsScopedEvent> swapChainEvent;
0 commit comments