diff --git a/os/src/server/nitpicker/genode/main.cc b/os/src/server/nitpicker/genode/main.cc index 1e8ff98111..1fee6ef7db 100644 --- a/os/src/server/nitpicker/genode/main.cc +++ b/os/src/server/nitpicker/genode/main.cc @@ -657,14 +657,14 @@ class Input_handler_component : public Genode::Rpc_objectrm_session()->attach(_input.dataspace())), - _framebuffer(framebuffer), _timer(timer) + _framebuffer(framebuffer), _sig_rec(sig_rec) { } /** @@ -786,12 +786,12 @@ class Input_handler_component : public Genode::Rpc_objectram_session(), env()->rm_session()); static Nitpicker::Root np_root(session_list, global_keys, @@ -962,6 +960,16 @@ int main(int argc, char **argv) env()->parent()->announce(ep.manage(&np_root)); + /* + * Schedule periodic timer signals every 10 milliseconds + */ + static Timer::Connection timer; + static Signal_receiver sig_rec; + Signal_context timer_sig_ctx; + + timer.sigh(sig_rec.manage(&timer_sig_ctx)); + timer.trigger_periodic(10*1000); + /* * Initialize input handling * @@ -972,17 +980,13 @@ int main(int argc, char **argv) */ static Input_handler_component input_handler(user_state, mouse_cursor, mouse_size, - screen, input, framebuffer, timer); + screen, input, framebuffer, sig_rec); + Capability input_handler_cap = ep.manage(&input_handler); - /* start periodic mode of operation */ - static Msgbuf<256> ih_snd_msg, ih_rcv_msg; - Ipc_client input_handler_client(input_handler_cap, &ih_snd_msg, &ih_rcv_msg); - while (1) { - timer.msleep(10); - input_handler_client << 0 << IPC_CALL; + for (;;) { + sig_rec.wait_for_signal(); + input_handler_cap.call(); } - - sleep_forever(); return 0; }