接口优化

This commit is contained in:
2026-08-13 09:16:54 +08:00
parent b964dcdcd9
commit 9e598a0318
12 changed files with 182 additions and 229 deletions
@@ -104,7 +104,8 @@ TEST(dynamic_renderable_lifecycle_test,
scene.render();
gate->wait_until_arrived();
std::atomic<bool> callback_called{};
auto mutation = scene.attach_renderable(attached, {}, [&](std::exception_ptr exception) {
auto mutation = scene.attach_renderable(attached);
mutation.then([&](std::exception_ptr exception) {
EXPECT_FALSE(exception);
callback_called.store(true, std::memory_order_release);
});
@@ -154,13 +155,13 @@ TEST(dynamic_renderable_lifecycle_test,
auto child = std::make_shared<Counting_Renderable>(scene);
scene.attach_renderable(first_parent);
scene.attach_renderable(second_parent);
scene.attach_renderable(child, {
auto attach = scene.attach_renderable(child, {
.dependency_parents = {first_parent}
});
scene.wait_for_mutations();
attach.wait();
scene.render();
first_gate->wait_until_arrived();
auto reparent = scene.set_dependency_parent(child, second_parent);
auto reparent = scene.set_parent(Scene_Base::Relationship::dependency, child, second_parent);
EXPECT_FALSE(reparent.ready());
EXPECT_EQ(child->prepare_count.load(std::memory_order_acquire), 0);
first_gate->open();
@@ -252,7 +253,7 @@ TEST(dynamic_renderable_lifecycle_test,
scene.render();
scene.wait_for_render();
scene.wait_for_mutations();
EXPECT_TRUE(wait_until([&] { return scene.renderable_count() == 0; }));
EXPECT_EQ(renderable->prepare_count.load(std::memory_order_acquire), 1);
EXPECT_EQ(scene.renderable_count(), 0u);
scene.render();
@@ -428,11 +429,11 @@ TEST(dynamic_renderable_lifecycle_test,
.display_parents = {parent},
.dependency_parents = {parent}
});
scene.set_display_parent(child, alternate_parent);
scene.set_dependency_parent(child, alternate_parent);
scene.set_parent(Scene_Base::Relationship::display, child, alternate_parent);
scene.set_parent(Scene_Base::Relationship::dependency, child, alternate_parent);
child->invalidate_graph();
scene.set_display_parent(child, parent);
scene.set_dependency_parent(child, parent);
scene.set_parent(Scene_Base::Relationship::display, child, parent);
scene.set_parent(Scene_Base::Relationship::dependency, child, parent);
scene.detach_renderable(child);
} catch (...) {
failures.fetch_add(1, std::memory_order_relaxed);
@@ -444,7 +445,8 @@ TEST(dynamic_renderable_lifecycle_test,
controller.join();
controls_done.store(true, std::memory_order_release);
renderer.join();
scene.wait_for_mutations();
scene.render();
scene.wait_for_render();
EXPECT_EQ(failures.load(std::memory_order_acquire), 0);
EXPECT_EQ(violations.load(std::memory_order_acquire), 0);
EXPECT_EQ(scene.renderable_count(), 2u);