X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=ABM2%2FEngine%2FKernel.cpp;h=581b96370d7575914071f944d35376e0ae2f34ec;hb=75d4212e8548f64904bad6d7f8978c077e6687d0;hp=42e112bc7f52653f576b32e758c8d68c9ebdcea1;hpb=11384142f7b4616ae227d6bde5b8b50a158e9e3c;p=matthijs%2FABM2.git diff --git a/ABM2/Engine/Kernel.cpp b/ABM2/Engine/Kernel.cpp index 42e112b..581b963 100755 --- a/ABM2/Engine/Kernel.cpp +++ b/ABM2/Engine/Kernel.cpp @@ -25,22 +25,13 @@ CKernel::~CKernel() int CKernel::Execute() { -#ifdef WIN32 - MSG msg; while(taskList.size()) { { PROFILE("Kernel task loop"); - //DWORD starting_point = GetTickCount(); - - if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - + DWORD starting_point = GetTickCount(); std::list< CMMPointer >::iterator it, thisIt; for(it=taskList.begin();it!=taskList.end();) @@ -63,19 +54,20 @@ int CKernel::Execute() } } IMMObject::CollectGarbage(); - //DWORD end_point = GetTickCount(); -// Sleep(50 - (end_point-starting_point)); + DWORD end_point = GetTickCount(); + /* Sleep if we didn't use up too much time already */ + if (starting_point + 250 > end_point) + Sleep(250 - (end_point-starting_point)); } #ifdef _DEBUG CProfileSample::Output(); #endif } -#endif // WIN32 return 0; } -bool CKernel::AddTask(CMMPointer t) +bool CKernel::AddTask(const CMMPointer &t) { if(!t->Start())return false; @@ -90,7 +82,7 @@ bool CKernel::AddTask(CMMPointer t) return true; } -void CKernel::SuspendTask(CMMPointer t) +void CKernel::SuspendTask(const CMMPointer &t) { //check that this task is in our list - we don't want to suspend a task that isn't running if(std::find(taskList.begin(),taskList.end(),t)!=taskList.end()) @@ -101,7 +93,7 @@ void CKernel::SuspendTask(CMMPointer t) } } -void CKernel::ResumeTask(CMMPointer t) +void CKernel::ResumeTask(const CMMPointer &t) { if(std::find(pausedTaskList.begin(),pausedTaskList.end(),t)!=pausedTaskList.end()) { @@ -118,7 +110,7 @@ void CKernel::ResumeTask(CMMPointer t) } } -void CKernel::RemoveTask(CMMPointer t) +void CKernel::RemoveTask(const CMMPointer &t) { if(std::find(taskList.begin(),taskList.end(),t)!=taskList.end()) {