From 7c23d6cd8133ed40e0f15a3d1c74111ca2868d17 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Sat, 11 Jan 2014 02:14:09 +0100 Subject: [PATCH] nitpicker: Report pointer position --- os/src/server/nitpicker/main.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/os/src/server/nitpicker/main.cc b/os/src/server/nitpicker/main.cc index bfae83db97..29c8e58f58 100644 --- a/os/src/server/nitpicker/main.cc +++ b/os/src/server/nitpicker/main.cc @@ -31,6 +31,7 @@ #include #include #include +#include /* local includes */ #include "input.h" @@ -821,6 +822,9 @@ struct Nitpicker::Main Root np_root = { session_list, global_keys, ep.rpc_ep(), user_state, sliced_heap, screen, framebuffer, MENUBAR_HEIGHT }; + + Genode::Reporter pointer_reporter = { "pointer" }; + /* * Configuration-update dispatcher, executed in the context of the RPC * entrypoint. @@ -884,6 +888,14 @@ void Nitpicker::Main::handle_input(unsigned) Point const new_mouse_pos = user_state.mouse_pos(); + /* report mouse-position updates */ + if (pointer_reporter.is_enabled() && old_mouse_pos != new_mouse_pos) + Genode::Reporter::Xml_generator xml(pointer_reporter, [&] () + { + xml.attribute("xpos", new_mouse_pos.x()); + xml.attribute("ypos", new_mouse_pos.y()); + }); + /* update mouse cursor */ if (old_mouse_pos != new_mouse_pos) user_state.viewport(mouse_cursor, @@ -926,6 +938,13 @@ void Nitpicker::Main::handle_config(unsigned) .attribute("color").value(&background.color); } catch (...) { } + /* enable or disable reporting */ + try { + pointer_reporter.enabled(config()->xml_node().sub_node("report") + .attribute("pointer") + .has_value("yes")); + } catch (...) { } + /* update session policies */ for (::Session *s = session_list.first(); s; s = s->next()) s->apply_session_color();