This commit is contained in:
2026-08-17 22:37:25 +08:00
parent b8b1105ba5
commit 93064c5ab9
2 changed files with 30 additions and 0 deletions
@@ -18,6 +18,7 @@
#include <algorithm>
#include <chrono>
#include <cmath>
#include <limits>
#include <memory>
#include <numbers>
#include <span>
@@ -94,6 +95,20 @@ public:
void set_client_metrics(Gallery_Client_Performance metrics) noexcept override {
client_ = metrics;
constexpr double maximum_interval_ms =
static_cast<double>(std::numeric_limits<std::uint64_t>::max()) /
1'000'000.0;
if (metrics.display_interval_latest_ms <= 0.0 ||
metrics.display_interval_latest_ms > maximum_interval_ms) return;
const auto observed_interval_ns = static_cast<std::uint64_t>(
metrics.display_interval_latest_ms * 1'000'000.0);
if (observed_interval_ns == 0) return;
const auto strategy = scene_->frame_control_strategy();
if (auto* low_latency =
dynamic_cast<Low_Latency_Render_Scene_2D_Strategy*>(strategy.get())) {
static_cast<void>(low_latency->set_consumer_feedback(
Frame_Consumer_Feedback{observed_interval_ns}));
}
}
adminive::Update_Result apply_patch(
@@ -7,6 +7,7 @@
#include <algorithm>
#include <chrono>
#include <limits>
#include <memory>
#include <string>
#include <vector>
@@ -87,6 +88,20 @@ public:
void reset_monitoring() override { render_count_ = 0; }
void set_client_metrics(Gallery_Client_Performance metrics) noexcept override {
client_ = metrics;
constexpr double maximum_interval_ms =
static_cast<double>(std::numeric_limits<std::uint64_t>::max()) /
1'000'000.0;
if (metrics.display_interval_latest_ms <= 0.0 ||
metrics.display_interval_latest_ms > maximum_interval_ms) return;
const auto observed_interval_ns = static_cast<std::uint64_t>(
metrics.display_interval_latest_ms * 1'000'000.0);
if (observed_interval_ns == 0) return;
const auto strategy = scene_->frame_control_strategy();
if (auto* low_latency =
dynamic_cast<Low_Latency_Render_Scene_3D_Strategy*>(strategy.get())) {
static_cast<void>(low_latency->set_consumer_feedback(
Frame_Consumer_Feedback{observed_interval_ns}));
}
}
adminive::Update_Result apply_patch(
std::string_view, const nlohmann::json&) override {