diff --git a/repos/os/src/app/global_keys_handler/main.cc b/repos/os/src/app/global_keys_handler/main.cc index 6d8af78ee..3a17f5361 100644 --- a/repos/os/src/app/global_keys_handler/main.cc +++ b/repos/os/src/app/global_keys_handler/main.cc @@ -170,14 +170,18 @@ struct Global_keys_handler::Main xml.attribute("enabled", _curr_value ? "yes" : "no"); }); } + void _generate_report(Genode::Duration) { _generate_report(); } + /* * Handler used for generating delayed reports */ - Constructible _timer { }; + Timer::Connection _timer; uint64_t const _delay_ms; - Signal_handler _timer_handler; + Timer::One_shot_timeout _timer_handler { + _timer, *this, &Report::_generate_report }; + Report(Env &env, Allocator &alloc, Registry &reports, @@ -189,8 +193,8 @@ struct Global_keys_handler::Main _element(reports, *this), _bool_states(bool_states), _reporter(env, _name.string()), - _delay_ms(node.attribute_value("delay_ms", (uint64_t)0)), - _timer_handler(env.ep(), *this, &Report::_generate_report) + _timer(env), + _delay_ms(node.attribute_value("delay_ms", (uint64_t)0)) { _reporter.enabled(true); @@ -201,8 +205,7 @@ struct Global_keys_handler::Main new (alloc) Hover_condition(_hover_conditions, hovered); }); if (_delay_ms) { - _timer.construct(env); - _timer->sigh(_timer_handler); + _timer_handler.schedule(Microseconds{_delay_ms * 1000}); } } @@ -233,7 +236,7 @@ struct Global_keys_handler::Main _initial_report = false; if (_delay_ms) - _timer->trigger_once(_delay_ms*1000); + _timer_handler.schedule(Microseconds{_delay_ms * 1000}); else _generate_report(); }