diff --git a/src/host/outputStream.cpp b/src/host/outputStream.cpp index 7990b1c53b..3852f8a8f4 100644 --- a/src/host/outputStream.cpp +++ b/src/host/outputStream.cpp @@ -36,7 +36,7 @@ void ConhostInternalGetSet::UnknownSequence() noexcept // us from using a more conservative solution (e.g. always fetching the cursor position). if (gci.IsInVtIoMode()) { - gci.GetActiveOutputBuffer().SetConptyCursorPositionMayBeWrong(); + gci.GetActiveOutputBuffer().GetActiveBuffer().SetConptyCursorPositionMayBeWrong(); } } diff --git a/src/server/ApiDispatchers.cpp b/src/server/ApiDispatchers.cpp index f240257209..9c89a40a58 100644 --- a/src/server/ApiDispatchers.cpp +++ b/src/server/ApiDispatchers.cpp @@ -595,9 +595,12 @@ constexpr T saturate(auto val) RETURN_IF_FAILED(pObjectHandle->GetScreenBuffer(GENERIC_READ, &pObj)); // See ConptyCursorPositionMayBeWrong() for details. - if (pObj->ConptyCursorPositionMayBeWrong()) + auto& activeBuffer = pObj->GetActiveBuffer(); + // GetConsoleScreenBufferInfoExImpl uses GetActiveBuffer internally, but + // under the console lock. + if (activeBuffer.ConptyCursorPositionMayBeWrong()) { - pObj->WaitForConptyCursorPositionToBeSynchronized(); + activeBuffer.WaitForConptyCursorPositionToBeSynchronized(); } m->_pApiRoutines->GetConsoleScreenBufferInfoExImpl(*pObj, ex); diff --git a/src/terminal/adapter/InteractDispatch.cpp b/src/terminal/adapter/InteractDispatch.cpp index 99566acf1c..8c64743485 100644 --- a/src/terminal/adapter/InteractDispatch.cpp +++ b/src/terminal/adapter/InteractDispatch.cpp @@ -166,7 +166,7 @@ void InteractDispatch::MoveCursor(const VTInt row, const VTInt col) // Unblock any callers inside SCREEN_INFORMATION::WaitForConptyCursorPositionToBeSynchronized(). // The cursor position has now been updated to the terminal's. - info.ResetConptyCursorPositionMayBeWrong(); + info.GetActiveBuffer().ResetConptyCursorPositionMayBeWrong(); } // Routine Description: