From ad1313fd43fa0c8e059a2d8eef0bbe332fbdbedf Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Wed, 16 Sep 2015 00:34:24 -0700 Subject: [PATCH] Qt: Dropping multiplayer windows works more cleanly now --- CHANGES | 1 + src/platform/qt/MultiplayerController.cpp | 14 ++++++++++++++ src/platform/qt/MultiplayerController.h | 1 + src/platform/qt/Window.cpp | 1 + 4 files changed, 17 insertions(+) diff --git a/CHANGES b/CHANGES index b5fe59c18..31cb9f34e 100644 --- a/CHANGES +++ b/CHANGES @@ -19,6 +19,7 @@ Misc: - ARM7: Force disable LTO on two files to work around a GCC bug - Qt: Prevent savestate window from opening while in multiplayer - Qt: Disable menu items in multiplayer that don't make sense to have enabled + - Qt: Dropping multiplayer windows works more cleanly now 0.3.0: (2015-08-16) Features: diff --git a/src/platform/qt/MultiplayerController.cpp b/src/platform/qt/MultiplayerController.cpp index 20da04e2e..547368af1 100644 --- a/src/platform/qt/MultiplayerController.cpp +++ b/src/platform/qt/MultiplayerController.cpp @@ -64,6 +64,20 @@ void MultiplayerController::detachGame(GameController* controller) { emit gameDetached(); } +int MultiplayerController::playerId(GameController* controller) { + MutexLock(&m_lockstep.mutex); + int id = -1; + for (int i = 0; i < m_lockstep.attached; ++i) { + GBAThread* thread = controller->thread(); + if (thread->sioDrivers.multiplayer == &m_lockstep.players[i]->d) { + id = i; + break; + } + } + MutexUnlock(&m_lockstep.mutex); + return id; +} + int MultiplayerController::attached() { int num; MutexLock(&m_lockstep.mutex); diff --git a/src/platform/qt/MultiplayerController.h b/src/platform/qt/MultiplayerController.h index f849d8ad1..24357bef7 100644 --- a/src/platform/qt/MultiplayerController.h +++ b/src/platform/qt/MultiplayerController.h @@ -27,6 +27,7 @@ public: void detachGame(GameController*); int attached(); + int playerId(GameController*); signals: void gameAttached(); diff --git a/src/platform/qt/Window.cpp b/src/platform/qt/Window.cpp index 0435f58f5..25da9a7e2 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -278,6 +278,7 @@ void Window::multiplayerChanged() { attached = multiplayer->attached(); connect(multiplayer, SIGNAL(gameAttached()), this, SLOT(multiplayerChanged())); connect(multiplayer, SIGNAL(gameDetached()), this, SLOT(multiplayerChanged())); + m_playerId = multiplayer->playerId(m_controller); } if (m_controller->isLoaded()) { for (QAction* action : m_nonMpActions) {