diff --git a/LEGO1/lego/legoomni/src/input/legoinputmanager.cpp b/LEGO1/lego/legoomni/src/input/legoinputmanager.cpp index 4a852c6f..3e9622c2 100644 --- a/LEGO1/lego/legoomni/src/input/legoinputmanager.cpp +++ b/LEGO1/lego/legoomni/src/input/legoinputmanager.cpp @@ -97,6 +97,8 @@ void LegoInputManager::Destroy() if (m_controlManager) { delete m_controlManager; } + + SDL_free(m_joyids); } // FUNCTION: LEGO1 0x1005c0f0 @@ -151,7 +153,9 @@ MxResult LegoInputManager::GetJoystick() } MxS32 numJoysticks = 0; - m_joyids = SDL_GetJoysticks(&numJoysticks); + if (m_joyids == NULL) { + m_joyids = SDL_GetJoysticks(&numJoysticks); + } if (m_useJoystick != FALSE && numJoysticks != 0) { MxS32 joyid = m_joystickIndex; diff --git a/miniwin/src/d3drm/d3drmviewport.cpp b/miniwin/src/d3drm/d3drmviewport.cpp index a6523f1b..933cbbcd 100644 --- a/miniwin/src/d3drm/d3drmviewport.cpp +++ b/miniwin/src/d3drm/d3drmviewport.cpp @@ -819,6 +819,9 @@ HRESULT Direct3DRMViewportImpl::Pick(float x, float y, LPDIRECT3DRMPICKEDARRAY* }); *pickedArray = new Direct3DRMPickedArrayImpl(hits.data(), hits.size()); + for (PickRecord& hit : hits) { + hit.frameArray->Release(); + } return D3DRM_OK; }