summaryrefslogtreecommitdiff
path: root/src/via_video.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/via_video.c')
-rw-r--r--src/via_video.c7
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) {