117#ifndef ULTRALIGHT_CAPI_RENDERER_H
118#define ULTRALIGHT_CAPI_RENDERER_H
222 double target_timestamp);
242 double refresh_rate);
276 bool uses_custom_clock);
430 unsigned short port);
451 unsigned int axis_count,
unsigned int button_count);
548#if UL_HAS(RENDER_TRACE)
588#if UL_HAS(GC_LISTENER)
701 unsigned long long bytes_reclaimed);
void(*) ULGCRequestGCCallback(void *user_data, ULRenderer caller, ULGCInfo info, ULCodeDropMode code)
Called when the engine wants to run a collection on your thread.
Definition CAPI_Renderer.h:662
ULRecycleMode
Controls how aggressively ulRecycle() reclaims memory.
Definition CAPI_Renderer.h:362
@ kRecycleMode_Lightweight
A quick recycle, cheap enough to call every frame (the same work the automatic recycler does).
Definition CAPI_Renderer.h:367
@ kRecycleMode_Full
A thorough recycle, for idle periods or transitions (eg, a loading screen).
Definition CAPI_Renderer.h:373
void ulRefreshDisplayWithTimestamp(ULRenderer renderer, unsigned int display_id, double target_timestamp)
Notify the renderer that a display has refreshed, and when the resulting frame will be shown.
void ulRenderOnly(ULRenderer renderer, ULView *view_array, unsigned int view_array_len)
Render a subset of Views to their respective surfaces and render targets.
ULColorScheme ulRendererGetSystemColorScheme(ULRenderer renderer)
Get the current system color scheme.
void(*) ULGCPressureChangedCallback(void *user_data, ULRenderer caller, ULGCInfo info)
Called when reclaimable memory rises past a threshold (see ULGCInfo).
Definition CAPI_Renderer.h:677
void ulUpdate(ULRenderer renderer)
Update timers and dispatch internal callbacks (JavaScript and network).
bool ulRendererIsRenderTraceActive(ULRenderer renderer)
Check if a render trace is currently being recorded.
ULCodeDropMode
How much compiled JavaScript code a collection discards.
Definition CAPI_Renderer.h:597
@ kCodeDropMode_Linked
Discard compiled code but keep parsed scripts (pages recompile but don't re-parse).
Definition CAPI_Renderer.h:606
@ kCodeDropMode_Nothing
Keep all compiled code.
Definition CAPI_Renderer.h:601
@ kCodeDropMode_All
Discard compiled code and parsed scripts (pages re-parse and recompile).
Definition CAPI_Renderer.h:611
ULRenderer ulCreateRenderer(ULConfig config)
Create the core renderer singleton for the library.
ULString ulGetMemoryUsage(ULRenderer renderer)
Get formatted memory usage statistics as a string.
void ulRendererSetSystemColorScheme(ULRenderer renderer, ULColorScheme scheme)
Set the system color scheme that Views report to pages via the prefers-color-scheme CSS media feature...
bool ulRendererBeginRenderTrace(ULRenderer renderer, const char *path, bool verbose)
Begin recording a render trace to the specified file path.
void ulRendererSetGCPressureChangedCallback(ULRenderer renderer, ULGCPressureChangedCallback callback, void *user_data, ULUserDataDestroyCallback destroy_user_data)
Set the callback for when reclaimable memory rises past a threshold (see ULGCPressureChangedCallback)...
void(*) ULGCCollectCompleteCallback(void *user_data, ULRenderer caller, ULGCInfo info, ULCodeDropMode code, double duration_ms, unsigned long long bytes_reclaimed)
Called after a collection on your thread finishes.
Definition CAPI_Renderer.h:698
void ulFireGamepadAxisEvent(ULRenderer renderer, ULGamepadAxisEvent evt)
Fire a gamepad axis event (to be called when an axis value is changed).
void ulRendererPostTask(ULRenderer renderer, ULRendererTaskCallback task, void *user_data, ULUserDataDestroyCallback destroy_user_data)
Post a task to run on the Renderer's thread during a future call to ulUpdate().
void ulRefreshDisplay(ULRenderer renderer, unsigned int display_id)
Notify the renderer that a display has refreshed.
void ulRendererSetDisplayRefreshRate(ULRenderer renderer, unsigned int display_id, double refresh_rate)
Declare a display's refresh rate.
void ulRecycleEx(ULRenderer renderer, ULRecycleMode mode, ULCodeDropMode code)
Reclaim memory, choosing how much compiled code to discard.
void ulRendererPostDelayedTask(ULRenderer renderer, double delay_ms, ULRendererTaskCallback task, void *user_data, ULUserDataDestroyCallback destroy_user_data)
Post a task to run on the Renderer's thread once a delay has elapsed.
void ulRendererCollectNow(ULRenderer renderer, ULCodeDropMode code, bool sync)
Collect the JavaScript heap now, leaving rendering and GPU caches intact.
void ulRecycle(ULRenderer renderer, ULRecycleMode mode)
Recycle internal caches and memory.
bool ulStartRemoteInspectorServer(ULRenderer renderer, const char *address, unsigned short port)
Start the remote inspector server.
void ulPurgeMemory(ULRenderer renderer)
Attempt to release as much memory as possible.
void ulDestroyRenderer(ULRenderer renderer)
Destroy a renderer previously created with ulCreateRenderer().
bool ulRendererGetDisplayUsesCustomClock(ULRenderer renderer, unsigned int display_id)
Get whether a display was declared to use a custom clock.
void ulSetGamepadDetails(ULRenderer renderer, unsigned int index, ULString id, unsigned int axis_count, unsigned int button_count)
Describe the details of a gamepad, to be used with ulFireGamepadEvent and related events below.
void ulLogMemoryUsage(ULRenderer renderer)
Print detailed memory usage statistics to the log.
void ulRendererSetGCCollectCompleteCallback(ULRenderer renderer, ULGCCollectCompleteCallback callback, void *user_data, ULUserDataDestroyCallback destroy_user_data)
Set the callback for when a collection on your thread finishes (see ULGCCollectCompleteCallback).
void(*) ULRendererTaskCallback(void *user_data)
Definition CAPI_Renderer.h:297
double ulRendererGetDisplayRefreshRate(ULRenderer renderer, unsigned int display_id)
Get the refresh rate declared for a display.
void ulFireGamepadButtonEvent(ULRenderer renderer, ULGamepadButtonEvent evt)
Fire a gamepad button event (to be called when a button value is changed).
void ulRender(ULRenderer renderer)
Render all active Views to their respective surfaces and render targets.
void ulRendererEndRenderTrace(ULRenderer renderer)
End the current render trace.
ULGCInfo ulRendererGetGCStatus(ULRenderer renderer)
Get a snapshot of the JavaScript heap's state.
void ulRendererSetDisplayUsesCustomClock(ULRenderer renderer, unsigned int display_id, bool uses_custom_clock)
Declare that a display's refresh timestamps are on your own timeline rather than the system clock (De...
void ulRendererSetGCRequestGCCallback(ULRenderer renderer, ULGCRequestGCCallback callback, void *user_data, ULUserDataDestroyCallback destroy_user_data)
Set the callback for when the engine wants to run a collection on your thread (see ULGCRequestGCCallb...
void ulFireGamepadEvent(ULRenderer renderer, ULGamepadEvent evt)
Fire a gamepad event (connection / disconnection).
Various defines and utility functions for the C API.
#define UL_DEPRECATED(msg)
Marks a C API function as deprecated; calls to it produce a compiler warning with msg.
Definition CAPI_Defines.h:52
struct C_GamepadButtonEvent * ULGamepadButtonEvent
Opaque handle to a GamepadButtonEvent object.
Definition CAPI_Defines.h:119
struct C_View * ULView
Opaque handle to a View object.
Definition CAPI_Defines.h:87
struct C_String * ULString
Opaque handle to a String object.
Definition CAPI_Defines.h:96
struct C_Config * ULConfig
Opaque handle to a Config object.
Definition CAPI_Defines.h:75
#define ULExport
Definition CAPI_Defines.h:42
struct C_GamepadAxisEvent * ULGamepadAxisEvent
Opaque handle to a GamepadAxisEvent object.
Definition CAPI_Defines.h:116
void(*) ULUserDataDestroyCallback(void *user_data)
Callback invoked exactly once when the library finally drops a piece of user data.
Definition CAPI_Defines.h:139
ULColorScheme
A page color scheme, as reported to pages via the prefers-color-scheme CSS media feature.
Definition CAPI_Defines.h:147
struct C_Renderer * ULRenderer
Opaque handle to a Renderer object.
Definition CAPI_Defines.h:78
struct C_GamepadEvent * ULGamepadEvent
Opaque handle to a GamepadEvent object.
Definition CAPI_Defines.h:113
A snapshot of the JavaScript heap's state.
Definition CAPI_Renderer.h:619
unsigned long long heap_bytes
The JavaScript heap's in-use size in bytes (it drops when a collection frees memory).
Definition CAPI_Renderer.h:633
double time_since_last_collect_ms
Milliseconds since the last full collection (0 before the first one).
Definition CAPI_Renderer.h:628
double pressure
How much reclaimable memory has built up, from 0 (none) to 1 (a collection is overdue).
Definition CAPI_Renderer.h:623