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; } }