\r
int CKernel::Execute()\r
{\r
- MSG msg;\r
\r
while(taskList.size())\r
{\r
{\r
PROFILE("Kernel task loop");\r
\r
- //DWORD starting_point = GetTickCount();\r
-\r
- if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))\r
- {\r
- TranslateMessage(&msg);\r
- DispatchMessage(&msg);\r
- }\r
-\r
+ DWORD starting_point = GetTickCount();\r
\r
std::list< CMMPointer<ITask> >::iterator it, thisIt;\r
for(it=taskList.begin();it!=taskList.end();)\r
}\r
}\r
IMMObject::CollectGarbage();\r
- //DWORD end_point = GetTickCount();\r
-// Sleep(50 - (end_point-starting_point));\r
+ DWORD end_point = GetTickCount();\r
+ /* Sleep if we didn't use up too much time already */\r
+ if (starting_point + 250 > end_point)\r
+ Sleep(250 - (end_point-starting_point));\r
}\r
#ifdef _DEBUG\r
CProfileSample::Output();\r
return 0;\r
}\r
\r
-bool CKernel::AddTask(CMMPointer<ITask> &t)\r
+bool CKernel::AddTask(const CMMPointer<ITask> &t)\r
{\r
if(!t->Start())return false;\r
\r
return true;\r
}\r
\r
-void CKernel::SuspendTask(CMMPointer<ITask> &t)\r
+void CKernel::SuspendTask(const CMMPointer<ITask> &t)\r
{\r
//check that this task is in our list - we don't want to suspend a task that isn't running\r
if(std::find(taskList.begin(),taskList.end(),t)!=taskList.end())\r
}\r
}\r
\r
-void CKernel::ResumeTask(CMMPointer<ITask> &t)\r
+void CKernel::ResumeTask(const CMMPointer<ITask> &t)\r
{\r
if(std::find(pausedTaskList.begin(),pausedTaskList.end(),t)!=pausedTaskList.end())\r
{\r
}\r
}\r
\r
-void CKernel::RemoveTask(CMMPointer<ITask> &t)\r
+void CKernel::RemoveTask(const CMMPointer<ITask> &t)\r
{\r
if(std::find(taskList.begin(),taskList.end(),t)!=taskList.end())\r
{\r
{\r
(*it)->canKill=true;\r
}\r
-}
\ No newline at end of file
+}\r