From 4e3cf45aba8ce20935c8268eb523e61756f85442 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Mon, 26 May 2025 16:39:43 +0200 Subject: [PATCH] Implement Direct3DRMPickedArray constructor (#181) --- miniwin/include/miniwin_d3drm.h | 6 +----- miniwin/sdl3gpu/src/miniwin_d3drm.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/miniwin/include/miniwin_d3drm.h b/miniwin/include/miniwin_d3drm.h index 0c018d02..6f7c87f0 100644 --- a/miniwin/include/miniwin_d3drm.h +++ b/miniwin/include/miniwin_d3drm.h @@ -252,11 +252,7 @@ struct IDirect3DRMFrameArray : public IDirect3DRMArray { struct IDirect3DRMFrame2 : public IDirect3DRMFrame {}; typedef IDirect3DRMFrame2* LPDIRECT3DRMFRAME2; -struct D3DRMPICKDESC { - IDirect3DRMVisual* visual; - IDirect3DRMFrame* frame; - float dist; -}; +struct D3DRMPICKDESC {}; struct IDirect3DRMPickedArray : public IDirect3DRMArray { virtual HRESULT GetPick( diff --git a/miniwin/sdl3gpu/src/miniwin_d3drm.cpp b/miniwin/sdl3gpu/src/miniwin_d3drm.cpp index a3e32d07..15ab72b7 100644 --- a/miniwin/sdl3gpu/src/miniwin_d3drm.cpp +++ b/miniwin/sdl3gpu/src/miniwin_d3drm.cpp @@ -21,6 +21,20 @@ struct PickRecord { }; struct Direct3DRMPickedArray_SDL3GPUImpl : public IDirect3DRMPickedArray { + Direct3DRMPickedArray_SDL3GPUImpl(const PickRecord* inputPicks, size_t count) + { + picks.reserve(count); + for (size_t i = 0; i < count; ++i) { + const PickRecord& pick = inputPicks[i]; + if (pick.visual) { + pick.visual->AddRef(); + } + if (pick.frameArray) { + pick.frameArray->AddRef(); + } + picks.push_back(pick); + } + } ~Direct3DRMPickedArray_SDL3GPUImpl() override { for (PickRecord& pick : picks) {