diff options
Diffstat (limited to 'src/via_video.c')
-rw-r--r-- | src/via_video.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/via_video.c b/src/via_video.c index 9c3d92c..e9d79a8 100644 --- a/src/via_video.c +++ b/src/via_video.c @@ -999,6 +999,7 @@ Flip(VIAPtr pVia, viaPortPrivPtr pPriv, int fourcc, unsigned long DisplayBufferIndex) { unsigned long proReg = 0; + unsigned count = 50000; if (pVia->ChipId == PCI_CHIP_VT3259 && !(pVia->swov.gdwVideoFlagSW & VIDEO_1_INUSE)) @@ -1010,7 +1011,8 @@ Flip(VIAPtr pVia, viaPortPrivPtr pPriv, int fourcc, case FOURCC_RV15: case FOURCC_RV16: case FOURCC_RV32: - while ((VIDInD(HQV_CONTROL + proReg) & HQV_SW_FLIP)); + while ((VIDInD(HQV_CONTROL + proReg) & HQV_SW_FLIP) + && --count); VIDOutD(HQV_SRC_STARTADDR_Y + proReg, pVia->swov.SWDevice.dwSWPhysicalAddr[DisplayBufferIndex]); VIDOutD(HQV_CONTROL + proReg, @@ -1019,7 +1021,8 @@ Flip(VIAPtr pVia, viaPortPrivPtr pPriv, int fourcc, break; case FOURCC_YV12: default: - while ((VIDInD(HQV_CONTROL + proReg) & HQV_SW_FLIP)); + while ((VIDInD(HQV_CONTROL + proReg) & HQV_SW_FLIP) + && --count); VIDOutD(HQV_SRC_STARTADDR_Y + proReg, pVia->swov.SWDevice.dwSWPhysicalAddr[DisplayBufferIndex]); if (pVia->VideoEngine == VIDEO_ENGINE_CME) { |