void MDFNI_CloseGame(void) { if(MDFNGameInfo) { if(MDFNnetplay) MDFNI_NetplayStop(); MDFNMOV_Stop(); if(MDFNGameInfo->GameType != GMT_PLAYER) MDFN_FlushGameCheats(0); MDFNGameInfo->CloseGame(); if(MDFNGameInfo->name) { free(MDFNGameInfo->name); MDFNGameInfo->name=0; } MDFNMP_Kill(); MDFNGameInfo = NULL; MDFN_StateEvilEnd(); for(unsigned i = 0; i < CDInterfaces.size(); i++) delete CDInterfaces[i]; CDInterfaces.clear(); } TBlur_Kill(); #ifdef WANT_DEBUGGER MDFNDBG_Kill(); #endif for(unsigned int x = 0; x < sizeof(PortDeviceCache) / sizeof(char *); x++) { if(PortDeviceCache[x]) { free(PortDeviceCache[x]); PortDeviceCache[x] = NULL; } } memset(PortDataCache, 0, sizeof(PortDataCache)); memset(PortDataLenCache, 0, sizeof(PortDataLenCache)); memset(PortDeviceCache, 0, sizeof(PortDeviceCache)); }
// Called from the game thread void MDFND_NetworkClose(void) { NoWaiting &= ~2; if(Connection) { delete Connection; Connection = NULL; } if(MDFNDnetplay) { MDFNI_NetplayStop(); MDFNDnetplay = 0; PrintNetStatus(_("*** Disconnected")); } }