From b689a195ff283414968d4b433e389a06742e166c Mon Sep 17 00:00:00 2001 From: Michael M Date: Thu, 5 Jul 2018 14:17:07 -0700 Subject: [PATCH 1/2] Qt: add Settings::DevicesChanged signal --- Source/Core/DolphinQt/Settings.cpp | 4 ++++ Source/Core/DolphinQt/Settings.h | 1 + 2 files changed, 5 insertions(+) diff --git a/Source/Core/DolphinQt/Settings.cpp b/Source/Core/DolphinQt/Settings.cpp index fa992bee7d..61062d9894 100644 --- a/Source/Core/DolphinQt/Settings.cpp +++ b/Source/Core/DolphinQt/Settings.cpp @@ -22,6 +22,7 @@ #include "DolphinQt/GameList/GameListModel.h" #include "DolphinQt/QtUtils/QueueOnObject.h" +#include "InputCommon/ControllerInterface/ControllerInterface.h" #include "InputCommon/InputConfig.h" Settings::Settings() @@ -34,6 +35,9 @@ Settings::Settings() Config::AddConfigChangedCallback( [this] { QueueOnObject(this, [this] { emit ConfigChanged(); }); }); + g_controller_interface.RegisterDevicesChangedCallback( + [this] { QueueOnObject(this, [this] { emit DevicesChanged(); }); }); + SetCurrentUserStyle(GetCurrentUserStyle()); } diff --git a/Source/Core/DolphinQt/Settings.h b/Source/Core/DolphinQt/Settings.h index ba6facb87c..0c1b61d745 100644 --- a/Source/Core/DolphinQt/Settings.h +++ b/Source/Core/DolphinQt/Settings.h @@ -159,6 +159,7 @@ signals: void DebugFontChanged(QFont font); void AutoUpdateTrackChanged(const QString& mode); void AnalyticsToggled(bool enabled); + void DevicesChanged(); private: bool m_batch = false; From ce98a9c71d3bb03bb127601c3d09c647a5d41767 Mon Sep 17 00:00:00 2001 From: Michael M Date: Thu, 5 Jul 2018 14:17:47 -0700 Subject: [PATCH 2/2] Qt/MappingWindow: update devices combo box when hotplugging devices --- Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp | 8 +++++++- Source/Core/DolphinQt/Config/Mapping/MappingWindow.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp index 48e5a5f0f2..1b6f629c1c 100644 --- a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp +++ b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp @@ -136,6 +136,8 @@ void MappingWindow::CreateMainLayout() void MappingWindow::ConnectWidgets() { + connect(&Settings::Instance(), &Settings::DevicesChanged, this, + &MappingWindow::OnGlobalDevicesChanged); connect(m_button_box, &QDialogButtonBox::rejected, this, &QDialog::reject); connect(m_devices_refresh, &QPushButton::clicked, this, &MappingWindow::RefreshDevices); connect(m_devices_combo, static_cast(&QComboBox::currentIndexChanged), @@ -242,11 +244,15 @@ bool MappingWindow::IsMappingAllDevices() const } void MappingWindow::RefreshDevices() +{ + Core::RunAsCPUThread([&] { g_controller_interface.RefreshDevices(); }); +} + +void MappingWindow::OnGlobalDevicesChanged() { m_devices_combo->clear(); Core::RunAsCPUThread([&] { - g_controller_interface.RefreshDevices(); m_controller->UpdateReferences(g_controller_interface); const auto default_device = m_controller->GetDefaultDevice().ToString(); diff --git a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.h b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.h index c0a9f47af2..0432286e01 100644 --- a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.h +++ b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.h @@ -76,6 +76,7 @@ private: void OnSaveProfilePressed(); void OnDefaultFieldsPressed(); void OnDeviceChanged(int index); + void OnGlobalDevicesChanged(); ControllerEmu::EmulatedController* m_controller = nullptr;