gui_fb: reset signal handlers when closing fb

The gui_fb client may have installed a custom sync_sigh and mode_sigh.
Reset those signal handlers at the GUI server should the client
disappear. Otherwise, the GUI server (nitpicker) continues to attempt
transmitting sync signals to the no-longer existing component, spamming
the log with "Warning: invalid signal-context capability" messages.
This commit is contained in:
Norman Feske 2024-09-03 15:05:32 +02:00 committed by Christian Helmuth
parent dd13a976af
commit f650f2e91b

View File

@ -289,11 +289,30 @@ struct Nit_fb::Main : View_updater
Input::Session_component input_session { env, env.ram() };
Framebuffer::Session_component fb_session { env.pd(), gui, *this, _initial_mode() };
Static_root<Input::Session> input_root { env.ep().manage(input_session) };
/*
* Attach root interfaces to the entry point
*/
Static_root<Input::Session> input_root { env.ep().manage(input_session) };
Static_root<Framebuffer::Session> fb_root { env.ep().manage(fb_session) };
struct Fb_root : Static_root<Framebuffer::Session>
{
Main &_main;
Fb_root(Main &main)
:
Static_root<Framebuffer::Session>(main.env.ep().manage(main.fb_session)),
_main(main)
{ }
void close(Genode::Capability<Genode::Session>) override
{
_main.fb_session.sync_sigh(Genode::Signal_context_capability());
_main.fb_session.mode_sigh(Genode::Signal_context_capability());
}
};
Fb_root fb_root { *this };
/**
* View_updater interface