diff options
author | Garrett Brown <themagnificentmrb@gmail.com> | 2018-01-12 16:36:01 -0800 |
---|---|---|
committer | Garrett Brown <themagnificentmrb@gmail.com> | 2018-01-15 14:36:32 -0800 |
commit | b94825237dc7aa7eb0838577c8174ed930e776ca (patch) | |
tree | f6847d8c7d24425d41be5273385d0706843b64c4 | |
parent | 1305b6a73c222498ce75513884b71f04abeb8c62 (diff) |
Peripherals: Modernize button mapper registration
-rw-r--r-- | xbmc/peripherals/devices/Peripheral.cpp | 16 | ||||
-rw-r--r-- | xbmc/peripherals/devices/Peripheral.h | 3 |
2 files changed, 11 insertions, 8 deletions
diff --git a/xbmc/peripherals/devices/Peripheral.cpp b/xbmc/peripherals/devices/Peripheral.cpp index 9a510a14c5..0a109f112f 100644 --- a/xbmc/peripherals/devices/Peripheral.cpp +++ b/xbmc/peripherals/devices/Peripheral.cpp @@ -586,22 +586,24 @@ void CPeripheral::UnregisterInputHandler(IInputHandler* handler) void CPeripheral::RegisterJoystickButtonMapper(IButtonMapper* mapper) { - std::map<IButtonMapper*, IDriverHandler*>::iterator it = m_buttonMappers.find(mapper); + auto it = m_buttonMappers.find(mapper); if (it == m_buttonMappers.end()) { - IDriverHandler* addonMapping = new CAddonButtonMapping(m_manager, this, mapper); - RegisterJoystickDriverHandler(addonMapping, false); - m_buttonMappers[mapper] = addonMapping; + std::unique_ptr<CAddonButtonMapping> addonMapping(new CAddonButtonMapping(m_manager, this, mapper)); + + RegisterJoystickDriverHandler(addonMapping.get(), false); + + m_buttonMappers[mapper] = std::move(addonMapping); } } void CPeripheral::UnregisterJoystickButtonMapper(IButtonMapper* mapper) { - std::map<IButtonMapper*, IDriverHandler*>::iterator it = m_buttonMappers.find(mapper); + auto it = m_buttonMappers.find(mapper); if (it != m_buttonMappers.end()) { - UnregisterJoystickDriverHandler(it->second); - delete it->second; + UnregisterJoystickDriverHandler(it->second.get()); + m_buttonMappers.erase(it); } } diff --git a/xbmc/peripherals/devices/Peripheral.h b/xbmc/peripherals/devices/Peripheral.h index 6d06d0da33..953121318a 100644 --- a/xbmc/peripherals/devices/Peripheral.h +++ b/xbmc/peripherals/devices/Peripheral.h @@ -44,6 +44,7 @@ namespace JOYSTICK namespace PERIPHERALS { + class CAddonButtonMapping; class CGUIDialogPeripheralSettings; class CPeripheralBus; class CPeripherals; @@ -237,6 +238,6 @@ namespace PERIPHERALS std::set<std::string> m_changedSettings; CPeripheralBus* m_bus; std::map<KODI::JOYSTICK::IInputHandler*, std::unique_ptr<KODI::JOYSTICK::IDriverHandler>> m_inputHandlers; - std::map<KODI::JOYSTICK::IButtonMapper*, KODI::JOYSTICK::IDriverHandler*> m_buttonMappers; + std::map<KODI::JOYSTICK::IButtonMapper*, std::unique_ptr<CAddonButtonMapping>> m_buttonMappers; }; } |