mirror of https://github.com/PCSX2/pcsx2.git
gsdx: try to protect more code when togging f9
deassert gsopen_done before delete the gs object. Compiler and CPU will reordonate the store (or not because it is a global variable). Probably not perfect but better. Got a crash on GSKeyEvent which I guess wasn't thread safe. So let's ensure gs is open.
This commit is contained in:
parent
cdba010794
commit
9ac9307b44
|
@ -148,6 +148,8 @@ EXPORT_C_(int) GSinit()
|
||||||
|
|
||||||
EXPORT_C GSshutdown()
|
EXPORT_C GSshutdown()
|
||||||
{
|
{
|
||||||
|
gsopen_done = false;
|
||||||
|
|
||||||
delete s_gs;
|
delete s_gs;
|
||||||
|
|
||||||
s_gs = NULL;
|
s_gs = NULL;
|
||||||
|
@ -164,12 +166,12 @@ EXPORT_C GSshutdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gsopen_done = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_C GSclose()
|
EXPORT_C GSclose()
|
||||||
{
|
{
|
||||||
|
gsopen_done = false;
|
||||||
|
|
||||||
if(s_gs == NULL) return;
|
if(s_gs == NULL) return;
|
||||||
|
|
||||||
s_gs->ResetDevice();
|
s_gs->ResetDevice();
|
||||||
|
@ -184,8 +186,6 @@ EXPORT_C GSclose()
|
||||||
{
|
{
|
||||||
s_gs->m_wnd->Detach();
|
s_gs->m_wnd->Detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
gsopen_done = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _GSopen(void** dsp, char* title, int renderer, int threads = -1)
|
static int _GSopen(void** dsp, char* title, int renderer, int threads = -1)
|
||||||
|
@ -681,6 +681,7 @@ EXPORT_C GSkeyEvent(GSKeyEventData* e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
if (gsopen_done)
|
||||||
s_gs->KeyEvent(e);
|
s_gs->KeyEvent(e);
|
||||||
}
|
}
|
||||||
catch (GSDXRecoverableError)
|
catch (GSDXRecoverableError)
|
||||||
|
|
Loading…
Reference in New Issue