OpenGL: Fixed the screen size adjustment by moving it to Render::Swap(), where the final version of the picture is placed

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2344 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
John Peterson
2009-02-21 20:59:30 +00:00
parent ca47268669
commit b4b94fe594
8 changed files with 239 additions and 136 deletions

View File

@ -36,6 +36,12 @@
// This may remove sound artifacts in Wario Land Shake It and perhaps other games
//#define SETUP_AVOID_SOUND_ARTIFACTS
// This may fix a problem with Stop and Start that I described in the comments to revision 2,139
//#define SETUP_FREE_PLUGIN_ON_BOOT
// Use Stop when rendering to a child window
//#define SETUP_AVOID_CHILD_WINDOW_RENDERING_HANG
// Build with playback rerecording options
//#define RERECORDING

View File

@ -242,7 +242,11 @@ void Stop() // - Hammertime!
Core::StopTrace();
LogManager::Shutdown();
Host_SetWaitCursor(false);
#ifdef SETUP_AVOID_CHILD_WINDOW_RENDERING_HANG
/* I have to use this to avoid the hangings, it seems harmless and it works so I'm
okay with it */
if (GetParent((HWND)g_pWindowHandle) == NULL)
#endif
delete g_EmuThread; // Wait for emuthread to close.
g_EmuThread = 0;
}
@ -327,6 +331,10 @@ THREAD_RETURN EmuThread(void *pArg)
VideoInitialize.pKeyPress = Callback_KeyPress;
VideoInitialize.bWii = _CoreParameter.bWii;
VideoInitialize.bUseDualCore = _CoreParameter.bUseDualCore;
// Needed for Stop and Start
#ifdef SETUP_FREE_PLUGIN_ON_BOOT
Plugins.FreeVideo();
#endif
Plugins.GetVideo()->Initialize(&VideoInitialize); // Call the dll
// Under linux, this is an X11 Display, not an HWND!
@ -347,6 +355,10 @@ THREAD_RETURN EmuThread(void *pArg)
dspInit.pGetAudioStreaming = AudioInterface::Callback_GetStreaming;
dspInit.pEmulatorState = (int *)PowerPC::GetStatePtr();
dspInit.bWii = _CoreParameter.bWii;
// Needed for Stop and Start
#ifdef SETUP_FREE_PLUGIN_ON_BOOT
Plugins.FreeDSP();
#endif
Plugins.GetDSP()->Initialize((void *)&dspInit);
// Load and Init PadPlugin

View File

@ -37,6 +37,8 @@
2. Sond plugin: If FreeLibrary() is not called between Stop and Start I got the "Tried to
"get pointer for unknown address ffffffff" message for all games I tried.
Currently this holds if the 'SETUP_FREE_PLUGIN_ON_BOOT' option is used
For some reason the time when the FreeLibrary() is placed produce different results. If it's placed
after ShutDown() I don't get a black screen when I start SSBM (PAL) again, if I have stopped the game
before the first 3D appears (on the start screen), if I show the start screen and then Stop and Start
@ -205,15 +207,21 @@ void CPluginManager::ShutdownPlugins()
if (m_video)
{
m_video->Shutdown();
delete m_video;
m_video = NULL;
// With this option, this is done on boot instead
#ifndef SETUP_FREE_PLUGIN_ON_BOOT
delete m_video;
m_video = NULL;
#endif
}
if (m_dsp)
{
m_dsp->Shutdown();
delete m_dsp;
m_dsp = NULL;
// With this option, this is done on boot instead
#ifndef SETUP_FREE_PLUGIN_ON_BOOT
delete m_dsp;
m_dsp = NULL;
#endif
}
}
//////////////////////////////////////////////
@ -537,4 +545,4 @@ void CPluginManager::OpenDebug(void* _Parent, const char *_rFilename, PLUGIN_TYP
PanicAlert("Type %d debug not supported in plugin %s", Type, _rFilename);
}
}
///////////////////////////////////////////
///////////////////////////////////////////