From 91d834ce73c9a0edbf6a2606e355d01586c65d5f Mon Sep 17 00:00:00 2001 From: Megamouse Date: Thu, 20 Dec 2018 12:52:30 +0100 Subject: [PATCH] Qt/Input: improve DS4 device list Needed to move Reset out to main_window due to hid closing problems. It's better to have the reset logic outside anyway --- rpcs3/ds4_pad_handler.cpp | 10 ++++++---- rpcs3/rpcs3qt/main_window.cpp | 9 +++++++++ rpcs3/rpcs3qt/pad_settings_dialog.cpp | 13 +------------ rpcs3/rpcs3qt/pad_settings_dialog.h | 1 - 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/rpcs3/ds4_pad_handler.cpp b/rpcs3/ds4_pad_handler.cpp index 387e763baa..de74b4b9da 100644 --- a/rpcs3/ds4_pad_handler.cpp +++ b/rpcs3/ds4_pad_handler.cpp @@ -96,7 +96,8 @@ ds4_pad_handler::ds4_pad_handler() : PadHandlerBase(pad_handler::ds4) b_has_rumble = true; b_has_deadzones = true; - m_name_string = "Ds4 Pad #"; + m_name_string = "DS4 Pad #"; + m_max_devices = CELL_PAD_MAX_PORT_NUM; m_trigger_threshold = trigger_max / 2; m_thumb_threshold = thumb_max / 2; @@ -261,9 +262,10 @@ std::shared_ptr ds4_pad_handler::GetDevice(const std std::string pad_serial = padId.substr(pos + 9); std::shared_ptr device = nullptr; + int i = 0; for (auto& cur_control : controllers) { - if (pad_serial == cur_control.first) + if (pad_serial == std::to_string(i++) || pad_serial == cur_control.first) { device = cur_control.second; break; @@ -768,9 +770,9 @@ std::vector ds4_pad_handler::ListDevices() if (!Init()) return ds4_pads_list; - for (auto& pad : controllers) + for (size_t i = 0; i < controllers.size(); ++i) { - ds4_pads_list.emplace_back(m_name_string + pad.first); + ds4_pads_list.emplace_back(m_name_string + std::to_string(i)); } return ds4_pads_list; diff --git a/rpcs3/rpcs3qt/main_window.cpp b/rpcs3/rpcs3qt/main_window.cpp index 19fbaf60b7..fffc715d1f 100644 --- a/rpcs3/rpcs3qt/main_window.cpp +++ b/rpcs3/rpcs3qt/main_window.cpp @@ -1252,7 +1252,16 @@ void main_window::CreateConnects() auto openPadSettings = [this] { + auto resetPadHandlers = [this] + { + if (Emu.IsStopped()) + { + return; + } + Emu.GetCallbacks().reset_pads(); + }; pad_settings_dialog dlg(this); + connect(&dlg, &QDialog::accepted, resetPadHandlers); dlg.exec(); }; diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.cpp b/rpcs3/rpcs3qt/pad_settings_dialog.cpp index 1f7f9b44ee..4aea1d3e5e 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.cpp +++ b/rpcs3/rpcs3qt/pad_settings_dialog.cpp @@ -791,6 +791,7 @@ void pad_settings_dialog::ChangeInputType() switch (m_handler->m_type) { #ifdef _WIN32 + case pad_handler::ds4: case pad_handler::xinput: { const QString name_string = qstr(m_handler->name_string()); @@ -960,16 +961,6 @@ void pad_settings_dialog::SaveProfile() m_handler_cfg.save(); } -void pad_settings_dialog::ResetPadHandler() -{ - if (Emu.IsStopped()) - { - return; - } - - Emu.GetCallbacks().reset_pads(); -} - void pad_settings_dialog::SaveExit() { SaveProfile(); @@ -986,8 +977,6 @@ void pad_settings_dialog::SaveExit() g_cfg_input.save(); - ResetPadHandler(); - QDialog::accept(); } diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.h b/rpcs3/rpcs3qt/pad_settings_dialog.h index 9e133d150a..f15d758729 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.h +++ b/rpcs3/rpcs3qt/pad_settings_dialog.h @@ -146,7 +146,6 @@ private: void ReloadButtons(); void ChangeProfile(); - void ResetPadHandler(); /** Repaints a stick deadzone preview label */ void RepaintPreviewLabel(QLabel* l, int dz, int w, int x, int y);