fix screen flicker when going back to menu

This commit is contained in:
dborth 2012-06-28 02:33:07 +00:00
parent 47badafe67
commit 01aea34ca5
2 changed files with 20 additions and 14 deletions

View File

@ -190,8 +190,6 @@ static GXRModeObj NTSC_240p =
} }
}; };
static GXRModeObj TV_Custom;
/* TV Modes table */ /* TV Modes table */
static GXRModeObj *tvmodes[2] = { static GXRModeObj *tvmodes[2] = {
&NTSC_240p, &PAL_240p &NTSC_240p, &PAL_240p
@ -607,6 +605,21 @@ InitGCVideo ()
GX_SetCullMode (GX_CULL_NONE); GX_SetCullMode (GX_CULL_NONE);
} }
void ResetFbWidth(int width, GXRModeObj *rmode)
{
if(rmode->fbWidth == width)
return;
rmode->fbWidth = width;
if(rmode != vmode)
return;
GX_InvVtxCache();
VIDEO_Configure(rmode);
VIDEO_Flush();
}
/**************************************************************************** /****************************************************************************
* ResetVideo_Emu * ResetVideo_Emu
* *
@ -630,12 +643,10 @@ ResetVideo_Emu ()
{ {
rmode = FindVideoMode(); rmode = FindVideoMode();
if (!GCSettings.widescreen) if (GCSettings.widescreen)
{ ResetFbWidth(640, rmode);
memcpy(&TV_Custom, rmode, sizeof(TV_Custom)); else
rmode = &TV_Custom; ResetFbWidth(512, rmode);
rmode->fbWidth = 512;
}
UpdateSampleRate(48130); UpdateSampleRate(48130);
SetSampleRate(); SetSampleRate();

View File

@ -3810,12 +3810,7 @@ MainMenu (int menu)
gameScreenImg = new GuiImage(gameScreen); gameScreenImg = new GuiImage(gameScreen);
gameScreenImg->SetAlpha(192); gameScreenImg->SetAlpha(192);
gameScreenImg->ColorStripe(30); gameScreenImg->ColorStripe(30);
gameScreenImg->SetScaleX(screenwidth/(float)vmode->fbWidth);
if (GCSettings.render > 0 && !GCSettings.widescreen)
gameScreenImg->SetScaleX(screenwidth/(vmode->fbWidth*0.8));
else
gameScreenImg->SetScaleX(screenwidth/(float)vmode->fbWidth);
gameScreenImg->SetScaleY(screenheight/(float)vmode->efbHeight); gameScreenImg->SetScaleY(screenheight/(float)vmode->efbHeight);
} }
else else