SyncEvents: ensure MB & Mouse have removed their events for a restart

This commit is contained in:
tomcw
2020-12-12 17:46:36 +00:00
parent 30d3269fbf
commit 0ddb1917aa
3 changed files with 15 additions and 7 deletions
+11 -7
View File
@@ -653,19 +653,23 @@ int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int)
MB_Reset();
LogFileOutput("Main: MB_Reset()\n");
CMouseInterface* pMouseCard = GetCardMgr().GetMouseCard();
if (pMouseCard)
if (g_bRestart)
{
pMouseCard->Reset(); // Deassert any pending IRQs - GH#514
LogFileOutput("Main: CMouseInterface::Uninitialize()\n");
CMouseInterface* pMouseCard = GetCardMgr().GetMouseCard();
if (pMouseCard)
{
// dtor removes event from g_SynchronousEventMgr - do before g_SynchronousEventMgr.Reset()
GetCardMgr().Remove( pMouseCard->GetSlot() );
LogFileOutput("Main: CMouseInterface::dtor\n");
}
_ASSERT(g_SynchronousEventMgr.GetHead() == NULL);
g_SynchronousEventMgr.Reset();
}
DSUninit();
LogFileOutput("Main: DSUninit()\n");
if (g_bRestart)
g_SynchronousEventMgr.Reset();
if (g_bHookSystemKey)
{
UninitHookThread();