diff --git a/source/anim/DynamicModelProvider.cpp b/source/anim/DynamicModelProvider.cpp index 7e85e07760c6fd57f1913dd9b0efec8803d830c0..e83f4bf877a2474cf1952e4ceee882099377499f 100644 --- a/source/anim/DynamicModelProvider.cpp +++ b/source/anim/DynamicModelProvider.cpp @@ -353,8 +353,8 @@ void CDynamicModelProvider::computeVisibility(const IFrustum *pFrustum, CRendera pVisibility->resetItemTransparentDynamic(); #if 1 CVisUpdate cycle(pFrustum, pVisibility, pReference, m_apModels); - ID id = m_pCore->getAsyncTaskRunner()->forLoop(0, m_apModels.size(), &cycle, 500); - m_pCore->getAsyncTaskRunner()->waitForLoop(id); + ID id = m_pCore->forLoop(0, m_apModels.size(), &cycle, 500); + m_pCore->waitForLoop(id); #else CDynamicModel *pMdl; for(UINT i = 0, l = m_apModels.size(); i < l; ++i) diff --git a/source/core/AsyncTaskRunner.cpp b/source/core/AsyncTaskRunner.cpp index 8c407ce60a3d413093b379795eb7fc3c8df83504..56d116c4464d3d73381b808ae38e2f3adaf8afa0 100644 --- a/source/core/AsyncTaskRunner.cpp +++ b/source/core/AsyncTaskRunner.cpp @@ -154,12 +154,3 @@ void XMETHODCALLTYPE CAsyncTaskRunner::runCallbacks() g_pTaskManager->addTask(m_vpQueue[0]); } } - -ID XMETHODCALLTYPE CAsyncTaskRunner::forLoop(int iStart, int iEnd, const IParallelForBody *pBody, int iMaxChunkSize) -{ - return(g_pTaskManager->forLoop(iStart, iEnd, pBody, iMaxChunkSize)); -} -void XMETHODCALLTYPE CAsyncTaskRunner::waitForLoop(ID id) -{ - g_pTaskManager->waitFor(id); -} diff --git a/source/core/AsyncTaskRunner.h b/source/core/AsyncTaskRunner.h index 9d2a2ea298df20f106ca82bda1ac282be2218486..8b5275246f7894d893ab46339a67c5890d0d8e81 100644 --- a/source/core/AsyncTaskRunner.h +++ b/source/core/AsyncTaskRunner.h @@ -15,9 +15,6 @@ public: void XMETHODCALLTYPE runTask(IAsyncTask *pTask) override; void XMETHODCALLTYPE runCallbacks() override; - ID XMETHODCALLTYPE forLoop(int iStart, int iEnd, const IParallelForBody *pBody, int iMaxChunkSize = 0) override; - void XMETHODCALLTYPE waitForLoop(ID id) override; - protected: IXCore *m_pCore; diff --git a/source/core/Core.cpp b/source/core/Core.cpp index 873c88080f7c0b43035ce50cdf3f42ed8c0e88e8..00b3ed8f9e5d835ea5e643a62773c200b2799ca8 100644 --- a/source/core/Core.cpp +++ b/source/core/Core.cpp @@ -205,11 +205,11 @@ IXResourceManager* XMETHODCALLTYPE CCore::getResourceManager() return(m_pResourceManager); } -IAsyncFileReader* XMETHODCALLTYPE CCore::getAsyncFileReader() +IAsyncFileReader* XMETHODCALLTYPE CCore::newAsyncFileReader() { return(new CAsyncFileReader(this)); } -IAsyncTaskRunner* XMETHODCALLTYPE CCore::getAsyncTaskRunner() +IAsyncTaskRunner* XMETHODCALLTYPE CCore::newAsyncTaskRunner() { return(new CAsyncTaskRunner(this)); } @@ -450,6 +450,15 @@ const bool* XMETHODCALLTYPE CCore::getPCVarBool(const char *szName) return(GET_PCVAR_BOOL(szName)); } +ID XMETHODCALLTYPE CCore::forLoop(int iStart, int iEnd, const IParallelForBody *pBody, int iMaxChunkSize) +{ + return(g_pTaskManager->forLoop(iStart, iEnd, pBody, iMaxChunkSize)); +} +void XMETHODCALLTYPE CCore::waitForLoop(ID id) +{ + g_pTaskManager->waitFor(id); +} + //########################################################################## C SXCORE_API IXCore* XCoreInit(const char *szName) diff --git a/source/core/Core.h b/source/core/Core.h index c2e44f4db40256dca7b2bda0771437ada6111ac7..3f00fe8f0c0d0ba7a4c5001f977f1896d5db9981 100644 --- a/source/core/Core.h +++ b/source/core/Core.h @@ -23,8 +23,8 @@ public: IFileSystem* XMETHODCALLTYPE getFileSystem() override; IXResourceManager* XMETHODCALLTYPE getResourceManager() override; - IAsyncFileReader* XMETHODCALLTYPE getAsyncFileReader() override; - IAsyncTaskRunner* XMETHODCALLTYPE getAsyncTaskRunner() override; + IAsyncFileReader* XMETHODCALLTYPE newAsyncFileReader() override; + IAsyncTaskRunner* XMETHODCALLTYPE newAsyncTaskRunner() override; void XMETHODCALLTYPE getRenderPipeline(IXRenderPipeline **ppRenderPipeline) override; void XMETHODCALLTYPE setRenderPipeline(IXRenderPipeline *pRenderPipeline) override; @@ -50,6 +50,9 @@ public: const float* XMETHODCALLTYPE getPCVarFloat(const char *szName) override; const bool* XMETHODCALLTYPE getPCVarBool(const char *szName) override; + ID XMETHODCALLTYPE forLoop(int iStart, int iEnd, const IParallelForBody *pBody, int iMaxChunkSize = 0) override; + void XMETHODCALLTYPE waitForLoop(ID id) override; + protected: IBaseEventChannel* getEventChannelInternal(const XGUID &guid) override; diff --git a/source/game/GameData.cpp b/source/game/GameData.cpp index 54a1292b7aeef0536c57104c22f9b9f6a72e7c36..ecd362f7a648083e5de6143769f3418611b00133 100644 --- a/source/game/GameData.cpp +++ b/source/game/GameData.cpp @@ -449,7 +449,7 @@ GameData::GameData(HWND hWnd, bool isGame): pSun->setDirection(SMQuaternion(LIGHTS_DIR_BASE, float3(1.0f, -1.0f, 1.0f))); } - g_pAsyncTaskRunner = Core_GetIXCore()->getAsyncTaskRunner(); + g_pAsyncTaskRunner = Core_GetIXCore()->newAsyncTaskRunner(); Core_0RegisterConcmd("+forward", ccmd_forward_on); Core_0RegisterConcmd("-forward", ccmd_forward_off); diff --git a/source/xEngine/Engine.cpp b/source/xEngine/Engine.cpp index 8ac1a687d138d033f58330c8adafddf2f67642af..1277e7c9e84b33ee20c2587af44e63e4d0ca9303 100644 --- a/source/xEngine/Engine.cpp +++ b/source/xEngine/Engine.cpp @@ -239,7 +239,6 @@ bool CEngine::runFrame() SSInput_Update(); - // draw frame { static IGXDevice *pRenderContext = SGCore_GetDXDevice(); diff --git a/source/xcommon/IAsyncTaskRunner.h b/source/xcommon/IAsyncTaskRunner.h index b98b32220eb5cff5300cfb51cd7c82f33a226b89..54718fb27fb0e8ba706bbc8509947a7542f22484 100644 --- a/source/xcommon/IAsyncTaskRunner.h +++ b/source/xcommon/IAsyncTaskRunner.h @@ -34,9 +34,6 @@ class IAsyncTaskRunner: public IXUnknown public: virtual void XMETHODCALLTYPE runTask(IAsyncTask *pTask) = 0; virtual void XMETHODCALLTYPE runCallbacks() = 0; - - virtual ID XMETHODCALLTYPE forLoop(int iStart, int iEnd, const IParallelForBody *pBody, int iMaxChunkSize = 0) = 0; - virtual void XMETHODCALLTYPE waitForLoop(ID id) = 0; }; #endif diff --git a/source/xcommon/IXCore.h b/source/xcommon/IXCore.h index 113aac443196e133a4dee76e3824d55237ce6a4c..935df0d187c432dd5fcb3d21c334e038a301c51e 100644 --- a/source/xcommon/IXCore.h +++ b/source/xcommon/IXCore.h @@ -22,8 +22,8 @@ public: virtual IFileSystem* XMETHODCALLTYPE getFileSystem() = 0; virtual IXResourceManager* XMETHODCALLTYPE getResourceManager() = 0; - virtual IAsyncFileReader* XMETHODCALLTYPE getAsyncFileReader() = 0; - virtual IAsyncTaskRunner* XMETHODCALLTYPE getAsyncTaskRunner() = 0; + virtual IAsyncFileReader* XMETHODCALLTYPE newAsyncFileReader() = 0; + virtual IAsyncTaskRunner* XMETHODCALLTYPE newAsyncTaskRunner() = 0; virtual void XMETHODCALLTYPE getRenderPipeline(IXRenderPipeline **ppRenderPipeline) = 0; virtual void XMETHODCALLTYPE setRenderPipeline(IXRenderPipeline *pRenderPipeline) = 0; @@ -47,6 +47,9 @@ public: virtual const float* XMETHODCALLTYPE getPCVarFloat(const char *szName) = 0; virtual const bool* XMETHODCALLTYPE getPCVarBool(const char *szName) = 0; + virtual ID XMETHODCALLTYPE forLoop(int iStart, int iEnd, const IParallelForBody *pBody, int iMaxChunkSize = 0) = 0; + virtual void XMETHODCALLTYPE waitForLoop(ID id) = 0; + template<typename T> IEventChannel<T> *getEventChannel(const XGUID &guid) { return((IEventChannel<T>*)getEventChannelInternal(guid));