From 7b40d3f6ca4027dfc254942861ea9c2dd6b51d6f Mon Sep 17 00:00:00 2001 From: Arisotura Date: Wed, 7 Aug 2024 15:13:26 +0200 Subject: [PATCH] move LAN/netplay stuff to net-utils --- src/frontend/qt_sdl/CMakeLists.txt | 5 ---- src/frontend/qt_sdl/LANDialog.cpp | 33 +++--------------------- src/net/CMakeLists.txt | 8 ++++-- src/{frontend/qt_sdl => net}/LAN.cpp | 11 +++++--- src/{frontend/qt_sdl => net}/LAN.h | 4 +-- src/{frontend/qt_sdl => net}/Netplay.cpp | 9 +------ src/{frontend/qt_sdl => net}/Netplay.h | 0 7 files changed, 21 insertions(+), 49 deletions(-) rename src/{frontend/qt_sdl => net}/LAN.cpp (99%) rename src/{frontend/qt_sdl => net}/LAN.h (94%) rename src/{frontend/qt_sdl => net}/Netplay.cpp (99%) rename src/{frontend/qt_sdl => net}/Netplay.h (100%) diff --git a/src/frontend/qt_sdl/CMakeLists.txt b/src/frontend/qt_sdl/CMakeLists.txt index 6a4634c7..c6301552 100644 --- a/src/frontend/qt_sdl/CMakeLists.txt +++ b/src/frontend/qt_sdl/CMakeLists.txt @@ -52,8 +52,6 @@ set(SOURCES_QT_SDL CLI.h CLI.cpp - LAN.cpp - Netplay.cpp LANDialog.cpp NetplayDialog.cpp ) @@ -93,8 +91,6 @@ add_compile_definitions(ARCHIVE_SUPPORT_ENABLED) add_executable(melonDS ${SOURCES_QT_SDL}) -find_package(ENet REQUIRED) - add_subdirectory("../../net" "${CMAKE_BINARY_DIR}/net" ) @@ -182,7 +178,6 @@ endif() target_link_libraries(melonDS PRIVATE core) target_link_libraries(melonDS PRIVATE PkgConfig::SDL2 PkgConfig::LibArchive PkgConfig::Zstd) target_link_libraries(melonDS PRIVATE ${QT_LINK_LIBS} ${CMAKE_DL_LIBS}) -target_link_libraries(melonDS PRIVATE ${ENET_LIBRARIES}) if (WIN32) option(PORTABLE "Make a portable build that looks for its configuration in the current directory" ON) diff --git a/src/frontend/qt_sdl/LANDialog.cpp b/src/frontend/qt_sdl/LANDialog.cpp index e3c4bf32..96e67fa6 100644 --- a/src/frontend/qt_sdl/LANDialog.cpp +++ b/src/frontend/qt_sdl/LANDialog.cpp @@ -17,37 +17,10 @@ */ #include -#include #include #include #include -#ifdef __WIN32__ -#include - #include - - #define socket_t SOCKET - #define sockaddr_t SOCKADDR - #define sockaddr_in_t SOCKADDR_IN -#else -#include -#include -#include -#include - -#define socket_t int -#define sockaddr_t struct sockaddr -#define sockaddr_in_t struct sockaddr_in -#define closesocket close -#endif - -#ifndef INVALID_SOCKET -#define INVALID_SOCKET (socket_t)-1 -#endif - -#include -#include - #include #include #include @@ -232,7 +205,8 @@ void LANStartClientDialog::updateDiscoveryList() void LANStartClientDialog::doUpdateDiscoveryList() { - LAN::DiscoveryMutex.lock(); + if (LAN::DiscoveryMutex) + Platform::Mutex_Lock(LAN::DiscoveryMutex); QStandardItemModel* model = (QStandardItemModel*)ui->tvAvailableGames->model(); int curcount = model->rowCount(); @@ -277,7 +251,8 @@ void LANStartClientDialog::doUpdateDiscoveryList() i++; } - LAN::DiscoveryMutex.unlock(); + if (LAN::DiscoveryMutex) + Platform::Mutex_Unlock(LAN::DiscoveryMutex); } diff --git a/src/net/CMakeLists.txt b/src/net/CMakeLists.txt index 28cedfd8..5116487e 100644 --- a/src/net/CMakeLists.txt +++ b/src/net/CMakeLists.txt @@ -4,8 +4,9 @@ add_library(net-utils STATIC Net_Slirp.cpp PacketDispatcher.cpp LocalMP.cpp - MPInterface.h - MPInterface.cpp + LAN.cpp + Netplay.cpp + MPInterface.cpp ) target_include_directories(net-utils PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") @@ -21,3 +22,6 @@ else() target_include_directories(net-utils SYSTEM PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/libslirp/glib") target_link_libraries(net-utils PRIVATE slirp) endif() + +find_package(ENet REQUIRED) +target_link_libraries(net-utils PRIVATE ${ENET_LIBRARIES}) diff --git a/src/frontend/qt_sdl/LAN.cpp b/src/net/LAN.cpp similarity index 99% rename from src/frontend/qt_sdl/LAN.cpp rename to src/net/LAN.cpp index 9b4e5bbd..0da6307b 100644 --- a/src/frontend/qt_sdl/LAN.cpp +++ b/src/net/LAN.cpp @@ -91,7 +91,7 @@ const int kLANPort = 7064; socket_t DiscoverySocket; u32 DiscoveryLastTick; std::map DiscoveryList; -QMutex DiscoveryMutex; +Platform::Mutex* DiscoveryMutex = nullptr; bool Active; bool IsHost; @@ -120,6 +120,8 @@ u32 FrameCount; bool Init() { + DiscoveryMutex = Platform::Mutex_Create(); + DiscoverySocket = INVALID_SOCKET; DiscoveryLastTick = 0; @@ -183,6 +185,9 @@ void DeInit() Host = nullptr; enet_deinitialize(); + + Platform::Mutex_Free(DiscoveryMutex); + DiscoveryMutex = nullptr; } @@ -413,7 +418,7 @@ void ProcessDiscovery() } else { - DiscoveryMutex.lock(); + Platform::Mutex_Lock(DiscoveryMutex); // listen for LAN sessions @@ -467,7 +472,7 @@ void ProcessDiscovery() DiscoveryList.erase(key); } - DiscoveryMutex.unlock(); + Platform::Mutex_Unlock(DiscoveryMutex); // update the list in the connect dialog if needed diff --git a/src/frontend/qt_sdl/LAN.h b/src/net/LAN.h similarity index 94% rename from src/frontend/qt_sdl/LAN.h rename to src/net/LAN.h index 5a732fed..eae8f06d 100644 --- a/src/frontend/qt_sdl/LAN.h +++ b/src/net/LAN.h @@ -21,9 +21,9 @@ #include #include -#include #include "types.h" +#include "Platform.h" namespace LAN { @@ -61,7 +61,7 @@ struct DiscoveryData extern bool Active; extern std::map DiscoveryList; -extern QMutex DiscoveryMutex; // TODO: turn into Platform::Mutex or rework this to be nicer +extern Platform::Mutex* DiscoveryMutex; // TODO: turn into Platform::Mutex or rework this to be nicer extern Player Players[16]; extern u32 PlayerPing[16]; diff --git a/src/frontend/qt_sdl/Netplay.cpp b/src/net/Netplay.cpp similarity index 99% rename from src/frontend/qt_sdl/Netplay.cpp rename to src/net/Netplay.cpp index b1bdea84..68caa43d 100644 --- a/src/frontend/qt_sdl/Netplay.cpp +++ b/src/net/Netplay.cpp @@ -23,9 +23,6 @@ #include -#include -#include - #include "NDS.h" #include "NDSCart.h" #include "main.h" @@ -33,14 +30,10 @@ #include "Netplay.h" //#include "Input.h" //#include "ROMManager.h" -#include "Config.h" +//#include "Config.h" #include "Savestate.h" #include "Platform.h" -#include "ui_NetplayStartHostDialog.h" -#include "ui_NetplayStartClientDialog.h" -#include "ui_NetplayDialog.h" - using namespace melonDS; namespace Netplay diff --git a/src/frontend/qt_sdl/Netplay.h b/src/net/Netplay.h similarity index 100% rename from src/frontend/qt_sdl/Netplay.h rename to src/net/Netplay.h