Skip to content

Commit b8a6bd1

Browse files
committed
video: fix PAL60 by moving the encoder setup away from irq handler
1 parent eb450cf commit b8a6bd1

1 file changed

Lines changed: 12 additions & 19 deletions

File tree

libogc/video.c

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1650,7 +1650,6 @@ GXRModeObj TVRgb480ProgAa =
16501650
}
16511651
};
16521652

1653-
16541653
static const u16 taps[26] = {
16551654
0x01F0,0x01DC,0x01AE,0x0174,0x0129,0x00DB,
16561655
0x008E,0x0046,0x000C,0x00E2,0x00CB,0x00C0,
@@ -1758,7 +1757,7 @@ static u16 shdw_regs[60];
17581757
static u32 fbSet = 0;
17591758
static s16 displayOffsetH;
17601759
static s16 displayOffsetV;
1761-
static u32 currTvMode,currRgb,changeMode,changeEncoder;
1760+
static u32 currTvMode,currRgb,changeMode;
17621761
static u32 shdw_changeMode,shdw_changeEncoder,flushFlag;
17631762
static u64 changed,shdw_changed;
17641763
static vu32 retraceCount;
@@ -2513,11 +2512,9 @@ static u32 __VISetupEncoder(void)
25132512
return 0;
25142513
shdw_changeEncoder = 0;
25152514

2516-
u8 dtv, tv, rgb;
2517-
2518-
tv = VIDEO_GetCurrentTvMode();
2519-
dtv = (_viReg[55]&0x01);
2520-
rgb = currRgb;
2515+
u8 tv = VIDEO_GetCurrentTvMode();
2516+
u8 dtv = (_viReg[55]&0x01);
2517+
u8 rgb = currRgb;
25212518
oldDtvStatus = dtv;
25222519

25232520
__VISetOutputEnable(false);
@@ -2741,15 +2738,9 @@ static void __VIRetraceHandler(u32 nIrq,void *pCtx)
27412738
if(preRetraceCB)
27422739
preRetraceCB(retraceCount);
27432740

2744-
if(flushFlag) {
2745-
u32 flushed = __VISetRegs();
2746-
#if defined(HW_RVL)
2747-
flushed |= __VISetupEncoder();
2748-
#endif
2749-
if(flushed) {
2750-
flushFlag = 0;
2751-
SI_RefreshSamplingRate();
2752-
}
2741+
if(flushFlag && __VISetRegs()) {
2742+
flushFlag = 0;
2743+
SI_RefreshSamplingRate();
27532744
}
27542745
#if defined(HW_RVL)
27552746
tv = VIDEO_GetCurrentTvMode();
@@ -2882,7 +2873,7 @@ void VIDEO_Configure(GXRModeObj *rmode)
28822873
HorVer.tv = _SHIFTR(rmode->viTVMode,2,3);
28832874
rgb = rmode->rgb;
28842875
if(rgb!=HorVer.rgb) {
2885-
changeEncoder = 1;
2876+
shdw_changeEncoder = 1;
28862877
changeMode = 1;
28872878
HorVer.rgb = rgb;
28882879
}
@@ -2941,6 +2932,10 @@ void VIDEO_Configure(GXRModeObj *rmode)
29412932
#ifdef _VIDEO_DEBUG
29422933
printDebugCalculations();
29432934
#endif
2935+
2936+
#if defined(HW_RVL)
2937+
__VISetupEncoder();
2938+
#endif
29442939
_CPU_ISR_Restore(level);
29452940
}
29462941

@@ -3014,8 +3009,6 @@ void VIDEO_Flush(void)
30143009
_CPU_ISR_Disable(level);
30153010
shdw_changeMode |= changeMode;
30163011
changeMode = 0;
3017-
shdw_changeEncoder |= changeEncoder;
3018-
changeEncoder = 0;
30193012

30203013
shdw_changed |= changed;
30213014
while(changed) {

0 commit comments

Comments
 (0)