diff --git a/libraries/AP_OSD/AP_OSD_MAX7456.cpp b/libraries/AP_OSD/AP_OSD_MAX7456.cpp index 73120fc227..cd1989fde0 100644 --- a/libraries/AP_OSD/AP_OSD_MAX7456.cpp +++ b/libraries/AP_OSD/AP_OSD_MAX7456.cpp @@ -159,7 +159,8 @@ bool AP_OSD_MAX7456::update_font() uint32_t font_size; uint8_t updated_chars = 0; char fontname[] = "font0.bin"; - fontname[4] = get_font_num() + '0'; + last_font = get_font_num(); + fontname[4] = last_font + '0'; uint8_t *font_data = AP_ROMFS::find_decompress(fontname, font_size); if (font_data == nullptr || font_size != NVM_RAM_SIZE * 256) { return false; @@ -345,6 +346,9 @@ void AP_OSD_MAX7456::reinit() void AP_OSD_MAX7456::flush() { + if (last_font != get_font_num()) { + update_font(); + } check_reinit(); transfer_frame(); } diff --git a/libraries/AP_OSD/AP_OSD_MAX7456.h b/libraries/AP_OSD/AP_OSD_MAX7456.h index c399a3d860..cca5ea5e47 100644 --- a/libraries/AP_OSD/AP_OSD_MAX7456.h +++ b/libraries/AP_OSD/AP_OSD_MAX7456.h @@ -59,6 +59,7 @@ private: uint8_t video_signal_reg; bool initialized; + uint8_t last_font; static const uint8_t video_lines_ntsc = 13; static const uint8_t video_lines_pal = 16;