Fixed crash bug when running Cpu Config before starting emulation of a game.

Enforced correct propagation of the GS window handle to pad plugins on Esc/Resume.

git-svn-id: http://pcsx2-playground.googlecode.com/svn/trunk@584 a6443dda-0b58-4228-96e9-037be469359c
This commit is contained in:
Jake.Stine 2009-01-13 15:41:41 +00:00 committed by Gregory Hainaut
parent 787739fd49
commit 664cfd3491
3 changed files with 14 additions and 6 deletions

View File

@ -705,7 +705,6 @@ int OpenPlugins(const char* pTitleFilename) {
cdvdNewDiskCB();
}
// GS isn't closed during emu pauses, so only open it once per instance.
if( !OpenStatus.GS ) {
ret = gsOpen();
if (ret != 0) { Msgbox::Alert("Error Opening GS Plugin"); goto OpenError; }
@ -801,7 +800,7 @@ OpenError:
void ClosePlugins()
{
// GS plugin is special and is not closed during emulation pauses.
// GS plugin is special and is not always closed during emulation pauses.
// (that's because the GS is the most complicated plugin and to close it would
// require we save the GS state -- plus, Gsdx doesn't really support being
// closed)
@ -809,13 +808,14 @@ void ClosePlugins()
if( OpenStatus.GS )
mtgsWaitGS();
CLOSE_PLUGIN( PAD1 );
CLOSE_PLUGIN( PAD2 );
CLOSE_PLUGIN( CDVD );
CLOSE_PLUGIN( DEV9 );
CLOSE_PLUGIN( USB );
CLOSE_PLUGIN( FW );
CLOSE_PLUGIN( SPU2 );
CLOSE_PLUGIN( PAD1 );
CLOSE_PLUGIN( PAD2 );
}
void ResetPlugins()
@ -849,12 +849,20 @@ void ReleasePlugins()
void PluginsResetGS()
{
CLOSE_PLUGIN( PAD1 );
CLOSE_PLUGIN( PAD2 );
if( OpenStatus.GS )
{
gsClose();
OpenStatus.GS = false;
}
if( OpenStatus.PAD1 )
{
PAD1close();
}
GSshutdown();
int ret = GSinit();

View File

@ -167,7 +167,7 @@ BOOL CALLBACK CpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam)
}
Config.Options = newopts;
}
else
else if( R5900::Cpu != NULL )
R5900::UpdateVSyncRate();
SaveConfig();

View File

@ -1539,7 +1539,7 @@ void recompileNextInstruction(int delayslot)
}
}
opcode.recompile();
s_nBlockCycles += (opcode.cycles==0) ? 6 : opcode.cycles;
s_nBlockCycles += opcode.cycles;
}
if( !delayslot ) {