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) {