diff --git a/repos/gems/include/gems/gui_buffer.h b/repos/gems/include/gems/gui_buffer.h index e2588faaa9..f480b04f83 100644 --- a/repos/gems/include/gems/gui_buffer.h +++ b/repos/gems/include/gems/gui_buffer.h @@ -25,7 +25,7 @@ #include -struct Gui_buffer +struct Gui_buffer : Genode::Noncopyable { typedef Genode::Pixel_rgb888 Pixel_rgb888; typedef Genode::Pixel_alpha8 Pixel_alpha8; @@ -50,7 +50,7 @@ struct Gui_buffer bool const use_alpha; - Pixel_rgb888 reset_color { 127, 127, 127, 255 }; + Pixel_rgb888 const reset_color; /** * Return dataspace capability for virtual framebuffer @@ -80,17 +80,24 @@ struct Gui_buffer enum class Alpha { OPAQUE, ALPHA }; + static Genode::Color default_reset_color() + { + return Genode::Color(127, 127, 127, 255); + } + /** * Constructor */ Gui_buffer(Gui::Connection &gui, Area size, Genode::Ram_allocator &ram, Genode::Region_map &rm, - Alpha alpha = Alpha::ALPHA) + Alpha alpha = Alpha::ALPHA, + Genode::Color reset_color = default_reset_color()) : ram(ram), rm(rm), gui(gui), mode({ .area = { Genode::max(1U, size.w()), Genode::max(1U, size.h()) } }), - use_alpha(alpha == Alpha::ALPHA) + use_alpha(alpha == Alpha::ALPHA), + reset_color(reset_color.r, reset_color.g, reset_color.b, reset_color.a) { reset_surface(); } diff --git a/repos/gems/src/app/menu_view/main.cc b/repos/gems/src/app/menu_view/main.cc index eefc9df6c7..b4ad0a3bf5 100644 --- a/repos/gems/src/app/menu_view/main.cc +++ b/repos/gems/src/app/menu_view/main.cc @@ -386,17 +386,13 @@ void Menu_view::Main::_handle_frame_timer() bool const size_increased = (max_size.w() > buffer_w) || (max_size.h() > buffer_h); - if (!_buffer.constructed() || size_increased) { + if (!_buffer.constructed() || size_increased) _buffer.construct(_gui, max_size, _env.ram(), _env.rm(), _opaque ? Gui_buffer::Alpha::OPAQUE - : Gui_buffer::Alpha::ALPHA); - _buffer->reset_color = { _background_color.r, - _background_color.g, - _background_color.b, - _background_color.a }; - } else { + : Gui_buffer::Alpha::ALPHA, + _background_color); + else _buffer->reset_surface(); - } _root_widget.position(Point(0, 0));