mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-10 10:41:50 +00:00
Merge pull request #265 from nagisa/nagisa/manual-lifetime-for-c
Expose TRACY_MANUAL_LIFETIME APIs to C API clients
This commit is contained in:
commit
0b03d7b2ad
6
TracyC.h
6
TracyC.h
@ -101,6 +101,12 @@ struct ___tracy_c_zone_context
|
||||
// This struct, as visible to user, is immutable, so treat it as if const was declared here.
|
||||
typedef /*const*/ struct ___tracy_c_zone_context TracyCZoneCtx;
|
||||
|
||||
|
||||
#ifdef TRACY_MANUAL_LIFETIME
|
||||
TRACY_API void ___tracy_startup_profiler(void);
|
||||
TRACY_API void ___tracy_shutdown_profiler(void);
|
||||
#endif
|
||||
|
||||
TRACY_API uint64_t ___tracy_alloc_srcloc( uint32_t line, const char* source, size_t sourceSz, const char* function, size_t functionSz );
|
||||
TRACY_API uint64_t ___tracy_alloc_srcloc_name( uint32_t line, const char* source, size_t sourceSz, const char* function, size_t functionSz, const char* name, size_t nameSz );
|
||||
|
||||
|
@ -3602,6 +3602,18 @@ TRACY_API uint64_t ___tracy_alloc_srcloc_name( uint32_t line, const char* source
|
||||
return tracy::Profiler::AllocSourceLocation( line, source, sourceSz, function, functionSz, name, nameSz );
|
||||
}
|
||||
|
||||
# ifdef TRACY_MANUAL_LIFETIME
|
||||
TRACY_API void ___tracy_startup_profiler( void )
|
||||
{
|
||||
tracy::StartupProfiler();
|
||||
}
|
||||
|
||||
TRACY_API void ___tracy_shutdown_profiler( void )
|
||||
{
|
||||
tracy::ShutdownProfiler();
|
||||
}
|
||||
# endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -1793,7 +1793,8 @@ You can collect call stacks of zones and memory allocation events, as described
|
||||
Tracy C API exposes functions with the \texttt{\_\_\_tracy} prefix that may be used to write bindings to other programming languages. Most of the functions available are a counterpart to macros described in section~\ref{capi}. Some functions do not have macro equivalents and are dedicated expressly for binding implementation purposes. This includes the following:
|
||||
|
||||
\begin{itemize}
|
||||
\item \texttt{\_\_\_tracy\_init\_thread(void)}
|
||||
\item \texttt{\_\_\_tracy\_startup\_profiler(void)}
|
||||
\item \texttt{\_\_\_tracy\_shutdown\_profiler(void)}
|
||||
\item \texttt{\_\_\_tracy\_alloc\_srcloc(uint32\_t line, const char* source, size\_t sourceSz, const char* function, size\_t functionSz)}
|
||||
\item \texttt{\_\_\_tracy\_alloc\_srcloc\_name(uint32\_t line, const char* source, size\_t sourceSz, const char* function, size\_t functionSz, const char* name, size\_t nameSz)}
|
||||
\end{itemize}
|
||||
@ -1809,11 +1810,6 @@ location}. As these functions do not require for the provided string data to be
|
||||
return, calling code is free to deallocate them at any time afterwards. This way the string
|
||||
lifetime requirements described in section~\ref{textstrings} are relaxed.
|
||||
|
||||
Before the \texttt{\_\_\_tracy\_alloc\_*} functions are called on a non-main thread for the first
|
||||
time, care should be taken to ensure that \texttt{\_\_\_tracy\_init\_thread} has been called first.
|
||||
The \texttt{\_\_\_tracy\_init\_thread} function initializes per-thread structures Tracy uses and
|
||||
can be safely called multiple times.
|
||||
|
||||
The \texttt{uint64\_t} return value from allocation functions must be passed to one of the zone
|
||||
begin functions:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user