This commit is contained in:
2026-08-27 17:35:12 +08:00
parent f0f358af24
commit bc0bb24aea
8 changed files with 243 additions and 88 deletions
@@ -328,6 +328,10 @@ void Render_Scene_2D::Private::ensure_frame_taskflow(Object* object) {
template <Attached Object>
std::expected<void, Render_Scene_2D::Render_Result>
Render_Scene_2D::Private::render(Object* object, Frame_2D* frame) {
if (!frame)
throw std::invalid_argument(
"Render_Scene_2D requires a non-null external frame");
frame->mark(Frame_Trace_Marker::scene_render_entered);
Frame_Callback callback;
Frame_Callback retired_callback;
{
@@ -353,7 +357,9 @@ Render_Scene_2D::Private::render(Object* object, Frame_2D* frame) {
* no Taskflow is running. The completion callback only publishes
* results; it must not modify a graph that is still executing.
*/
frame->mark(Frame_Trace_Marker::scene_advance_started);
double_buffer::detail::Internal_Access::advance(object);
frame->mark(Frame_Trace_Marker::scene_advance_finished);
const Prop& prop = double_buffer::detail::Internal_Access::current_prop_layer<Render_Scene_2D::Base_Tag>(object);
if (!prop.view_active) {
release_admission();