diff --git a/repos/gems/recipes/raw/motif_wm/wm.config b/repos/gems/recipes/raw/motif_wm/wm.config index 0ec71f3c7..deca1999d 100644 --- a/repos/gems/recipes/raw/motif_wm/wm.config +++ b/repos/gems/recipes/raw/motif_wm/wm.config @@ -6,6 +6,7 @@ + @@ -18,6 +19,10 @@ + + + + @@ -40,7 +45,7 @@ - + @@ -50,6 +55,7 @@ + diff --git a/repos/gems/recipes/raw/wm/wm.config b/repos/gems/recipes/raw/wm/wm.config index 4e8fa62bb..01641e340 100644 --- a/repos/gems/recipes/raw/wm/wm.config +++ b/repos/gems/recipes/raw/wm/wm.config @@ -6,6 +6,7 @@ + @@ -48,6 +49,7 @@ + @@ -72,7 +74,7 @@ - + @@ -82,6 +84,7 @@ + diff --git a/repos/gems/run/launcher.run b/repos/gems/run/launcher.run index cfe5ef73a..385d08146 100644 --- a/repos/gems/run/launcher.run +++ b/repos/gems/run/launcher.run @@ -105,6 +105,7 @@ install_config { + @@ -142,7 +143,7 @@ install_config { - + @@ -152,8 +153,9 @@ install_config { - - + + + diff --git a/repos/gems/run/mixer_gui_qt_test.run b/repos/gems/run/mixer_gui_qt_test.run index 76134c6f5..cd1a4bf1b 100644 --- a/repos/gems/run/mixer_gui_qt_test.run +++ b/repos/gems/run/mixer_gui_qt_test.run @@ -79,9 +79,7 @@ append config { - - - + diff --git a/repos/gems/run/sculpt/launcher/arora b/repos/gems/run/sculpt/launcher/arora index 32a1737f6..810e8aaaf 100644 --- a/repos/gems/run/sculpt/launcher/arora +++ b/repos/gems/run/sculpt/launcher/arora @@ -2,7 +2,7 @@ - + diff --git a/repos/gems/run/sculpt/launcher/config_editor b/repos/gems/run/sculpt/launcher/config_editor index 0b88be586..d83a2d504 100644 --- a/repos/gems/run/sculpt/launcher/config_editor +++ b/repos/gems/run/sculpt/launcher/config_editor @@ -1,7 +1,7 @@ - - + + diff --git a/repos/gems/run/sculpt/launcher/firefox@vbox b/repos/gems/run/sculpt/launcher/firefox@vbox index b06c9c160..74548bd98 100644 --- a/repos/gems/run/sculpt/launcher/firefox@vbox +++ b/repos/gems/run/sculpt/launcher/firefox@vbox @@ -3,7 +3,7 @@ - + diff --git a/repos/gems/run/sculpt/launcher/vm b/repos/gems/run/sculpt/launcher/vm index 5cd90f615..ce6236898 100644 --- a/repos/gems/run/sculpt/launcher/vm +++ b/repos/gems/run/sculpt/launcher/vm @@ -4,7 +4,7 @@ - + diff --git a/repos/gems/run/sculpt/launcher/wm b/repos/gems/run/sculpt/launcher/wm index 9973164ca..62b341fe5 100644 --- a/repos/gems/run/sculpt/launcher/wm +++ b/repos/gems/run/sculpt/launcher/wm @@ -2,5 +2,6 @@ + diff --git a/repos/gems/run/sculpt/leitzentrale.config b/repos/gems/run/sculpt/leitzentrale.config index fc16cb0d7..a56f75269 100644 --- a/repos/gems/run/sculpt/leitzentrale.config +++ b/repos/gems/run/sculpt/leitzentrale.config @@ -107,7 +107,7 @@ - + diff --git a/repos/gems/run/tiled_wm.run b/repos/gems/run/tiled_wm.run index 4730f9728..9e5a6a743 100644 --- a/repos/gems/run/tiled_wm.run +++ b/repos/gems/run/tiled_wm.run @@ -122,9 +122,7 @@ append config { - - - + @@ -148,9 +146,7 @@ append config { - - - + @@ -171,9 +167,7 @@ append config { - - - + @@ -194,9 +188,7 @@ append config { - - - + @@ -216,9 +208,7 @@ append config { - - - + diff --git a/repos/gems/run/wm.run b/repos/gems/run/wm.run index 1de182d0c..0ccfe8203 100644 --- a/repos/gems/run/wm.run +++ b/repos/gems/run/wm.run @@ -74,7 +74,7 @@ install_config { - + diff --git a/repos/gems/src/server/wm/main.cc b/repos/gems/src/server/wm/main.cc index ba7be47d9..b18c2416f 100644 --- a/repos/gems/src/server/wm/main.cc +++ b/repos/gems/src/server/wm/main.cc @@ -22,6 +22,7 @@ /* local includes */ #include +#include namespace Wm { @@ -110,6 +111,8 @@ struct Wm::Main Genode::Signal_handler
resize_request_handler = { env.ep(), *this, &Main::handle_resize_request_update }; + Report_forwarder _report_forwarder { env, heap }; + Main(Genode::Env &env) : env(env) { pointer_reporter.enabled(true); diff --git a/repos/gems/src/server/wm/report_forwarder.h b/repos/gems/src/server/wm/report_forwarder.h new file mode 100644 index 000000000..ce57de6a0 --- /dev/null +++ b/repos/gems/src/server/wm/report_forwarder.h @@ -0,0 +1,102 @@ +/* + * \brief Report service for intercepting shape reports + * \author Norman Feske + * \date 2019-02-18 + * + * This report service has the sole purpose of applying the same labeling + * policy to an application's shape report as done for the application's + * 'Nitpicker' session. This consistency is needed by the pointer to correlate + * the currently hovered nitpicker session with the reported shapes. + */ + +/* + * Copyright (C) 2015-2019 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU Affero General Public License version 3. + */ + +#ifndef _REPORT_FORWARDER_H_ +#define _REPORT_FORWARDER_H_ + +/* Genode includes */ +#include +#include + +namespace Wm { struct Report_forwarder; } + + +struct Wm::Report_forwarder +{ + struct Session : Genode::Rpc_object + { + Genode::Env &_env; + Report::Connection _connection; + + Session(Genode::Env &env, Genode::Session_label const &label) + : _env(env), _connection(env, label.string()) + { _env.ep().manage(*this); } + + ~Session() { _env.ep().dissolve(*this); } + + void upgrade(Genode::Session::Resources const &resources) + { + _connection.upgrade(resources); + } + + + /******************************* + ** Report::Session interface ** + *******************************/ + + Genode::Dataspace_capability dataspace() override + { + return _connection.dataspace(); + } + + void submit(Genode::size_t length) override + { + _connection.submit(length); + } + + void response_sigh(Genode::Signal_context_capability sigh) override + { + _connection.response_sigh(sigh); + } + + Genode::size_t obtain_response() override + { + return _connection.obtain_response(); + } + }; + + struct Root : Genode::Root_component + { + Genode::Env &_env; + Genode::Allocator &_alloc; + + Session *_create_session(char const *args) override + { + return new (md_alloc()) Session(_env, Genode::label_from_args(args)); + } + + void _upgrade_session(Session *session, const char *args) override + { + session->upgrade(Genode::session_resources_from_args(args)); + } + + Root(Genode::Env &env, Genode::Allocator &alloc) + : + Genode::Root_component(env.ep(), alloc), + _env(env), _alloc(alloc) + { + _env.parent().announce(env.ep().manage(*this)); + } + + } _root; + + Report_forwarder(Genode::Env &env, Genode::Allocator &alloc) + : _root(env, alloc) { } +}; + +#endif /* _REPORT_FORWARDER_H_ */ diff --git a/repos/libports/run/qt5_common.inc b/repos/libports/run/qt5_common.inc index d5503ee41..9f20514aa 100644 --- a/repos/libports/run/qt5_common.inc +++ b/repos/libports/run/qt5_common.inc @@ -156,7 +156,7 @@ proc qt5_start_nodes { feature_arg } { - + @@ -166,6 +166,7 @@ proc qt5_start_nodes { feature_arg } { + diff --git a/repos/libports/run/qt5_textedit.run b/repos/libports/run/qt5_textedit.run index 35a0861f4..0251d5370 100644 --- a/repos/libports/run/qt5_textedit.run +++ b/repos/libports/run/qt5_textedit.run @@ -96,9 +96,7 @@ append config { - - - + @@ -119,9 +117,7 @@ append config { - - - +