diff --git src/via_swov.c src/via_swov.c
index 158d60f..0f6bf95 100644
--- src/via_swov.c
+++ src/via_swov.c
@@ -206,12 +206,14 @@ ResetVidRegBuffer(VIAPtr pVia)
static void
SaveVideoRegister(VIAPtr pVia, CARD32 index, CARD32 data)
{
+ if (pVia->VidRegCursor >= VIDREG_BUFFER_SIZE) {
+ DBG_DD(ErrorF("SaveVideoRegister: Out of video register space flushing"));
+ FlushVidRegBuffer(pVia);
+ ResetVidRegBuffer(pVia);
+ }
+
pVia->VidRegBuffer[pVia->VidRegCursor++] = index;
pVia->VidRegBuffer[pVia->VidRegCursor++] = data;
-
- if (pVia->VidRegCursor > VIDREG_BUFFER_SIZE) {
- DBG_DD(ErrorF("SaveVideoRegister: Out of video register space"));
- }
}
/*