Flush before applying a new configuration.

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:
ArthurSonzogni 2024-04-27 11:16:41 +02:00
parent 293ff179f6
commit e474a1b75a
No known key found for this signature in database
GPG Key ID: 41D98248C074CD6C

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