Merge pull request #10718 from shuffle2/hotkeys

qt: unregister Settings' DevicesChanged callback during shutdown
This commit is contained in:
Admiral H. Curtiss 2022-06-03 13:48:28 +02:00 committed by GitHub
commit 9fb17b5a48
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 2 deletions

View file

@ -360,6 +360,8 @@ void MainWindow::ShutdownControllers()
{
m_hotkey_scheduler->Stop();
Settings::Instance().UnregisterDevicesChangedCallback();
Pad::Shutdown();
Pad::ShutdownGBA();
Keyboard::Shutdown();

View file

@ -69,7 +69,7 @@ Settings::Settings()
}
});
g_controller_interface.RegisterDevicesChangedCallback([this] {
m_hotplug_callback_handle = g_controller_interface.RegisterDevicesChangedCallback([this] {
if (Host::GetInstance()->IsHostThread())
{
emit DevicesChanged();
@ -90,6 +90,11 @@ Settings::Settings()
Settings::~Settings() = default;
void Settings::UnregisterDevicesChangedCallback()
{
g_controller_interface.UnregisterDevicesChangedCallback(m_hotplug_callback_handle);
}
Settings& Settings::Instance()
{
static Settings settings;

View file

@ -12,6 +12,7 @@
#include "Core/Config/MainSettings.h"
#include "DiscIO/Enums.h"
#include "InputCommon/ControllerInterface/ControllerInterface.h"
namespace Core
{
@ -44,6 +45,8 @@ public:
~Settings();
void UnregisterDevicesChangedCallback();
static Settings& Instance();
static QSettings& GetQSettings();
@ -199,10 +202,12 @@ signals:
void USBKeyboardConnectionChanged(bool connected);
private:
Settings();
bool m_batch = false;
std::shared_ptr<NetPlay::NetPlayClient> m_client;
std::shared_ptr<NetPlay::NetPlayServer> m_server;
Settings();
ControllerInterface::HotplugCallbackHandle m_hotplug_callback_handle;
};
Q_DECLARE_METATYPE(Core::State);