错误处理机制纠正

This commit is contained in:
2026-08-16 03:34:17 +08:00
parent 893be8d2c6
commit b48a70515f
91 changed files with 1983 additions and 1516 deletions
+2 -4
View File
@@ -199,11 +199,9 @@ if (RENDERIVE_BUILD_TESTS)
continue()
endif ()
file(RELATIVE_PATH Renderive_Web_test_name "${Renderive_Web_test_dir}" "${Renderive_Web_test_source}")
string(MD5 Renderive_Web_test_hash "${Renderive_Web_test_name}")
string(SUBSTRING "${Renderive_Web_test_hash}" 0 8 Renderive_Web_test_hash)
get_filename_component(Renderive_Web_test_name "${Renderive_Web_test_source}" NAME_WE)
string(REGEX REPLACE "\\.[^.]+$" "" Renderive_Web_test_name "${Renderive_Web_test_name}")
string(MAKE_C_IDENTIFIER "${Renderive_Web_test_name}" Renderive_Web_test_name)
set(Renderive_Web_test_target "Renderive_Web_${Renderive_Web_test_name}_${Renderive_Web_test_hash}")
set(Renderive_Web_test_target "Renderive_Web_${Renderive_Web_test_name}")
add_executable("${Renderive_Web_test_target}" "${Renderive_Web_test_source}")
target_link_libraries("${Renderive_Web_test_target}" PRIVATE Renderive_Web Adminive::Nlohmann GTest::gtest_main)
renderive_stage_render_3D_runtime("${Renderive_Web_test_target}")
@@ -90,8 +90,9 @@ struct Type_Descriptor<renderive::web::Gallery_Session_Control<Scene_Type>> {
[](const T& value) { return value.scene_.max_render_fps() > 0.0; },
[dirty](T& value, bool enabled) {
if (enabled) {
if (value.scene_.max_render_fps() <= 0.0)
value.scene_.set_max_render_fps(30.0);
if (value.scene_.max_render_fps() <= 0.0 &&
value.scene_.set_max_render_fps(30.0) != renderive::Plot_Control_Error::none)
return;
} else {
value.scene_.clear_max_render_fps();
}
@@ -104,8 +105,9 @@ struct Type_Descriptor<renderive::web::Gallery_Session_Control<Scene_Type>> {
return fps > 0.0 ? fps : 30.0;
},
[dirty](T& value, double fps) {
if (value.scene_.max_render_fps() > 0.0)
value.scene_.set_max_render_fps(fps);
if (value.scene_.max_render_fps() > 0.0 &&
value.scene_.set_max_render_fps(fps) != renderive::Plot_Control_Error::none)
return;
dirty(value);
}),
callback_property<T, renderive::web::Gallery_Feedback_Policy>(
+1 -1
View File
@@ -64,7 +64,7 @@ struct Web_Plot_Session::Impl {
Impl() {
plot.init();
plot.set_background_color({3, 7, 18, 255});
plot.set_max_render_fps(30.0);
static_cast<void>(plot.set_max_render_fps(30.0));
plot.set_viewport_size({960, 600});
const auto root = plot.root_renderable();
constexpr Color axis_color{93, 116, 151, 255};
+16 -6
View File
@@ -190,7 +190,7 @@ public:
register_controls();
set_performance_plot_name(plot_, case_id_ + "/" + gallery_enum_id(frame_mode_));
if (frame_mode_ == Gallery_Frame_Mode::Low_Latency)
plot_.set_max_render_fps(30.0);
static_cast<void>(plot_.set_max_render_fps(30.0));
plot_.activate_view();
update_model();
(void)plot_.render_frame(true);
@@ -368,8 +368,13 @@ public:
const auto state = plot_.render_scene().capture_state();
if (state.enabled())
return "A performance capture session is already active";
const auto session_id = plot_.render_scene().capture_next_frame();
last_action_result_ = "capture session=" + std::to_string(session_id);
const auto capture = plot_.render_scene().capture_next_frame();
if (!capture) {
if (capture.error == Capture_Error::session_active)
return "A performance capture session is already active";
throw std::logic_error("validated capture request rejected");
}
last_action_result_ = "capture session=" + std::to_string(capture.session_id);
return "Capture next render frame requested";
}
if (request.id == "capture_frames") {
@@ -381,8 +386,13 @@ public:
const auto state = plot_.render_scene().capture_state();
if (state.enabled())
return "A performance capture session is already active";
const auto session_id = plot_.render_scene().capture_frames(count);
last_action_result_ = "capture session=" + std::to_string(session_id) +
const auto capture = plot_.render_scene().capture_frames(count);
if (!capture) {
if (capture.error == Capture_Error::session_active)
return "A performance capture session is already active";
throw std::logic_error("validated capture request rejected");
}
last_action_result_ = "capture session=" + std::to_string(capture.session_id) +
", frames=" + std::to_string(count);
return "Consecutive render frame capture requested";
}
@@ -914,7 +924,7 @@ private:
plot_.clear_consumer_feedback();
return;
}
plot_.set_consumer_feedback({interval_ns});
static_cast<void>(plot_.set_consumer_feedback({interval_ns}));
}
void record_performance(std::chrono::steady_clock::time_point started, bool rendered) {
const auto finished = std::chrono::steady_clock::now();
+14 -4
View File
@@ -340,9 +340,14 @@ public:
auto& scene = scene_.render_scene();
if (scene.capture_state().enabled())
return "A performance capture session is already active";
const auto session_id = scene.capture_next_frame();
const auto capture = scene.capture_next_frame();
if (!capture) {
if (capture.error == Capture_Error::session_active)
return "A performance capture session is already active";
throw std::logic_error("validated capture request rejected");
}
last_action_result_ =
"capture session=" + std::to_string(session_id);
"capture session=" + std::to_string(capture.session_id);
return "Next 3D frame capture requested";
}
if (request.id == "capture_frames") {
@@ -356,9 +361,14 @@ public:
auto& scene = scene_.render_scene();
if (scene.capture_state().enabled())
return "A performance capture session is already active";
const auto session_id = scene.capture_frames(count);
const auto capture = scene.capture_frames(count);
if (!capture) {
if (capture.error == Capture_Error::session_active)
return "A performance capture session is already active";
throw std::logic_error("validated capture request rejected");
}
last_action_result_ = "capture session=" +
std::to_string(session_id) +
std::to_string(capture.session_id) +
" frames=" + std::to_string(count);
return "Consecutive 3D frame capture requested";
}