fixup gui_fb patch
This commit is contained in:
parent
4865ada1ac
commit
afaf899b3f
|
@ -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 <ehmry@posteo.net>
|
From: Emery Hemingway <ehmry@posteo.net>
|
||||||
Date: Wed, 14 Apr 2021 11:51:38 +0200
|
Date: Wed, 14 Apr 2021 11:51:38 +0200
|
||||||
Subject: [PATCH] gui_fb: always set a usable framebuffer mode
|
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
|
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.
|
to render that mode, rather than refuse to set a mode at all.
|
||||||
---
|
---
|
||||||
repos/os/src/server/gui_fb/main.cc | 20 +++++++++++++-------
|
repos/os/src/server/gui_fb/main.cc | 22 +++++++++++++++-------
|
||||||
1 file changed, 13 insertions(+), 7 deletions(-)
|
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
|
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
|
--- a/repos/os/src/server/gui_fb/main.cc
|
||||||
+++ b/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<Framebuffer::Session>
|
@@ -121,7 +121,7 @@ struct Framebuffer::Session_component : Genode::Rpc_object<Framebuffer::Session>
|
||||||
|
@ -34,22 +34,24 @@ index 923208896e..8ce9710224 100644
|
||||||
_next_mode = mode;
|
_next_mode = mode;
|
||||||
|
|
||||||
if (_mode_sigh.valid())
|
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;
|
if (height < 0) height = gui_height + height;
|
||||||
}
|
}
|
||||||
|
|
||||||
- fb_session.size(Area(width, height));
|
- fb_session.size(Area(width, height));
|
||||||
+ Framebuffer::Mode mode { .area = Area(width, height) };
|
+ Framebuffer::Mode mode { .area = Area(width, height) };
|
||||||
+
|
+ bool reduced = false;
|
||||||
+ if (!fb_session.ram_suffices_for_mode(mode))
|
|
||||||
+ Genode::warning("insufficient RAM for mode ", mode);
|
|
||||||
+
|
+
|
||||||
+ while (!fb_session.ram_suffices_for_mode(mode)) {
|
+ while (!fb_session.ram_suffices_for_mode(mode)) {
|
||||||
+ mode.area = Area(
|
+ mode.area = Area(
|
||||||
+ (mode.area.w() / 4) * 3,
|
+ (mode.area.w() / 4) * 3,
|
||||||
+ (mode.area.h() / 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);
|
+ fb_session.size(mode.area);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue