From 323c5a714f77f13b9b75b38c866e942fef956f2e Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sat, 5 Feb 2022 12:42:45 +0300 Subject: [PATCH] Support setting max events per frame in ui_scene derived classes --- libs/app/include/psemek/app/ui_scene.hpp | 2 ++ libs/app/source/ui_scene.cpp | 7 +++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/libs/app/include/psemek/app/ui_scene.hpp b/libs/app/include/psemek/app/ui_scene.hpp index 4696d52d..de64b7c5 100644 --- a/libs/app/include/psemek/app/ui_scene.hpp +++ b/libs/app/include/psemek/app/ui_scene.hpp @@ -38,6 +38,8 @@ namespace psemek::app protected: + std::optional max_events_per_frame_ = 64; + std::shared_ptr get_ui() { return ui_; } void set_ui(std::shared_ptr ui); diff --git a/libs/app/source/ui_scene.cpp b/libs/app/source/ui_scene.cpp index 1315299c..acb3380a 100644 --- a/libs/app/source/ui_scene.cpp +++ b/libs/app/source/ui_scene.cpp @@ -90,11 +90,10 @@ namespace psemek::app void ui_scene::update() { - static constexpr std::size_t max_events_per_frame = 64; - controller_.update(update_clock_.restart().count()); - if (controller_.loop()->pump(max_events_per_frame) == max_events_per_frame) - log::warning() << "UI event loop had more than " << max_events_per_frame << " events, delaying others"; + std::size_t events = controller_.loop()->pump(max_events_per_frame_); + if (max_events_per_frame_ && events == *max_events_per_frame_) + log::warning() << "UI event loop had more than " << *max_events_per_frame_ << " events, delaying others"; } void ui_scene::present()