From 1aa71452fb64d9e2f8d6a9b03f8525b6faba5d7e Mon Sep 17 00:00:00 2001 From: Steve Evans Date: Tue, 21 Jan 2025 20:42:42 +0000 Subject: [PATCH] By default mark OSD element as rendered in case it's in the off blink state (#14188) (#14189) * By default render OSD element in a single cycle * Use return value of osdDrawSingleElement and double check activeElement.rendered --- src/main/osd/osd_elements.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/osd/osd_elements.c b/src/main/osd/osd_elements.c index 43855697a1..99cc5484f4 100644 --- a/src/main/osd/osd_elements.c +++ b/src/main/osd/osd_elements.c @@ -2128,6 +2128,9 @@ void osdAddActiveElements(void) static bool osdDrawSingleElement(displayPort_t *osdDisplayPort, uint8_t item) { + // By default mark the element as rendered in case it's in the off blink state + activeElement.rendered = true; + if (!osdElementDrawFunction[item]) { // Element has no drawing function return true; @@ -2148,7 +2151,6 @@ static bool osdDrawSingleElement(displayPort_t *osdDisplayPort, uint8_t item) activeElement.buff = elementBuff; activeElement.osdDisplayPort = osdDisplayPort; activeElement.drawElement = true; - activeElement.rendered = true; activeElement.attr = DISPLAYPORT_SEVERITY_NORMAL; // Call the element drawing function @@ -2272,14 +2274,13 @@ bool osdDrawNextActiveElement(displayPort_t *osdDisplayPort) // Only advance to the next element if rendering is complete if (osdDrawSingleElement(osdDisplayPort, item)) { // If rendering is complete then advance to the next element - if (activeElement.rendered) { - // Prepare to render the background of the next element - backgroundRendered = false; - if (++activeElementNumber >= activeOsdElementCount) { - activeElementNumber = 0; - return false; - } + // Prepare to render the background of the next element + backgroundRendered = false; + + if (++activeElementNumber >= activeOsdElementCount) { + activeElementNumber = 0; + return false; } }