Fix more segfaults on NetPlay quit

Basically everything here was race conditions in Qt callbacks, so I changed the client/server instances to std::shared_ptr and added null checks. It checks that the object exists in the callback, and the shared_ptr ensures it doesn't get destroyed until we're done with it.

MD5 check would also cause a segfault if you quit without cancelling it first, which was pretty silly.
This commit is contained in:
Techjar committed 2018-07-21 00:04:14 -04:00
1 parent a21d536f99
commit cfeffdcf42
7 files changed
+48 -29

No files matched your search

+4 -4
View File
@@ -276,9 +276,9 @@ GameListModel* Settings::GetGameListModel() const
return model;
}
NetPlay::NetPlayClient* Settings::GetNetPlayClient()
std::shared_ptr<NetPlay::NetPlayClient> Settings::GetNetPlayClient()
{
return m_client.get();
return m_client;
}
void Settings::ResetNetPlayClient(NetPlay::NetPlayClient* client)
@@ -286,9 +286,9 @@ void Settings::ResetNetPlayClient(NetPlay::NetPlayClient* client)
m_client.reset(client);
}
NetPlay::NetPlayServer* Settings::GetNetPlayServer()
std::shared_ptr<NetPlay::NetPlayServer> Settings::GetNetPlayServer()
{
return m_server.get();
return m_server;
}
void Settings::ResetNetPlayServer(NetPlay::NetPlayServer* server)