Compare commits

..

1 Commits

Author SHA1 Message Date
Marcos Slomp
75499a4944 public API to query symbols 2026-07-01 12:40:07 -07:00
10 changed files with 45 additions and 104 deletions

View File

@@ -185,7 +185,7 @@ if(NOT NO_FILESELECTOR AND NOT EMSCRIPTEN)
CPMAddPackage(
NAME nfd
GITHUB_REPOSITORY btzy/nativefiledialog-extended
GIT_TAG 3cd252a8f7ca32419b1ca235c2990ba6a0ecba7c
GIT_TAG v1.3.0
EXCLUDE_FROM_ALL TRUE
OPTIONS
"NFD_PORTAL ${NFD_PORTAL}"
@@ -218,7 +218,7 @@ CPMAddPackage(
CPMAddPackage(
NAME md4c
GITHUB_REPOSITORY mity/md4c
GIT_TAG 65c6c9d72cebd9a731aaa5597414ce04d9ea5de3
GIT_TAG 755ce49acdc7cd682d4502b4796db5ed6a1230fb
OPTIONS
"BUILD_SHARED_LIBS OFF"
EXCLUDE_FROM_ALL TRUE
@@ -257,7 +257,7 @@ if(NOT EMSCRIPTEN)
CPMAddPackage(
NAME usearch
GITHUB_REPOSITORY unum-cloud/usearch
GIT_TAG v2.25.3
GIT_TAG v2.25.2
EXCLUDE_FROM_ALL TRUE
)
@@ -290,7 +290,7 @@ if(NOT EMSCRIPTEN)
CPMAddPackage(
NAME libcurl
GITHUB_REPOSITORY curl/curl
GIT_TAG curl-8_21_0
GIT_TAG curl-8_20_0
OPTIONS
"BUILD_STATIC_LIBS ON"
"BUILD_SHARED_LIBS OFF"

View File

@@ -26,9 +26,6 @@ public:
float GetDpiScale();
size_t HandleType();
void* Handle();
private:
WindowPosition m_winPos;
int m_w, m_h;

View File

@@ -388,13 +388,3 @@ float Backend::GetDpiScale()
{
return EM_ASM_DOUBLE( { return window.devicePixelRatio; } );
}
size_t Backend::HandleType()
{
return 0;
}
void* Backend::Handle()
{
return nullptr;
}

View File

@@ -15,21 +15,10 @@
#include "RunQueue.hpp"
#ifdef __APPLE__
# include <objc/objc.h>
# include <objc/message.h>
# include <objc/runtime.h>
# include "icon.hpp"
#endif
#if !defined TRACY_NO_FILESELECTOR
# if defined WIN32
# define GLFW_EXPOSE_NATIVE_WIN32
# elif defined __APPLE__
# define GLFW_EXPOSE_NATIVE_COCOA
# else
# define GLFW_EXPOSE_NATIVE_X11
# endif
# include <nfd_glfw3.h>
#include <objc/objc.h>
#include <objc/message.h>
#include <objc/runtime.h>
#include "icon.hpp"
#endif
@@ -294,25 +283,3 @@ float Backend::GetDpiScale()
return 1;
#endif
}
size_t Backend::HandleType()
{
#ifdef TRACY_NO_FILESELECTOR
return 0;
#else
nfdwindowhandle_t handle = {};
NFD_GetNativeWindowFromGLFWWindow( s_window, &handle );
return handle.type;
#endif
}
void* Backend::Handle()
{
#ifdef TRACY_NO_FILESELECTOR
return nullptr;
#else
nfdwindowhandle_t handle = {};
NFD_GetNativeWindowFromGLFWWindow( s_window, &handle );
return handle.handle;
#endif
}

View File

@@ -19,10 +19,6 @@
#include <wayland-cursor.h>
#include <wayland-egl.h>
#ifndef TRACY_NO_FILESELECTOR
# include <nfd.h>
#endif
#include "wayland-xdg-activation-client-protocol.h"
#include "wayland-xdg-decoration-client-protocol.h"
#include "wayland-xdg-shell-client-protocol.h"
@@ -1138,10 +1134,6 @@ void Backend::Show()
void Backend::Run()
{
#ifndef TRACY_NO_FILESELECTOR
NFD_SetWaylandDisplay( s_dpy );
#endif
timespec zero = {};
while( s_running && wl_display_dispatch_timeout( s_dpy, &zero ) != -1 )
{
@@ -1380,21 +1372,3 @@ float Backend::GetDpiScale()
{
return s_maxScale / 120.f;
}
size_t Backend::HandleType()
{
#ifdef TRACY_NO_FILESELECTOR
return 0;
#else
return NFD_WINDOW_HANDLE_TYPE_WAYLAND;
#endif
}
void* Backend::Handle()
{
#ifdef TRACY_NO_FILESELECTOR
return nullptr;
#else
return s_surf;
#endif
}

View File

@@ -361,7 +361,7 @@ int main( int argc, char** argv )
view.store( std::make_shared<tracy::View>( RunOnMainThread, connectTo, port, SetWindowTitleCallback, SetupScaleCallback, AttentionCallback, s_achievements ), std::memory_order_release );
}
tracy::Fileselector::Init( backend.HandleType(), backend.Handle() );
tracy::Fileselector::Init();
s_isElevated = IsElevated();
backend.Show();

View File

@@ -13,18 +13,10 @@ namespace tracy::Fileselector
static bool s_hasFailed = false;
#if !defined TRACY_NO_FILESELECTOR && !defined __EMSCRIPTEN__
static nfdwindowhandle_t s_windowHandle;
#endif
void Init( size_t type, void* handle )
void Init()
{
#if !defined TRACY_NO_FILESELECTOR && !defined __EMSCRIPTEN__
NFD_Init();
s_windowHandle = {
.type = type,
.handle = handle
};
#endif
}
@@ -85,12 +77,7 @@ static bool OpenFileImpl( const char* ext, const char* desc, const std::function
# else
nfdu8filteritem_t filter = { desc, ext };
nfdu8char_t* fn;
const nfdopendialogu8args_t args = {
.filterList = &filter,
.filterCount = 1,
.parentWindow = s_windowHandle,
};
const auto res = NFD_OpenDialogU8_With( &fn, &args );
const auto res = NFD_OpenDialogU8( &fn, &filter, 1, nullptr );
if( res == NFD_OKAY )
{
callback( (const char*)fn );
@@ -111,12 +98,7 @@ static bool SaveFileImpl( const char* ext, const char* desc, const std::function
#if !defined TRACY_NO_FILESELECTOR && !defined __EMSCRIPTEN__
nfdu8filteritem_t filter = { desc, ext };
nfdu8char_t* fn;
const nfdsavedialogu8args_t args = {
.filterList = &filter,
.filterCount = 1,
.parentWindow = s_windowHandle,
};
const auto res = NFD_SaveDialogU8_With( &fn, &args );
const auto res = NFD_SaveDialogU8( &fn, &filter, 1, nullptr, nullptr );
if( res == NFD_OKAY )
{
callback( (const char*)fn );

View File

@@ -1,13 +1,12 @@
#ifndef __TRACYFILESELECTOR_HPP__
#define __TRACYFILESELECTOR_HPP__
#include <stddef.h>
#include <functional>
namespace tracy::Fileselector
{
void Init( size_t type, void* handle );
void Init();
void Shutdown();
bool HasFailed();

View File

@@ -10,6 +10,9 @@
#include "../common/TracyAlloc.hpp"
#include "../common/TracySystem.hpp"
#include <shared_mutex>
#include <string>
#include <unordered_map>
#ifdef TRACY_HAS_CALLSTACK
@@ -1952,6 +1955,33 @@ CallstackEntryData DecodeCallstackPtr( uint64_t ptr )
#endif
TRACY_API const char* QuerySymbolName(void* ptr)
{
#ifndef TRACY_HAS_CALLSTACK
return "[unavailable]";
#else
uint64_t address = uint64_t(ptr);
static std::unordered_map<uint64_t, std::string> s_cache;
static std::shared_mutex s_mutex;
{
std::shared_lock lock(s_mutex);
auto it = s_cache.find(address);
if (it != s_cache.end()) return it->second.c_str();
}
std::unique_lock lock(s_mutex);
auto [it, inserted] = s_cache.try_emplace(address);
if (inserted)
{
const char* symbol = DecodeCallstackPtrFast(address);
it->second = symbol;
}
return it->second.c_str();
#endif
}
}
#endif

View File

@@ -26,6 +26,7 @@ namespace tracy
{
static constexpr bool has_callstack() { return false; }
static tracy_force_inline void* Callstack( int32_t /*depth*/ ) { return nullptr; }
TRACY_API const char* QuerySymbolName(void* address);
}
#else
@@ -87,6 +88,7 @@ void InitCallstack();
void InitCallstackCritical();
void EndCallstack();
const char* GetKernelModulePath( uint64_t addr );
TRACY_API const char* QuerySymbolName(void* address);
#ifdef __linux__
void InitExternalImageCache( pid_t pid );