From 843c49eb0f7d3283fb2cf0b2eab8097690af865b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=98yvind=20Kol=C3=A5s?= <pippin@gimp.org>
Date: Wed, 13 Sep 2023 12:54:12 +0200
Subject: [PATCH] st3m,py: return set graphics mode rather than 0 when system
 mode is set

---
 components/st3m/st3m_gfx.c                  |  4 +++-
 python_payload/st3m/ui/elements/overlays.py | 14 ++++++++------
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/components/st3m/st3m_gfx.c b/components/st3m/st3m_gfx.c
index 2d9a5d185a..5c98b27319 100644
--- a/components/st3m/st3m_gfx.c
+++ b/components/st3m/st3m_gfx.c
@@ -341,7 +341,9 @@ st3m_gfx_mode st3m_gfx_set_mode(st3m_gfx_mode mode) {
     return mode;
 }
 
-st3m_gfx_mode st3m_gfx_get_mode(void) { return _st3m_gfx_mode; }
+st3m_gfx_mode st3m_gfx_get_mode(void) {
+    return _st3m_gfx_mode ? _st3m_gfx_mode : default_mode;
+}
 
 uint8_t *st3m_gfx_fb(st3m_gfx_mode mode, int *width, int *height, int *stride) {
     st3m_gfx_mode set_mode = _st3m_gfx_mode ? _st3m_gfx_mode : default_mode;
diff --git a/python_payload/st3m/ui/elements/overlays.py b/python_payload/st3m/ui/elements/overlays.py
index 45f69690d7..82d8e8b493 100644
--- a/python_payload/st3m/ui/elements/overlays.py
+++ b/python_payload/st3m/ui/elements/overlays.py
@@ -80,18 +80,20 @@ class Compositor(Responder):
 
     def think(self, ins: InputState, delta_ms: int) -> None:
         self.main.think(ins, delta_ms)
-        if sys_display.get_mode() != 0:
+        if (
+            sys_display.get_mode() & sys_display.osd == 0
+            or settings.onoff_show_fps.value
+        ):
             return
-        if not settings.onoff_show_fps.value and not sys_display.get_mode() != 0:
-            for overlay in self._enabled_overlays():
-                overlay.think(ins, delta_ms)
+        for overlay in self._enabled_overlays():
+            overlay.think(ins, delta_ms)
 
     def draw(self, ctx: Context) -> None:
         global _clip_x0, _clip_y0, _clip_x1, _clip_y1
         self.main.draw(ctx)
-        if sys_display.get_mode() != 0:
+        if (sys_display.get_mode() & sys_display.osd) == 0:
             return
-        octx = sys_display.ctx(256)  # XXX add symbolic name for overlay
+        octx = sys_display.ctx(sys_display.osd)
         if settings.onoff_show_fps.value:
             _clip_x0 = 0
             _clip_y1 = 0
-- 
GitLab