projects
/
matthijs
/
ABM2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* Make every ITask know about the Kernel in which the run.
[matthijs/ABM2.git]
/
ABM2
/
Engine
/
Kernel.cpp
diff --git
a/ABM2/Engine/Kernel.cpp
b/ABM2/Engine/Kernel.cpp
index 173c0d3170de02279f3cc53f1f0193d038ba5103..35d4afce603cc425a1fe83b2275477380459315b 100755
(executable)
--- a/
ABM2/Engine/Kernel.cpp
+++ b/
ABM2/Engine/Kernel.cpp
@@
-25,20
+25,24
@@
CKernel::~CKernel()
\r
int CKernel::Execute()
\r
{
\r
\r
int CKernel::Execute()
\r
{
\r
+#ifdef WIN32
\r
MSG msg;
\r
MSG msg;
\r
+#endif // WIN32
\r
\r
while(taskList.size())
\r
{
\r
{
\r
PROFILE("Kernel task loop");
\r
\r
\r
while(taskList.size())
\r
{
\r
{
\r
PROFILE("Kernel task loop");
\r
\r
-
//
DWORD starting_point = GetTickCount();
\r
+ DWORD starting_point = GetTickCount();
\r
\r
\r
+#ifdef WIN32
\r
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
\r
{
\r
TranslateMessage(&msg);
\r
DispatchMessage(&msg);
\r
}
\r
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
\r
{
\r
TranslateMessage(&msg);
\r
DispatchMessage(&msg);
\r
}
\r
+#endif // WIN32
\r
\r
\r
std::list< CMMPointer<ITask> >::iterator it, thisIt;
\r
\r
\r
std::list< CMMPointer<ITask> >::iterator it, thisIt;
\r
@@
-62,8
+66,10
@@
int CKernel::Execute()
}
\r
}
\r
IMMObject::CollectGarbage();
\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 + 50 > end_point)
\r
+ Sleep(50 - (end_point-starting_point));
\r
}
\r
#ifdef _DEBUG
\r
CProfileSample::Output();
\r
}
\r
#ifdef _DEBUG
\r
CProfileSample::Output();
\r
@@
-73,7
+79,7
@@
int CKernel::Execute()
return 0;
\r
}
\r
\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
{
\r
if(!t->Start())return false;
\r
\r
@@
-88,7
+94,7
@@
bool CKernel::AddTask(CMMPointer<ITask> &t)
return true;
\r
}
\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
//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
@@
-99,7
+105,7
@@
void CKernel::SuspendTask(CMMPointer<ITask> &t)
}
\r
}
\r
\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
if(std::find(pausedTaskList.begin(),pausedTaskList.end(),t)!=pausedTaskList.end())
\r
{
\r
@@
-116,7
+122,7
@@
void CKernel::ResumeTask(CMMPointer<ITask> &t)
}
\r
}
\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
if(std::find(taskList.begin(),taskList.end(),t)!=taskList.end())
\r
{
\r