Mercurial > hg > Game > Cerium
view TaskManager/Cell/spe/TaskGroup.cc @ 180:e3b7776b1420 draft
いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
author | gongo@localhost.localdomain |
---|---|
date | Mon, 22 Dec 2008 16:09:57 +0900 |
parents | 028ffc9c0375 |
children |
line wrap: on
line source
#include "TaskGroup.h" void TaskGroup::add(TaskPtr add_task) { TaskQueuePtr q = new TaskQueue(add_task); group = TaskQueue::append(group, q); } void TaskGroup::remove(TaskPtr delete_task) { TaskQueuePtr p = group; TaskQueuePtr p1; if (p == NULL) return; if (p->task == delete_task) { group = group->next; delete p; } else { p1 = p->next; while (p1 && p1->task != delete_task) { p1 = p1->next; p = p->next; } if (p1) { p->next = p1->next; delete p1; } } } /** * 自分が持つ TaskGroup に Task が残っていれば NULL を返す。 * もう全てのタスクが終了していれば、この TaskGroup を作った * (一番最初にタスク内タスク生成を行った)タスクが PPE に返すべきだった * command を返す。 */ unsigned int TaskGroup::status(void) { /** * bool の * true == 1; * false == 0; * って保証されてるんだっけ? */ #if 1 return (group == NULL) * command; #else if (group.empty()) { return command; } else { return 0; } #endif }