mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
Fix threading issue when exiting PPSSPP due to unjoined AdhocServer thread when AdhocServer failed to bind the socket and exited the thread early.
This commit is contained in:
1 parent
1fd54153fc
commit
6a79f59c06
4 files changed
+8
-9
No files matched your search
@@ -40,6 +40,7 @@
|
||||
|
||||
#include <thread>
|
||||
#include <mutex>
|
||||
#include <atomic>
|
||||
|
||||
#include "Common/Net/Resolve.h"
|
||||
#include "Common/Serialize/Serializer.h"
|
||||
|
||||
@@ -80,8 +80,7 @@ SceNetAdhocctlUserNode * _db_user = NULL;
|
||||
SceNetAdhocctlGameNode * _db_game = NULL;
|
||||
|
||||
// Server Status
|
||||
//int _status = 0;
|
||||
bool adhocServerRunning = false;
|
||||
std::atomic<bool> adhocServerRunning(false);
|
||||
std::thread adhocServerThread;
|
||||
|
||||
// Crosslink database for cross region Adhoc play
|
||||
|
||||
@@ -369,5 +369,5 @@ void update_status();
|
||||
int proAdhocServerThread(int port); // (int argc, char * argv[])
|
||||
|
||||
//extern int _status;
|
||||
extern bool adhocServerRunning;
|
||||
extern std::atomic<bool> adhocServerRunning;
|
||||
extern std::thread adhocServerThread;
|
||||
@@ -118,12 +118,11 @@ static int sceNetAdhocPdpRecv(int id, void* addr, void* port, void* buf, void* d
|
||||
|
||||
void __NetAdhocShutdown() {
|
||||
// Kill AdhocServer Thread
|
||||
if (adhocServerRunning) {
|
||||
adhocServerRunning = false;
|
||||
if (adhocServerThread.joinable()) {
|
||||
adhocServerThread.join();
|
||||
}
|
||||
adhocServerRunning = false;
|
||||
if (adhocServerThread.joinable()) {
|
||||
adhocServerThread.join();
|
||||
}
|
||||
|
||||
// Checks to avoid confusing logspam
|
||||
if (netAdhocMatchingInited) {
|
||||
NetAdhocMatching_Term();
|
||||
@@ -1180,8 +1179,8 @@ void __NetAdhocInit() {
|
||||
__AdhocServerInit();
|
||||
|
||||
// Create built-in AdhocServer Thread
|
||||
adhocServerRunning = false;
|
||||
if (g_Config.bEnableWlan && g_Config.bEnableAdhocServer) {
|
||||
adhocServerRunning = true;
|
||||
adhocServerThread = std::thread(proAdhocServerThread, SERVER_PORT);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user