wm: propagate nitpicker mode changes to layouter
This commit is contained in:
parent
752ddc153e
commit
31888c610a
|
@ -17,6 +17,7 @@
|
||||||
/* Genode includes */
|
/* Genode includes */
|
||||||
#include <os/server.h>
|
#include <os/server.h>
|
||||||
#include <input/component.h>
|
#include <input/component.h>
|
||||||
|
#include <nitpicker_session/connection.h>
|
||||||
|
|
||||||
namespace Wm { using Server::Entrypoint; }
|
namespace Wm { using Server::Entrypoint; }
|
||||||
|
|
||||||
|
@ -34,17 +35,21 @@ struct Wm::Layouter_nitpicker_session : Genode::Rpc_object<Nitpicker::Session>
|
||||||
|
|
||||||
Input::Session_capability _input_session_cap;
|
Input::Session_capability _input_session_cap;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Nitpicker session solely used to supply the nitpicker mode to the
|
||||||
|
* layouter
|
||||||
|
*/
|
||||||
|
Nitpicker::Connection _mode_sigh_nitpicker;
|
||||||
|
|
||||||
|
Genode::Signal_context_capability _mode_sigh;
|
||||||
|
|
||||||
Attached_ram_dataspace _command_ds;
|
Attached_ram_dataspace _command_ds;
|
||||||
|
|
||||||
Framebuffer::Mode const _mode;
|
|
||||||
|
|
||||||
Layouter_nitpicker_session(Genode::Ram_session &ram,
|
Layouter_nitpicker_session(Genode::Ram_session &ram,
|
||||||
Input::Session_capability input_session_cap,
|
Input::Session_capability input_session_cap)
|
||||||
Framebuffer::Mode mode)
|
|
||||||
:
|
:
|
||||||
_input_session_cap(input_session_cap),
|
_input_session_cap(input_session_cap),
|
||||||
_command_ds(&ram, 4096),
|
_command_ds(&ram, 4096)
|
||||||
_mode(mode)
|
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
@ -85,9 +90,18 @@ struct Wm::Layouter_nitpicker_session : Genode::Rpc_object<Nitpicker::Session>
|
||||||
|
|
||||||
void execute() override { }
|
void execute() override { }
|
||||||
|
|
||||||
Framebuffer::Mode mode() override { return _mode; }
|
Framebuffer::Mode mode() override { return _mode_sigh_nitpicker.mode(); }
|
||||||
|
|
||||||
void mode_sigh(Genode::Signal_context_capability) override { }
|
void mode_sigh(Genode::Signal_context_capability sigh) override
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Remember signal-context capability to keep NOVA from revoking
|
||||||
|
* transitive delegations of the capability.
|
||||||
|
*/
|
||||||
|
_mode_sigh = sigh;
|
||||||
|
|
||||||
|
_mode_sigh_nitpicker.mode_sigh(sigh);
|
||||||
|
}
|
||||||
|
|
||||||
void buffer(Framebuffer::Mode, bool) override { }
|
void buffer(Framebuffer::Mode, bool) override { }
|
||||||
|
|
||||||
|
|
|
@ -1163,8 +1163,7 @@ class Wm::Nitpicker::Root : public Genode::Rpc_object<Genode::Typed_root<Session
|
||||||
{
|
{
|
||||||
_layouter_session = new (_md_alloc)
|
_layouter_session = new (_md_alloc)
|
||||||
Layouter_nitpicker_session(*Genode::env()->ram_session(),
|
Layouter_nitpicker_session(*Genode::env()->ram_session(),
|
||||||
_window_layouter_input_cap,
|
_window_layouter_input_cap);
|
||||||
_focus_nitpicker_session.mode());
|
|
||||||
|
|
||||||
return _ep.manage(*_layouter_session);
|
return _ep.manage(*_layouter_session);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue