1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-21 07:15:18 +03:00

Merge pull request #11351 from hydra/bf-osd-async-on-canvas-update

OSD - Use async screen clear in OSD_STATE_UPDATE_CANVAS.
This commit is contained in:
haslinghuis 2022-01-29 03:26:27 +01:00 committed by GitHub
commit 074172b4c9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -300,8 +300,8 @@ void osdAnalyzeActiveElements(void)
{ {
/* This code results in a total RX task RX_STATE_MODES state time of ~68us on an F411 overclocked to 108MHz /* This code results in a total RX task RX_STATE_MODES state time of ~68us on an F411 overclocked to 108MHz
* This upsets the scheduler task duration estimation and will break SPI RX communication. This can * This upsets the scheduler task duration estimation and will break SPI RX communication. This can
* occur in flight, but only when the OSD profile is changed by switch so can be ignored, only causing * occur in flight, e.g. when the OSD profile is changed by switch so can be ignored, or GPS sensor comms
* one late task instance. * is lost - only causing one late task instance.
*/ */
schedulerIgnoreTaskExecTime(); schedulerIgnoreTaskExecTime();
@ -1272,7 +1272,7 @@ void osdUpdate(timeUs_t currentTimeUs)
case OSD_STATE_UPDATE_CANVAS: case OSD_STATE_UPDATE_CANVAS:
// Hide OSD when OSDSW mode is active // Hide OSD when OSDSW mode is active
if (IS_RC_MODE_ACTIVE(BOXOSD)) { if (IS_RC_MODE_ACTIVE(BOXOSD)) {
displayClearScreen(osdDisplayPort, DISPLAY_CLEAR_WAIT); displayClearScreen(osdDisplayPort, DISPLAY_CLEAR_NONE);
osdState = OSD_STATE_COMMIT; osdState = OSD_STATE_COMMIT;
break; break;
} }
@ -1284,7 +1284,7 @@ void osdUpdate(timeUs_t currentTimeUs)
} else { } else {
// Background layer not supported, just clear the foreground in preparation // Background layer not supported, just clear the foreground in preparation
// for drawing the elements including their backgrounds. // for drawing the elements including their backgrounds.
displayClearScreen(osdDisplayPort, DISPLAY_CLEAR_WAIT); displayClearScreen(osdDisplayPort, DISPLAY_CLEAR_NONE);
} }
#ifdef USE_GPS #ifdef USE_GPS