mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-09 04:15:52 +00:00
nitpicker: option to report display information
The new 'displays' report contains information about the used framebuffer backend. It is issued when nitpicker has successfully passed all initialization, in particular the connection to the framebuffer driver. Hence, it can be taken as an indicator of whether the framebuffer is available or not (e.g., caused by a faulty driver).
This commit is contained in:
parent
22a69efafa
commit
b541379037
@ -235,6 +235,7 @@ struct Nitpicker::Main : Focus_updater
|
||||
}
|
||||
|
||||
void _handle_fb_mode();
|
||||
void _report_displays();
|
||||
|
||||
Signal_handler<Main> _fb_mode_handler = { _env.ep(), *this, &Main::_handle_fb_mode };
|
||||
|
||||
@ -277,6 +278,7 @@ struct Nitpicker::Main : Focus_updater
|
||||
Reporter _focus_reporter = { _env, "focus" };
|
||||
Reporter _keystate_reporter = { _env, "keystate" };
|
||||
Reporter _clicked_reporter = { _env, "clicked" };
|
||||
Reporter _displays_reporter = { _env, "displays" };
|
||||
|
||||
Attached_rom_dataspace _config_rom { _env, "config" };
|
||||
|
||||
@ -377,6 +379,8 @@ struct Nitpicker::Main : Focus_updater
|
||||
_framebuffer.mode_sigh(_fb_mode_handler);
|
||||
|
||||
_env.parent().announce(_env.ep().manage(_root));
|
||||
|
||||
_report_displays();
|
||||
}
|
||||
};
|
||||
|
||||
@ -526,6 +530,7 @@ void Nitpicker::Main::_handle_config()
|
||||
configure_reporter(config, _focus_reporter);
|
||||
configure_reporter(config, _keystate_reporter);
|
||||
configure_reporter(config, _clicked_reporter);
|
||||
configure_reporter(config, _displays_reporter);
|
||||
|
||||
/* update domain registry and session policies */
|
||||
for (Session_component *s = _session_list.first(); s; s = s->next())
|
||||
@ -570,6 +575,20 @@ void Nitpicker::Main::_handle_config()
|
||||
}
|
||||
|
||||
|
||||
void Nitpicker::Main::_report_displays()
|
||||
{
|
||||
if (!_displays_reporter.enabled())
|
||||
return;
|
||||
|
||||
Reporter::Xml_generator xml(_displays_reporter, [&] () {
|
||||
xml.node("display", [&] () {
|
||||
xml.attribute("width", _fb_screen->size.w());
|
||||
xml.attribute("height", _fb_screen->size.h());
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
void Nitpicker::Main::_handle_fb_mode()
|
||||
{
|
||||
/* reconstruct framebuffer screen and menu bar */
|
||||
@ -584,6 +603,8 @@ void Nitpicker::Main::_handle_fb_mode()
|
||||
/* notify clients about the change screen mode */
|
||||
for (Session_component *s = _session_list.first(); s; s = s->next())
|
||||
s->notify_mode_change();
|
||||
|
||||
_report_displays();
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user