- attempt to fix client crash on disconnect
This commit is contained in:
parent
1e07d023ce
commit
3661d62c03
|
@ -247,7 +247,7 @@ ClientInterface::~ClientInterface() {
|
|||
//printf("B === Client destructor\n");
|
||||
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
|
||||
close();
|
||||
close(false);
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
|
||||
|
||||
delete clientSocket;
|
||||
|
@ -270,7 +270,14 @@ void ClientInterface::connect(const Ip &ip, int port) {
|
|||
this->ip = ip;
|
||||
this->port = port;
|
||||
|
||||
MutexSafeWrapper safeMutex(networkCommandListThreadAccessor,CODE_AT_LINE);
|
||||
shutdownNetworkCommandListThread();
|
||||
|
||||
delete clientSocket;
|
||||
clientSocket = NULL;
|
||||
|
||||
safeMutex.ReleaseLock();
|
||||
|
||||
clientSocket= new ClientSocket();
|
||||
clientSocket->setBlock(false);
|
||||
clientSocket->connect(ip, port);
|
||||
|
@ -1747,13 +1754,20 @@ void ClientInterface::quitGame(bool userManuallyQuit)
|
|||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Lined: %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
|
||||
}
|
||||
|
||||
void ClientInterface::close()
|
||||
{
|
||||
void ClientInterface::close(bool lockMutex) {
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] START, clientSocket = %p\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,clientSocket);
|
||||
|
||||
MutexSafeWrapper safeMutex(NULL,CODE_AT_LINE);
|
||||
if(lockMutex == true) {
|
||||
safeMutex.setMutex(networkCommandListThreadAccessor,CODE_AT_LINE);
|
||||
}
|
||||
shutdownNetworkCommandListThread();
|
||||
|
||||
delete clientSocket;
|
||||
clientSocket= NULL;
|
||||
|
||||
safeMutex.ReleaseLock();
|
||||
|
||||
connectedTime = 0;
|
||||
gotIntro = false;
|
||||
|
||||
|
@ -1764,6 +1778,10 @@ void ClientInterface::close()
|
|||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] END\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
|
||||
}
|
||||
|
||||
void ClientInterface::close() {
|
||||
close(true);
|
||||
}
|
||||
|
||||
void ClientInterface::discoverServers(DiscoveredServersInterface *cb) {
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
|
||||
|
||||
|
|
|
@ -192,6 +192,8 @@ protected:
|
|||
void updateFrame(int *checkFrame);
|
||||
void shutdownNetworkCommandListThread();
|
||||
bool getNetworkCommand(int frameCount, int currentCachedPendingCommandsIndex);
|
||||
|
||||
void close(bool lockMutex);
|
||||
};
|
||||
|
||||
}}//end namespace
|
||||
|
|
Loading…
Reference in New Issue
Block a user