summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinWX/FrameTools.cpp
diff options
context:
space:
mode:
authorcomex <comexk@gmail.com>2015-04-13 01:49:24 -0400
committercomex <comexk@gmail.com>2015-04-13 01:49:24 -0400
commite000aaaf5d904abe6691751d7319d2aca90ff922 (patch)
treebb00704fe8da804c836ef7c797d79f40c7f6b88e /Source/Core/DolphinWX/FrameTools.cpp
parent59c4beb8ea3d1a50d054e4f8209d466352f90d20 (diff)
Have the UI thread do PauseAndLock before messing with GetUsbPointer.
Since its lifetime is managed on the CPU thread, this (or a refactoring) is absolutely required. One of the functions with a PauseAndLock call added is CFrame::UpdateGUI; this is fine now, since it's called only after important events happen, so just make sure not to call it every frame or something :)
Diffstat (limited to 'Source/Core/DolphinWX/FrameTools.cpp')
-rw-r--r--Source/Core/DolphinWX/FrameTools.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/Source/Core/DolphinWX/FrameTools.cpp b/Source/Core/DolphinWX/FrameTools.cpp
index de41814259..4edb08980f 100644
--- a/Source/Core/DolphinWX/FrameTools.cpp
+++ b/Source/Core/DolphinWX/FrameTools.cpp
@@ -1584,17 +1584,21 @@ void CFrame::ConnectWiimote(int wm_idx, bool connect)
{
if (Core::IsRunning() && SConfig::GetInstance().m_LocalCoreStartupParameter.bWii)
{
+ bool was_unpaused = Core::PauseAndLock(true);
GetUsbPointer()->AccessWiiMote(wm_idx | 0x100)->Activate(connect);
wxString msg(wxString::Format(_("Wiimote %i %s"), wm_idx + 1,
connect ? _("Connected") : _("Disconnected")));
Core::DisplayMessage(WxStrToStr(msg), 3000);
Host_UpdateMainFrame();
+ Core::PauseAndLock(false, was_unpaused);
}
}
void CFrame::OnConnectWiimote(wxCommandEvent& event)
{
+ bool was_unpaused = Core::PauseAndLock(true);
ConnectWiimote(event.GetId() - IDM_CONNECT_WIIMOTE1, !GetUsbPointer()->AccessWiiMote((event.GetId() - IDM_CONNECT_WIIMOTE1) | 0x100)->IsConnected());
+ Core::PauseAndLock(false, was_unpaused);
}
// Toggle fullscreen. In Windows the fullscreen mode is accomplished by expanding the m_Panel to cover
@@ -1792,6 +1796,7 @@ void CFrame::UpdateGUI()
GetMenuBar()->FindItem(IDM_CONNECT_BALANCEBOARD)->Enable(RunningWii);
if (RunningWii)
{
+ bool was_unpaused = Core::PauseAndLock(true);
GetMenuBar()->FindItem(IDM_CONNECT_WIIMOTE1)->Check(GetUsbPointer()->
AccessWiiMote(0x0100)->IsConnected());
GetMenuBar()->FindItem(IDM_CONNECT_WIIMOTE2)->Check(GetUsbPointer()->
@@ -1802,6 +1807,7 @@ void CFrame::UpdateGUI()
AccessWiiMote(0x0103)->IsConnected());
GetMenuBar()->FindItem(IDM_CONNECT_BALANCEBOARD)->Check(GetUsbPointer()->
AccessWiiMote(0x0104)->IsConnected());
+ Core::PauseAndLock(false, was_unpaused);
}
if (m_ToolBar)