From 275b578c1bf1ff3b4014eddf27924c458cfddb94 Mon Sep 17 00:00:00 2001 From: Jonathan Hargreaves Date: Thu, 1 Oct 2026 22:51:43 +0100 Subject: [PATCH] Improve Apple platform details - Include OS version - Add CPU details - Correct username --- public/client/TracyProfiler.cpp | 18 ++++++++++++++++-- public/common/TracySystem.cpp | 10 ++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/public/client/TracyProfiler.cpp b/public/client/TracyProfiler.cpp index fe241ad4..2ca4f6ae 100644 --- a/public/client/TracyProfiler.cpp +++ b/public/client/TracyProfiler.cpp @@ -556,10 +556,15 @@ static const char* GetHostInfo() ptr += sprintf( ptr, "OS: Linux %s\n", utsName.release ); # endif #elif defined __APPLE__ + char osVer[64] = {}; + size_t osVerSz = sizeof( osVer ) - 1; + const bool haveVer = sysctlbyname( "kern.osproductversion", osVer, &osVerSz, nullptr, 0 ) == 0; # if TARGET_OS_IPHONE == 1 - ptr += sprintf( ptr, "OS: Darwin (iOS)\n" ); + if( haveVer ) ptr += sprintf( ptr, "OS: iOS %s\n", osVer ); + else ptr += sprintf( ptr, "OS: iOS\n" ); # elif TARGET_OS_MAC == 1 - ptr += sprintf( ptr, "OS: Darwin (OSX)\n" ); + if( haveVer ) ptr += sprintf( ptr, "OS: macOS %s\n", osVer ); + else ptr += sprintf( ptr, "OS: macOS\n" ); # else ptr += sprintf( ptr, "OS: Darwin (unknown)\n" ); # endif @@ -689,6 +694,15 @@ static const char* GetHostInfo() ptr += sprintf( ptr, "Device: %s\n", DecodeIosDevice( str ) ); tracy_free( str ); } +#elif defined __APPLE__ + { + size_t sz; + sysctlbyname( "machdep.cpu.brand_string", nullptr, &sz, nullptr, 0 ); + auto str = (char*)tracy_malloc( sz ); + sysctlbyname( "machdep.cpu.brand_string", str, &sz, nullptr, 0 ); + ptr += sprintf( ptr, "CPU: %s\n", str ); + tracy_free( str ); + } #else ptr += sprintf( ptr, "CPU: unknown\n" ); #endif diff --git a/public/common/TracySystem.cpp b/public/common/TracySystem.cpp index 87b1b0c7..143da227 100644 --- a/public/common/TracySystem.cpp +++ b/public/common/TracySystem.cpp @@ -362,6 +362,16 @@ TRACY_API const char* GetUserLogin() const auto user = getlogin(); if( user ) return user; return "(?)"; +#elif defined __APPLE__ + static char buf[4 * 1024]; + struct passwd pwd; + struct passwd* res; + if( getpwuid_r( getuid(), &pwd, buf, sizeof( buf ), &res ) == 0 && res == &pwd && pwd.pw_name ) + { + return pwd.pw_name; + } + getlogin_r( buf, sizeof( buf ) ); + return buf; #else static char user[1024] = {}; getlogin_r( user, sizeof( user ) );