diff --git a/.gitignore b/.gitignore index 5465697..d76aac1 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ out/ bin/ lib/ build-apk/ +build-haiku/ cmake-build-*/ CMakeFiles/ CMakeCache.txt diff --git a/project/lib_projects/raknet/jni/RaknetSources/RakThread.cpp b/project/lib_projects/raknet/jni/RaknetSources/RakThread.cpp index 268ee3a..5b91ff3 100755 --- a/project/lib_projects/raknet/jni/RaknetSources/RakThread.cpp +++ b/project/lib_projects/raknet/jni/RaknetSources/RakThread.cpp @@ -17,8 +17,8 @@ using namespace RakNet; #endif - - +#elif defined(__HAIKU__) +#include #else #include #endif @@ -93,9 +93,10 @@ int RakThread::Create( void* start_address( void* ), void *arglist, int priority - - - +#elif defined(__HAIKU__) + thread_id threadHandle = spawn_thread((thread_func)start_address, "RakThread", priority, arglist); + int res = resume_thread(threadHandle); + return res == B_OK ? 0 : 1; #else pthread_t threadHandle; // Create thread linux diff --git a/project/lib_projects/raknet/jni/RaknetSources/SocketLayer.cpp b/project/lib_projects/raknet/jni/RaknetSources/SocketLayer.cpp index 4ed4aae..3731571 100755 --- a/project/lib_projects/raknet/jni/RaknetSources/SocketLayer.cpp +++ b/project/lib_projects/raknet/jni/RaknetSources/SocketLayer.cpp @@ -1665,7 +1665,7 @@ void GetMyIP_Win32( SystemAddress addresses[MAXIMUM_NUMBER_OF_INTERNAL_IDS] ) } } // #else -/* + void GetMyIP_Linux( SystemAddress addresses[MAXIMUM_NUMBER_OF_INTERNAL_IDS] ) { struct ifaddrs *ifaddr, *ifa; @@ -1716,7 +1716,7 @@ void GetMyIP_Linux( SystemAddress addresses[MAXIMUM_NUMBER_OF_INTERNAL_IDS] ) freeifaddrs(ifaddr); } -*/ + @@ -1724,10 +1724,10 @@ void SocketLayer::GetMyIP( SystemAddress addresses[MAXIMUM_NUMBER_OF_INTERNAL_ID { - - #if defined(_WIN32) GetMyIP_Win32(addresses); +#elif defined(__HAIKU__) + GetMyIP_Linux(addresses); #else // GetMyIP_Linux(addresses); GetMyIP_Win32(addresses); diff --git a/src/raknet/RakPeer.cpp b/src/raknet/RakPeer.cpp index a24a2b5..5e6de82 100755 --- a/src/raknet/RakPeer.cpp +++ b/src/raknet/RakPeer.cpp @@ -351,7 +351,8 @@ StartupResult RakPeer::Startup( unsigned short maxConnections, SocketDescriptor #if defined(_WIN32) threadPriority=0; - +#elif defined(__HAIKU__) + threadPriority=40; #else threadPriority=1000; #endif diff --git a/src/raknet/RakThread.cpp b/src/raknet/RakThread.cpp index 268ee3a..184bea7 100755 --- a/src/raknet/RakThread.cpp +++ b/src/raknet/RakThread.cpp @@ -19,6 +19,8 @@ using namespace RakNet; +#elif defined(__HAIKU__) +#include #else #include #endif @@ -92,10 +94,10 @@ int RakThread::Create( void* start_address( void* ), void *arglist, int priority - - - - +#elif defined(__HAIKU__) + thread_id threadHandle = spawn_thread((thread_func)start_address, "RakThread", priority, arglist); + int res = resume_thread(threadHandle); + return res == B_OK ? 0 : 1; #else pthread_t threadHandle; // Create thread linux diff --git a/src/raknet/SocketLayer.cpp b/src/raknet/SocketLayer.cpp index 55d5327..aab591b 100755 --- a/src/raknet/SocketLayer.cpp +++ b/src/raknet/SocketLayer.cpp @@ -1665,7 +1665,7 @@ void GetMyIP_Win32( SystemAddress addresses[MAXIMUM_NUMBER_OF_INTERNAL_IDS] ) } } // #else -/* + void GetMyIP_Linux( SystemAddress addresses[MAXIMUM_NUMBER_OF_INTERNAL_IDS] ) { struct ifaddrs *ifaddr, *ifa; @@ -1716,7 +1716,7 @@ void GetMyIP_Linux( SystemAddress addresses[MAXIMUM_NUMBER_OF_INTERNAL_IDS] ) freeifaddrs(ifaddr); } -*/ + @@ -1728,6 +1728,8 @@ void SocketLayer::GetMyIP( SystemAddress addresses[MAXIMUM_NUMBER_OF_INTERNAL_ID #if defined(_WIN32) GetMyIP_Win32(addresses); +#elif defined(__HAIKU__) + GetMyIP_Linux(addresses); #else // GetMyIP_Linux(addresses); GetMyIP_Win32(addresses);