about summary refs log tree commit diff
path: root/src/engine/client
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2011-12-31 10:29:25 +0100
committerMagnus Auvinen <magnus.auvinen@gmail.com>2011-12-31 10:29:25 +0100
commitb31abc40537bff7e159091ff61d5af442296c4d9 (patch)
tree191d77ac4d6104e882ef8c7e14ba7b38b8c2bb6b /src/engine/client
parent4e923442e48bd78617061afe9da0ed5bf5d1fa02 (diff)
downloadzcatch-b31abc40537bff7e159091ff61d5af442296c4d9.tar.gz
zcatch-b31abc40537bff7e159091ff61d5af442296c4d9.zip
fixed so that you can select graphics backend via gfx_threaded
Diffstat (limited to 'src/engine/client')
-rw-r--r--src/engine/client/client.cpp23
-rw-r--r--src/engine/client/graphics.cpp2
-rw-r--r--src/engine/client/graphics_threaded.cpp2
3 files changed, 17 insertions, 10 deletions
diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp
index 53f60fa8..b54b9084 100644
--- a/src/engine/client/client.cpp
+++ b/src/engine/client/client.cpp
@@ -1676,7 +1676,7 @@ void CClient::InitInterfaces()
 	// fetch interfaces
 	m_pEngine = Kernel()->RequestInterface<IEngine>();
 	m_pEditor = Kernel()->RequestInterface<IEditor>();
-	m_pGraphics = Kernel()->RequestInterface<IEngineGraphics>();
+	//m_pGraphics = Kernel()->RequestInterface<IEngineGraphics>();
 	m_pSound = Kernel()->RequestInterface<IEngineSound>();
 	m_pGameClient = Kernel()->RequestInterface<IGameClient>();
 	m_pInput = Kernel()->RequestInterface<IEngineInput>();
@@ -1698,10 +1698,21 @@ void CClient::Run()
 	m_SnapshotParts = 0;
 
 	// init graphics
-	if(m_pGraphics->Init() != 0)
 	{
-		dbg_msg("client", "couldn't init graphics");
-		return;
+		if(g_Config.m_GfxThreaded)
+			m_pGraphics = CreateEngineGraphicsThreaded();
+		else
+			m_pGraphics = CreateEngineGraphics();
+
+		bool RegisterFail = false;
+		RegisterFail = RegisterFail || !Kernel()->RegisterInterface(static_cast<IEngineGraphics*>(m_pGraphics)); // register graphics as both
+		RegisterFail = RegisterFail || !Kernel()->RegisterInterface(static_cast<IGraphics*>(m_pGraphics));
+
+		if(RegisterFail || m_pGraphics->Init() != 0)
+		{
+			dbg_msg("client", "couldn't init graphics");
+			return;
+		}
 	}
 
 	// open socket
@@ -2220,7 +2231,6 @@ int main(int argc, const char **argv) // ignore_convention
 	IConsole *pConsole = CreateConsole(CFGFLAG_CLIENT);
 	IStorage *pStorage = CreateStorage("Teeworlds", argc, argv); // ignore_convention
 	IConfig *pConfig = CreateConfig();
-	IEngineGraphics *pEngineGraphics = CreateEngineGraphics();
 	IEngineSound *pEngineSound = CreateEngineSound();
 	IEngineInput *pEngineInput = CreateEngineInput();
 	IEngineTextRender *pEngineTextRender = CreateEngineTextRender();
@@ -2234,9 +2244,6 @@ int main(int argc, const char **argv) // ignore_convention
 		RegisterFail = RegisterFail || !pKernel->RegisterInterface(pConsole);
 		RegisterFail = RegisterFail || !pKernel->RegisterInterface(pConfig);
 
-		RegisterFail = RegisterFail || !pKernel->RegisterInterface(static_cast<IEngineGraphics*>(pEngineGraphics)); // register graphics as both
-		RegisterFail = RegisterFail || !pKernel->RegisterInterface(static_cast<IGraphics*>(pEngineGraphics));
-
 		RegisterFail = RegisterFail || !pKernel->RegisterInterface(static_cast<IEngineSound*>(pEngineSound)); // register as both
 		RegisterFail = RegisterFail || !pKernel->RegisterInterface(static_cast<ISound*>(pEngineSound));
 
diff --git a/src/engine/client/graphics.cpp b/src/engine/client/graphics.cpp
index 03a6e7cd..fda85312 100644
--- a/src/engine/client/graphics.cpp
+++ b/src/engine/client/graphics.cpp
@@ -978,4 +978,4 @@ void CGraphics_SDL::WaitForIdle()
 {
 }
 
-//extern IEngineGraphics *CreateEngineGraphics() { return new CGraphics_SDL(); }
+extern IEngineGraphics *CreateEngineGraphics() { return new CGraphics_SDL(); }
diff --git a/src/engine/client/graphics_threaded.cpp b/src/engine/client/graphics_threaded.cpp
index e702133a..2b9147ff 100644
--- a/src/engine/client/graphics_threaded.cpp
+++ b/src/engine/client/graphics_threaded.cpp
@@ -1293,4 +1293,4 @@ int CGraphics_Threaded::GetVideoModes(CVideoMode *pModes, int MaxModes)
 }
 
 
-extern IEngineGraphics *CreateEngineGraphics() { return new CGraphics_Threaded(); }
+extern IEngineGraphics *CreateEngineGraphicsThreaded() { return new CGraphics_Threaded(); }