Linux: Load pthread_setname_np dynamically

This commit is contained in:
UnknownShadow200 2025-02-23 07:01:22 +11:00
parent 932ec01ea1
commit 4b0ec476e3
2 changed files with 17 additions and 4 deletions

View File

@ -136,7 +136,7 @@ static void CreateDevice(void) {
// So for the sake of simplicity and since only a few old GPUs don't support feature level 10 anyways // So for the sake of simplicity and since only a few old GPUs don't support feature level 10 anyways
// https://walbourn.github.io/direct3d-feature-levels/ // https://walbourn.github.io/direct3d-feature-levels/
// https://github.com/MonoGame/MonoGame/issues/5789 // https://github.com/MonoGame/MonoGame/issues/5789
// I decided to just not support GPUs that do not support at least feature level 10 // Just don't support GPUs that do not support at least feature level 10
if (fl < D3D_FEATURE_LEVEL_10_0) if (fl < D3D_FEATURE_LEVEL_10_0)
Logger_FailToStart("Your GPU is too old to support the Direct3D11 version.\nTry using the Direct3D9 version instead.\n"); Logger_FailToStart("Your GPU is too old to support the Direct3D11 version.\nTry using the Direct3D9 version instead.\n");

View File

@ -72,6 +72,13 @@ cc_bool Platform_ReadonlyFilesystem;
#include <os2.h> #include <os2.h>
#endif #endif
#if defined MAC_OS_X_VERSION_MIN_REQUIRED && (MAC_OS_X_VERSION_MIN_REQUIRED < 1040)
/* Really old mac OS versions don't have the dlopen/dlsym API */
#define USE_NS_DYNLOAD_API
#else
#include <dlfcn.h>
#endif
/*########################################################################################################################* /*########################################################################################################################*
*---------------------------------------------------------Memory----------------------------------------------------------* *---------------------------------------------------------Memory----------------------------------------------------------*
@ -430,7 +437,14 @@ void Thread_Run(void** handle, Thread_StartFunc func, int stackSize, const char*
if (res) Process_Abort2(res, "Creating thread"); if (res) Process_Abort2(res, "Creating thread");
pthread_attr_destroy(&attrs); pthread_attr_destroy(&attrs);
#if defined CC_BUILD_LINUX || defined CC_BUILD_HAIKU #if defined CC_BUILD_LINUX
static int (*FP_pthread_setname_np)(pthread_t thread, const char* name);
/* Not available on old libc versions, so load it dynamically */
if (!FP_pthread_setname_np) {
FP_pthread_setname_np = dlsym(RTLD_NEXT, "pthread_setname_np");
}
if (FP_pthread_setname_np) FP_pthread_setname_np(*ptr, name);
#elif defined CC_BUILD_HAIKU
extern int pthread_setname_np(pthread_t thread, const char* name); extern int pthread_setname_np(pthread_t thread, const char* name);
pthread_setname_np(*ptr, name); pthread_setname_np(*ptr, name);
#elif defined CC_BUILD_FREEBSD || defined CC_BUILD_OPENBSD #elif defined CC_BUILD_FREEBSD || defined CC_BUILD_OPENBSD
@ -1232,7 +1246,7 @@ cc_result Updater_SetNewBuildTime(cc_uint64 timestamp) {
/*########################################################################################################################* /*########################################################################################################################*
*-------------------------------------------------------Dynamic lib-------------------------------------------------------* *-------------------------------------------------------Dynamic lib-------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
#if defined MAC_OS_X_VERSION_MIN_REQUIRED && (MAC_OS_X_VERSION_MIN_REQUIRED < 1040) #if USE_NS_DYNLOAD_API
/* Really old mac OS versions don't have the dlopen/dlsym API */ /* Really old mac OS versions don't have the dlopen/dlsym API */
const cc_string DynamicLib_Ext = String_FromConst(".dylib"); const cc_string DynamicLib_Ext = String_FromConst(".dylib");
@ -1269,7 +1283,6 @@ cc_bool DynamicLib_DescribeError(cc_string* dst) {
return true; return true;
} }
#else #else
#include <dlfcn.h>
/* TODO: Should we use .bundle instead of .dylib? */ /* TODO: Should we use .bundle instead of .dylib? */
#ifdef CC_BUILD_DARWIN #ifdef CC_BUILD_DARWIN