bkaradzic 13 лет назад
Родитель
Сommit
63a76ae99d
5 измененных файлов с 22 добавлено и 45 удалено
  1. 12 2
      src/bgfx.cpp
  2. 10 6
      src/bgfx_p.h
  3. 0 15
      src/renderer_d3d9.cpp
  4. 0 19
      src/renderer_gl.cpp
  5. 0 3
      src/renderer_null.cpp

+ 12 - 2
src/bgfx.cpp

@@ -528,10 +528,10 @@ namespace bgfx
 		s_ctx.frame();
 	}
 
-	void renderFrame()
+	bool renderFrame()
 	{
 		BGFX_RENDER_THREAD();
-		s_ctx.renderFrame();
+		return s_ctx.renderFrame();
 	}
 
 	static const uint32_t s_attribTypeSize[AttribType::Count] =
@@ -730,6 +730,16 @@ namespace bgfx
 		m_render->destroy();
 	}
 
+#if BX_PLATFORM_WINDOWS
+	DWORD WINAPI renderThread(LPVOID)
+#else
+	void* renderThread(void*)
+#endif // BX_PLATFORM_WINDOWS
+	{
+		while (!renderFrame() );
+		return EXIT_SUCCESS;
+	}
+
 	const Memory* alloc(uint32_t _size)
 	{
 		Memory* mem = (Memory*)g_realloc(NULL, sizeof(Memory) + _size);

+ 10 - 6
src/bgfx_p.h

@@ -114,11 +114,10 @@ namespace bgfx
 	extern freeFn g_free;
 	extern cacheFn g_cache;
 
-	extern void fatal(bgfx::Fatal::Enum _code, const char* _format, ...);
-	extern void release(Memory* _mem);
-	extern void saveTga(const char* _filePath, uint32_t _width, uint32_t _height, uint32_t _pitch, const void* _data);
-	extern const char* getAttribName(Attrib::Enum _attr);
-	extern void renderFrame();
+	void fatal(bgfx::Fatal::Enum _code, const char* _format, ...);
+	void release(Memory* _mem);
+	void saveTga(const char* _filePath, uint32_t _width, uint32_t _height, uint32_t _pitch, const void* _data);
+	const char* getAttribName(Attrib::Enum _attr);
 
 	inline uint32_t uint16_min(uint16_t _a, uint16_t _b)
 	{
@@ -1324,6 +1323,7 @@ namespace bgfx
 			, m_frames(0)
 			, m_debug(BGFX_DEBUG_NONE)
 			, m_rendererInitialized(false)
+			, m_exit(false)
 		{
 		}
 
@@ -1880,7 +1880,7 @@ namespace bgfx
 		void flip();
 
 		// render thread
-		void renderFrame()
+		bool renderFrame()
 		{
 			flip();
 
@@ -1894,6 +1894,8 @@ namespace bgfx
 			rendererExecCommands(m_render->m_cmdPost);
 
 			renderSemPost();
+
+			return m_exit;
 		}
 
 		void rendererInit();
@@ -1972,6 +1974,7 @@ namespace bgfx
 					{
 						rendererShutdown();
 						m_rendererInitialized = false;
+						m_exit = true;
 					}
 					break;
 
@@ -2544,6 +2547,7 @@ namespace bgfx
 #endif // BX_PLATFORM_WINDOWS
 
 		bool m_rendererInitialized;
+		bool m_exit;
 	};
 
 } // namespace bgfx

+ 0 - 15
src/renderer_d3d9.cpp

@@ -1158,20 +1158,6 @@ namespace bgfx
 		DX_CHECK(s_renderCtx.m_device->SetTexture(_stage, m_colorTexture) );
 	}
 	
-	static bool s_exit = false;
-
-	DWORD WINAPI renderThread(LPVOID _arg)
-	{
-		while (!s_exit)
-		{			
-			renderFrame();
-		}
-
-		s_exit = false;
-
-		return EXIT_SUCCESS;
-	}
-
 	void ConstantBuffer::commit(bool _force)
 	{
 		reset();
@@ -1316,7 +1302,6 @@ namespace bgfx
 	void Context::rendererShutdown()
 	{
 		s_renderCtx.shutdown();
-		s_exit = true;
 	}
 
 	void Context::rendererCreateIndexBuffer(IndexBufferHandle _handle, Memory* _mem)

+ 0 - 19
src/renderer_gl.cpp

@@ -1210,8 +1210,6 @@ namespace bgfx
 		m_depth.destroy();
 	}
 
-	static bool s_exit = false;
-
 	void ConstantBuffer::commit(bool _force)
 	{
 		reset();
@@ -1444,7 +1442,6 @@ namespace bgfx
 
 	void Context::rendererShutdown()
 	{
-		s_exit = true;
 	}
 
 	void Context::rendererCreateIndexBuffer(IndexBufferHandle _handle, Memory* _mem)
@@ -2137,22 +2134,6 @@ namespace bgfx
 
 		GREMEDY_FRAMETERMINATOR();
 	}
-
-#if BX_PLATFORM_WINDOWS
-	DWORD WINAPI renderThread(LPVOID)
-#else
-	void* renderThread(void*)
-#endif // BX_PLATFORM_WINDOWS
-	{
-		while (!s_exit)
-		{
-			renderFrame();
-		}
-
-		s_exit = false;
-		return 0;
-	}
-
 }
 
 #endif // (BGFX_CONFIG_RENDERER_OPENGLES|BGFX_CONFIG_RENDERER_OPENGL)

+ 0 - 3
src/renderer_null.cpp

@@ -9,8 +9,6 @@
 
 namespace bgfx
 {
-	static bool s_exit = false;
-
 	void ConstantBuffer::commit(bool _force)
 	{
 	}
@@ -33,7 +31,6 @@ namespace bgfx
 
 	void Context::rendererShutdown()
 	{
-		s_exit = true;
 	}
 
 	void Context::rendererCreateIndexBuffer(IndexBufferHandle _handle, Memory* _mem)