From 80da48f631952a82c387c261f7cd94f31fea4cb5 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Sun, 23 Nov 2025 02:05:38 -0600 Subject: [PATCH] DolphinQt: Add "Poll Rate" display to GCAdapter config window. The window now refreshes every 500ms. SetAdapterCallback is no longer used. --- .../Config/Mapping/GCPadWiiUConfigDialog.cpp | 20 +++++++++++-------- .../Config/Mapping/GCPadWiiUConfigDialog.h | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp b/Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp index 82b39d28e38..08fa295741c 100644 --- a/Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp +++ b/Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp @@ -6,10 +6,10 @@ #include #include #include +#include #include #include "Core/Config/MainSettings.h" -#include "Core/ConfigManager.h" #include "DolphinQt/QtUtils/QueueOnObject.h" #include "InputCommon/GCAdapter.h" @@ -23,27 +23,25 @@ GCPadWiiUConfigDialog::GCPadWiiUConfigDialog(int port, QWidget* parent) ConnectWidgets(); } -GCPadWiiUConfigDialog::~GCPadWiiUConfigDialog() -{ - GCAdapter::SetAdapterCallback(nullptr); -} - void GCPadWiiUConfigDialog::CreateLayout() { setWindowTitle(tr("GameCube Controller Adapter at Port %1").arg(m_port + 1)); m_layout = new QVBoxLayout(); m_status_label = new QLabel(); + m_poll_rate_label = new QLabel; m_rumble = new QCheckBox(tr("Enable Rumble")); m_simulate_bongos = new QCheckBox(tr("Simulate DK Bongos")); m_button_box = new QDialogButtonBox(QDialogButtonBox::Ok); UpdateAdapterStatus(); - auto callback = [this] { QueueOnObject(this, &GCPadWiiUConfigDialog::UpdateAdapterStatus); }; - GCAdapter::SetAdapterCallback(callback); + auto* const timer = new QTimer{this}; + connect(timer, &QTimer::timeout, this, &GCPadWiiUConfigDialog::UpdateAdapterStatus); + timer->start(std::chrono::milliseconds{500}); m_layout->addWidget(m_status_label); + m_layout->addWidget(m_poll_rate_label); m_layout->addWidget(m_rumble); m_layout->addWidget(m_simulate_bongos); m_layout->addWidget(m_button_box); @@ -79,6 +77,12 @@ void GCPadWiiUConfigDialog::UpdateAdapterStatus() m_status_label->setText(status_text); + const auto poll_rate = GCAdapter::GetCurrentPollRate(); + if (poll_rate != 0) + m_poll_rate_label->setText(tr("Poll Rate: %1 Hz").arg(poll_rate, 0, 'f', 2)); + else + m_poll_rate_label->clear(); + m_rumble->setEnabled(detected); m_simulate_bongos->setEnabled(detected); } diff --git a/Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.h b/Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.h index f18510d3c54..d71d2376188 100644 --- a/Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.h +++ b/Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.h @@ -15,7 +15,6 @@ class GCPadWiiUConfigDialog final : public QDialog Q_OBJECT public: explicit GCPadWiiUConfigDialog(int port, QWidget* parent = nullptr); - ~GCPadWiiUConfigDialog() override; private: void LoadSettings(); @@ -31,6 +30,7 @@ private: QVBoxLayout* m_layout; QLabel* m_status_label; + QLabel* m_poll_rate_label; QDialogButtonBox* m_button_box; // Checkboxes