aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarrett Brown <themagnificentmrb@gmail.com>2018-01-12 16:36:01 -0800
committerGarrett Brown <themagnificentmrb@gmail.com>2018-01-15 14:36:32 -0800
commitb94825237dc7aa7eb0838577c8174ed930e776ca (patch)
treef6847d8c7d24425d41be5273385d0706843b64c4
parent1305b6a73c222498ce75513884b71f04abeb8c62 (diff)
Peripherals: Modernize button mapper registration
-rw-r--r--xbmc/peripherals/devices/Peripheral.cpp16
-rw-r--r--xbmc/peripherals/devices/Peripheral.h3
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;
};
}