修复webserver死锁
This commit is contained in:
@@ -56,7 +56,7 @@ Json parse_object(std::string_view text) {
|
||||
return value.is_object() ? std::move(value) : Json::object();
|
||||
}
|
||||
Json actions() {
|
||||
return Json::array({
|
||||
Json result = Json::array({
|
||||
{{"id", "frame_strategy_low_latency"}, {"label", "Low latency"},
|
||||
{"api", "Renderable_Editor::replace_frame_control_strategy"},
|
||||
{"group", "Frame strategy"}, {"request_frame", true}},
|
||||
@@ -65,18 +65,25 @@ Json actions() {
|
||||
{"group", "Frame strategy"}, {"request_frame", true}},
|
||||
{{"id", "frame_strategy_playback"}, {"label", "Playback"},
|
||||
{"api", "Renderable_Editor::replace_frame_control_strategy"},
|
||||
{"group", "Frame strategy"}, {"request_frame", true}},
|
||||
{{"id", "mode_render"}, {"label", "Render frame"},
|
||||
{"api", "Scene::render"}, {"group", "Frame"}, {"request_frame", true}},
|
||||
{{"id", "capture_next_frame"}, {"label", "Capture next frame"},
|
||||
{"api", "Scene_Base::capture_next_frame"}, {"group", "Performance Capture"},
|
||||
{"request_frame", true}},
|
||||
{{"id", "capture_frames"}, {"label", "Capture N frames"},
|
||||
{"api", "Scene_Base::capture_frames"}, {"group", "Performance Capture"},
|
||||
{"argument_input", "number"}, {"argument_default", 20}, {"request_frame", true}},
|
||||
{{"id", "reset"}, {"label", "Reset scene"},
|
||||
{"api", "Scene::Builder"}, {"group", "Scene"}, {"request_frame", true}}
|
||||
{"group", "Frame strategy"}, {"request_frame", true}}
|
||||
});
|
||||
result.push_back({
|
||||
{"id", "capture_next_frame"}, {"label", "Capture next frame"},
|
||||
{"api", "Scene_Base::capture_next_frame"},
|
||||
{"group", "Performance Capture"}, {"request_frame", true}
|
||||
});
|
||||
result.push_back({
|
||||
{"id", "capture_frames"}, {"label", "Capture N frames"},
|
||||
{"api", "Scene_Base::capture_frames"}, {"group", "Performance Capture"},
|
||||
{"argument_input", "number"}, {"argument_default", 20},
|
||||
{"request_frame", true}
|
||||
});
|
||||
result.push_back({
|
||||
{"id", "reset"}, {"label", "Reset scene"},
|
||||
{"api", "Scene::Builder"}, {"group", "Scene"},
|
||||
{"request_frame", true}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
template <class T>
|
||||
Gallery_Request_Result<T> fail(Gallery_Request_Error error) {
|
||||
@@ -93,7 +100,7 @@ std::string Gallery_Protocol::catalog_json() {
|
||||
{"category", item.category}, {"description", "Live Renderive scene"},
|
||||
{"order", index},
|
||||
{"control_count_by_mode", {{"manual", 0}, {"low_latency", 0}, {"playback", 0}}},
|
||||
{"action_count_by_mode", {{"manual", 7}, {"low_latency", 7}, {"playback", 7}}}
|
||||
{"action_count_by_mode", {{"manual", 6}, {"low_latency", 6}, {"playback", 6}}}
|
||||
});
|
||||
}
|
||||
Json field_mode{{"label", "Mode"}, {"source", "kernel_observer.mode"}};
|
||||
@@ -119,14 +126,14 @@ std::string Gallery_Protocol::catalog_json() {
|
||||
{"frame_button_label", "Render frame"}},
|
||||
{{"id", "playback"}, {"title", "Playback"}, {"strategy", "Flow"},
|
||||
{"description", "Ordered frame playback"}, {"order", 2}, {"accent", "#84b3ce"},
|
||||
{"automatic", false}, {"request_after_response", false},
|
||||
{"automatic", true}, {"request_after_response", false},
|
||||
{"request_on_animation_frame", true}, {"observer_visible", true},
|
||||
{"frame_button_label", "Render frame"}}
|
||||
})},
|
||||
{"cases", std::move(published_cases)},
|
||||
{"coverage", {{"case_count", cases.size()}, {"page_count", 1},
|
||||
{"canvas_count", cases.size()}, {"manual_control_count", 0},
|
||||
{"manual_action_count", cases.size() * 7}}},
|
||||
{"manual_action_count", cases.size() * 6}}},
|
||||
{"dashboard", {
|
||||
{"performance", {{"fields", Json::array({
|
||||
{{"label", "Rendered"}, {"source", "performance.successful_render_count"},
|
||||
@@ -232,13 +239,13 @@ Gallery_Protocol::control_patch_request(std::string_view message) {
|
||||
}
|
||||
|
||||
bool Gallery_Protocol::action_available(std::string_view case_id,
|
||||
Gallery_Frame_Mode,
|
||||
std::string_view action_id) {
|
||||
return is_case(case_id) &&
|
||||
(action_id == "reset" || action_id == "mode_render" ||
|
||||
action_id == "capture_next_frame" || action_id == "capture_frames" ||
|
||||
action_id == "frame_strategy_low_latency" ||
|
||||
action_id == "frame_strategy_manual" ||
|
||||
action_id == "frame_strategy_playback");
|
||||
if (!is_case(case_id))
|
||||
return false;
|
||||
return action_id == "reset" || action_id == "capture_next_frame" ||
|
||||
action_id == "capture_frames" ||
|
||||
action_id == "frame_strategy_low_latency" ||
|
||||
action_id == "frame_strategy_manual" ||
|
||||
action_id == "frame_strategy_playback";
|
||||
}
|
||||
} // namespace renderive::web
|
||||
|
||||
Reference in New Issue
Block a user