Flush before applying a new configuration. (#848)

This avoids an ordering problem with whatever the user printed and
interacting with termios/WinAPI.

Bug:https://github.com/ArthurSonzogni/FTXUI/issues/846
This commit is contained in:
Arthur Sonzogni 2024-04-27 11:18:35 +02:00 committed by GitHub
parent 293ff179f6
commit 014bdb4a05
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -568,8 +568,16 @@ ScreenInteractive* ScreenInteractive::Active() {
// private
void ScreenInteractive::Install() {
frame_valid_ = false;
// Flush the buffer for stdout to ensure whatever the user has printed before
// is fully applied before we start modifying the terminal configuration. This
// is important, because we are using two different channels (stdout vs
// termios/WinAPI) to communicate with the terminal emulator below. See
// https://github.com/ArthurSonzogni/FTXUI/issues/846
Flush();
// After uninstalling the new configuration, flush it to the terminal to
// ensure it is fully applied:
on_exit_functions.push([] { Flush(); });