Core Stop and Start: Added alternative separate thread timer/loop based waiting, instead of same thread loop waiting. You can try it with the SETUP_TIMER_WAITING option in Setup.h.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2375 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
John Peterson
2009-02-22 21:16:12 +00:00
parent 769160dfbd
commit 927815bc9b
16 changed files with 367 additions and 31 deletions

View File

@ -19,6 +19,7 @@
#include "Config.h"
#include "IniFile.h"
#include "svnrev.h"
#include "Setup.h"
#include "Render.h"
@ -768,9 +769,11 @@ void OpenGL_Shutdown()
hRC = NULL; // Set RC To NULL
}
if (hDC && !ReleaseDC(EmuWindow::GetWnd(),hDC)) // Are We Able To Release The DC
if (hDC && !ReleaseDC(EmuWindow::GetWnd(), hDC)) // Are We Able To Release The DC
{
#ifndef SETUP_TIMER_WAITING // This fails
MessageBox(NULL,"Release Device Context Failed.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION);
#endif
hDC = NULL; // Set DC To NULL
}
#elif defined(HAVE_X11) && HAVE_X11

View File

@ -83,7 +83,7 @@ void __Log(const char *fmt, ...)
if (pfLog != NULL && LocalLogFile)
fwrite(Msg, strlen(Msg), 1, pfLog);
Console::Print(Msg);
Console::Print(Msg);
}
@ -100,7 +100,7 @@ void __Log(int type, const char *fmt, ...)
va_end(ap);
g_VideoInitialize.pLog(Msg, FALSE);
Console::Print(Msg);
Console::Print(Msg);
}
#endif

View File

@ -148,6 +148,11 @@ HWND GetParentWnd()
return m_hParent;
}
HWND GetChildParentWnd()
{
return m_hMain;
}
LRESULT CALLBACK WndProc( HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam )
{
HDC hdc;

View File

@ -25,6 +25,7 @@ namespace EmuWindow
HWND GetWnd();
HWND GetParentWnd();
HWND GetChildParentWnd();
HWND Create(HWND hParent, HINSTANCE hInstance, const TCHAR *title);
void Show();
void Close();

View File

@ -299,7 +299,9 @@ void Video_Prepare(void)
void Shutdown(void)
{
Fifo_Shutdown();
TextureConverter::Shutdown();
#ifndef SETUP_TIMER_WAITING // This is not compatible, it crashes after the second Stop
TextureConverter::Shutdown();
#endif
VertexLoaderManager::Shutdown();
VertexShaderCache::Shutdown();
VertexShaderManager::Shutdown();
@ -308,8 +310,14 @@ void Shutdown(void)
VertexManager::Shutdown();
TextureMngr::Shutdown();
OpcodeDecoder_Shutdown();
Renderer::Shutdown();
#ifndef SETUP_TIMER_WAITING // This is not compatible, it may crashes after a Stop
Renderer::Shutdown();
#endif
OpenGL_Shutdown();
#ifdef SETUP_TIMER_WAITING
// Do we ever destroy the window?
EmuWindow::Close();
#endif
}