all repos — mgba @ 891b7aac96c2881b7a5b1fc57f83deddaa14b714

mGBA Game Boy Advance Emulator

Merge branch 'feature/input-revamp' into medusa
Vicki Pfau vi@endrift.com
Fri, 07 Apr 2017 16:56:35 -0700
commit

891b7aac96c2881b7a5b1fc57f83deddaa14b714

parent

f97983d498ac7a460a6f8160351909735e05f372

1 files changed, 12 insertions(+), 0 deletions(-)

jump to
M src/platform/qt/InputController.cppsrc/platform/qt/InputController.cpp

@@ -230,6 +230,9 @@ }

void InputController::saveConfiguration(uint32_t type) { for (auto& inputMap : m_inputMaps) { + if (!inputMap.info) { + continue; + } mInputMapSave(&inputMap, type, m_config->input()); } m_config->write();

@@ -491,6 +494,9 @@ return activeAxes;

} void InputController::bindKey(mPlatform platform, uint32_t type, int key, int coreKey) { + if (m_inputMaps.find(platform) == m_inputMaps.end() || coreKey >= m_inputMaps[platform].info->nKeys) { + return; + } QModelIndex index = m_inputModel->index(coreKey, 0, m_inputMenuIndices[platform]); bool signalsBlocked = m_inputModel->blockSignals(true); if (type != KEYBOARD) {

@@ -503,6 +509,9 @@ mInputBindKey(&m_inputMaps[platform], type, key, coreKey);

} void InputController::bindAxis(mPlatform platform, uint32_t type, int axis, GamepadAxisEvent::Direction direction, int key) { + if (m_inputMaps.find(platform) == m_inputMaps.end() || key >= m_inputMaps[platform].info->nKeys) { + return; + } QModelIndex index = m_inputModel->index(key, 0, m_inputMenuIndices[platform]); bool signalsBlocked = m_inputModel->blockSignals(true); m_inputModel->updateAxis(index, axis, direction);

@@ -566,6 +575,9 @@ return activeHats;

} void InputController::bindHat(mPlatform platform, uint32_t type, int hat, GamepadHatEvent::Direction direction, int coreKey) { + if (m_inputMaps.find(platform) == m_inputMaps.end() || coreKey >= m_inputMaps[platform].info->nKeys) { + return; + } QModelIndex index = m_inputModel->index(coreKey, 0, m_inputMenuIndices[platform]); //m_inputModel->updateHat(index, hat, direction);