From afaf899b3fa8718b22aa29be35ce03f4ec7d4318 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Wed, 14 Apr 2021 16:20:58 +0200 Subject: [PATCH] fixup gui_fb patch --- packages/genodelabs/patches/gui_fb.patch | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/genodelabs/patches/gui_fb.patch b/packages/genodelabs/patches/gui_fb.patch index 684466a..38f599d 100644 --- a/packages/genodelabs/patches/gui_fb.patch +++ b/packages/genodelabs/patches/gui_fb.patch @@ -1,4 +1,4 @@ -From 92f7d224725ef3952924e230d2b41b58c043b9e3 Mon Sep 17 00:00:00 2001 +From 076ab8c2ae68386fb6ed03e7bd3280a9808ce0ed Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Wed, 14 Apr 2021 11:51:38 +0200 Subject: [PATCH] gui_fb: always set a usable framebuffer mode @@ -6,11 +6,11 @@ Subject: [PATCH] gui_fb: always set a usable framebuffer mode Reduce the size of a requested mode until there is sufficient RAM to render that mode, rather than refuse to set a mode at all. --- - repos/os/src/server/gui_fb/main.cc | 20 +++++++++++++------- - 1 file changed, 13 insertions(+), 7 deletions(-) + repos/os/src/server/gui_fb/main.cc | 22 +++++++++++++++------- + 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/repos/os/src/server/gui_fb/main.cc b/repos/os/src/server/gui_fb/main.cc -index 923208896e..8ce9710224 100644 +index 923208896e..67f32b22d0 100644 --- a/repos/os/src/server/gui_fb/main.cc +++ b/repos/os/src/server/gui_fb/main.cc @@ -121,7 +121,7 @@ struct Framebuffer::Session_component : Genode::Rpc_object @@ -34,22 +34,24 @@ index 923208896e..8ce9710224 100644 _next_mode = mode; if (_mode_sigh.valid()) -@@ -372,7 +367,18 @@ struct Nit_fb::Main : View_updater +@@ -372,7 +367,20 @@ struct Nit_fb::Main : View_updater if (height < 0) height = gui_height + height; } - fb_session.size(Area(width, height)); + Framebuffer::Mode mode { .area = Area(width, height) }; -+ -+ if (!fb_session.ram_suffices_for_mode(mode)) -+ Genode::warning("insufficient RAM for mode ", mode); ++ bool reduced = false; + + while (!fb_session.ram_suffices_for_mode(mode)) { + mode.area = Area( + (mode.area.w() / 4) * 3, + (mode.area.h() / 4) * 3); ++ reduced = true; + } + ++ if (reduced) ++ Genode::warning("insufficient RAM, requested mode reduced to ", mode); ++ + fb_session.size(mode.area); }