[CVS] ati.4.4.0 radeon_video.c,1.2,1.3
Status: Beta
Brought to you by:
volodya
From: <gat...@li...> - 2004-05-20 03:03:54
|
Update of /cvsroot/gatos/ati.4.4.0 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32714 Modified Files: radeon_video.c Log Message: Trying to cleanup.. Still crashes with PutVideo.. Index: radeon_video.c =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/radeon_video.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- radeon_video.c 20 May 2004 01:37:59 -0000 1.2 +++ radeon_video.c 20 May 2004 03:03:43 -0000 1.3 @@ -55,8 +55,6 @@ unsigned short *, int *, int *); -void RADEONResetVideo(ScrnInfoPtr); - static void RADEONVideoTimerCallback(ScrnInfoPtr pScrn, Time now); static void RADEONSetOverlayAlpha(ScrnInfoPtr pScrn, int ov_alpha, int gr_alpha, int alpha_mode); static int RADEONPutVideo(ScrnInfoPtr pScrn, short src_x, short src_y, short drw_x, short drw_y, @@ -170,7 +168,7 @@ void RADEON_board_setmisc(RADEONPortPrivPtr pPriv); void RADEON_MSP_SetEncoding(RADEONPortPrivPtr pPriv); void RADEON_FI1236_SetEncoding(RADEONPortPrivPtr pPriv); -void RADEONSetColorKey(ScrnInfoPtr pScrn, CARD32 pixel); +static void RADEONSetColorKey(ScrnInfoPtr pScrn, CARD32 pixel); static void RADEONResetI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); void RADEONShutdownVideo(ScrnInfoPtr pScrn); void RADEONVIP_reset(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); @@ -756,8 +754,7 @@ } } -void -RADEONResetVideo(ScrnInfoPtr pScrn) +void RADEONResetVideo(ScrnInfoPtr pScrn) { RADEONInfoPtr info = RADEONPTR(pScrn); unsigned char *RADEONMMIO = info->MMIO; @@ -816,6 +813,9 @@ sprintf(tmp, "INSTANCE:%d", pScrn->scrnIndex); pPriv->instance_id = MAKE_ATOM(tmp); + REGION_NULL(pScrn->pScreen, &(pPriv->clip)); + + RADEONWaitForIdleMMIO(pScrn); OUTREG(RADEON_OV0_SCALE_CNTL, 0x80000000); OUTREG(RADEON_OV0_AUTO_FLIP_CNTL, 0); /* maybe */ @@ -2026,37 +2026,6 @@ return adapt; } -/* I really should stick this in miregion */ -static Bool -RegionsEqual(RegionPtr A, RegionPtr B) -{ - int *dataA, *dataB; - int num; - - num = REGION_NUM_RECTS(A); - if(num != REGION_NUM_RECTS(B)) - return FALSE; - - if((A->extents.x1 != B->extents.x1) || - (A->extents.x2 != B->extents.x2) || - (A->extents.y1 != B->extents.y1) || - (A->extents.y2 != B->extents.y2)) - return FALSE; - - dataA = (pointer)REGION_RECTS(A); - dataB = (pointer)REGION_RECTS(B); - - while(num--) { - if((dataA[0] != dataB[0]) || (dataA[1] != dataB[1])) - return FALSE; - dataA += 2; - dataB += 2; - } - - return TRUE; -} - - /* RADEONClipVideo - Takes the dst box in standard X BoxRec form (top and left @@ -3217,7 +3186,7 @@ #endif /* update cliplist */ - if(!RegionsEqual(&pPriv->clip, clipBoxes)) + if(!REGION_EQUAL(pScrn->pScreen, &pPriv->clip, clipBoxes)) { REGION_COPY(pScrn->pScreen, &pPriv->clip, clipBoxes); /* draw these */ @@ -3801,7 +3770,7 @@ /* update cliplist */ - if(!RegionsEqual(&pPriv->clip, clipBoxes)) { + if(!REGION_EQUAL(pScrn->pScreen, &pPriv->clip, clipBoxes)) { REGION_COPY(pScrn->pScreen, &pPriv->clip, clipBoxes); /* draw these */ if(pPriv->autopaint_colorkey)(*info->accel->FillSolidRects)(pScrn, pPriv->colorKey, GXcopy, ~0, |