Donner SVG Editor & Engine
SVG-native editor and embeddable SVG2 + CSS3 engine in C++20, with GPU (WebGPU) and compact CPU renderers, built for correctness, security, and performance.
Loading...
Searching...
No Matches
GeodeCallbackState.h File Reference

Lifetime helpers for asynchronous WebGPU callback userdata. More...

#include <memory>
#include <utility>
Include dependency graph for GeodeCallbackState.h:

Namespaces

namespace  donner
 Top-level Donner namespace, which is split into different sub-namespaces such as donner::svg and donner::css.

Functions

template<typename State>
void * donner::geode::retainWgpuCallbackState (const std::shared_ptr< State > &state)
 Retains callback state independently of the initiating stack frame.
template<typename State>
std::shared_ptr< State > donner::geode::takeWgpuCallbackState (void *userdata)
 Transfers ownership retained by retainWgpuCallbackState into the callback.

Detailed Description

Lifetime helpers for asynchronous WebGPU callback userdata.

Function Documentation

◆ retainWgpuCallbackState()

template<typename State>
void * donner::geode::retainWgpuCallbackState ( const std::shared_ptr< State > & state)

Retains callback state independently of the initiating stack frame.

WebGPU callbacks may run after a bounded wait returns. The callback owns the returned userdata until it calls takeWgpuCallbackState, so releasing the initiating frame cannot leave WebGPU with a dangling pointer.

Parameters
stateShared callback state to retain.
Returns
Opaque userdata owned by the eventual callback.

◆ takeWgpuCallbackState()

template<typename State>
std::shared_ptr< State > donner::geode::takeWgpuCallbackState ( void * userdata)

Transfers ownership retained by retainWgpuCallbackState into the callback.

Parameters
userdataOpaque userdata returned by retainWgpuCallbackState.
Returns
Shared callback state owned by the callback invocation.