diff --git a/src/duckstation-qt/qthost.cpp b/src/duckstation-qt/qthost.cpp index 4c9c45a9d..de7eeccf3 100644 --- a/src/duckstation-qt/qthost.cpp +++ b/src/duckstation-qt/qthost.cpp @@ -2218,7 +2218,7 @@ void InputDeviceListModel::enumerateDevices() } QMetaObject::invokeMethod(this, "resetLists", Qt::QueuedConnection, Q_ARG(const DeviceList&, new_devices), - Q_ARG(const QStringList&, m_vibration_motors)); + Q_ARG(const QStringList&, new_motors)); } void InputDeviceListModel::resetLists(const DeviceList& devices, const QStringList& motors) diff --git a/src/util/input_manager.cpp b/src/util/input_manager.cpp index 29fbd87d1..33c88adac 100644 --- a/src/util/input_manager.cpp +++ b/src/util/input_manager.cpp @@ -2167,30 +2167,32 @@ void InputManager::UpdateInputSourceState(const SettingsInterface& si, std::uniq InputSourceType type, std::unique_ptr (*factory_function)()) { const bool enabled = IsInputSourceEnabled(si, type); + std::unique_ptr& source = s_input_sources[static_cast(type)]; if (enabled) { - if (s_input_sources[static_cast(type)]) + if (source) { - s_input_sources[static_cast(type)]->UpdateSettings(si, settings_lock); + source->UpdateSettings(si, settings_lock); } else { - std::unique_ptr source(factory_function()); - if (!source->Initialize(si, settings_lock)) + source = factory_function(); + if (!source || !source->Initialize(si, settings_lock)) { ERROR_LOG("Source '{}' failed to initialize.", InputSourceToString(type)); + if (source) + source->Shutdown(); + source.reset(); return; } - - s_input_sources[static_cast(type)] = std::move(source); } } else { - if (s_input_sources[static_cast(type)]) + if (source) { - s_input_sources[static_cast(type)]->Shutdown(); - s_input_sources[static_cast(type)].reset(); + source->Shutdown(); + source.reset(); } } }