Support setting max events per frame in ui_scene derived classes

This commit is contained in:
Nikita Lisitsa 2022-02-05 12:42:45 +03:00
parent 29bdfb4dd2
commit 323c5a714f
2 changed files with 5 additions and 4 deletions

View file

@ -38,6 +38,8 @@ namespace psemek::app
protected: protected:
std::optional<std::size_t> max_events_per_frame_ = 64;
std::shared_ptr<ui::element> get_ui() { return ui_; } std::shared_ptr<ui::element> get_ui() { return ui_; }
void set_ui(std::shared_ptr<ui::element> ui); void set_ui(std::shared_ptr<ui::element> ui);

View file

@ -90,11 +90,10 @@ namespace psemek::app
void ui_scene::update() void ui_scene::update()
{ {
static constexpr std::size_t max_events_per_frame = 64;
controller_.update(update_clock_.restart().count()); controller_.update(update_clock_.restart().count());
if (controller_.loop()->pump(max_events_per_frame) == max_events_per_frame) std::size_t events = controller_.loop()->pump(max_events_per_frame_);
log::warning() << "UI event loop had more than " << max_events_per_frame << " events, delaying others"; 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() void ui_scene::present()