Fix clear screen on buffered deevices (#544)

This commit is contained in:
Anders Jenbo 2025-07-07 03:40:53 +02:00 committed by GitHub
parent 6df6ae407c
commit bb86ee3172
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -52,7 +52,7 @@ void MxDisplaySurface::ClearScreen()
DDSURFACEDESC desc;
if (!m_videoParam.Flags().GetFlipSurfaces()) {
backBuffers = 1;
backBuffers = 2;
}
else {
backBuffers = m_videoParam.GetBackBuffers() + 1;
@ -80,6 +80,17 @@ void MxDisplaySurface::ClearScreen()
if (m_videoParam.Flags().GetFlipSurfaces()) {
m_ddSurface1->Flip(NULL, DDFLIP_WAIT);
}
else {
DDBLTFX data;
memset(&data, 0, sizeof(data));
data.dwSize = sizeof(data);
data.dwDDFX = DDBLTFX_NOTEARING;
if (m_ddSurface1->Blt(NULL, m_ddSurface2, NULL, DDBLT_NONE, &data) == DDERR_SURFACELOST) {
m_ddSurface1->Restore();
m_ddSurface1->Blt(NULL, m_ddSurface2, NULL, DDBLT_NONE, &data);
}
}
}
}