From 4d24b16735001b96dcee2bebc49560185f969b03 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 f8028b54b..f172e8c19 100644 --- a/CHANGES +++ b/CHANGES @@ -27,6 +27,7 @@ Misc: - Qt: Add 'Apply' button to settings window - 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 3cdf65f44..4b4370d40 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -279,6 +279,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) {