# HG changeset patch # User game@henri.cr.ie.u-ryukyu.ac.jp # Date 1253678403 -32400 # Node ID 25f44290b8a9fd478647efb28c7f9eacb51b0ab6 # Parent 96608899d1d3a94f635417302fa6d4db07d85a50 add task/SendKey diff -r 96608899d1d3 -r 25f44290b8a9 TaskManager/Test/test_render/Func.h --- a/TaskManager/Test/test_render/Func.h Mon Sep 21 20:00:12 2009 +0900 +++ b/TaskManager/Test/test_render/Func.h Wed Sep 23 13:00:03 2009 +0900 @@ -28,6 +28,7 @@ RUN_FINISH, SHOW_TIME, + SEND_KEY, }; #define DATA_ID 0 diff -r 96608899d1d3 -r 25f44290b8a9 TaskManager/Test/test_render/task/SendKey.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TaskManager/Test/test_render/task/SendKey.cpp Wed Sep 23 13:00:03 2009 +0900 @@ -0,0 +1,11 @@ +#include "SendKey.h" +#include "TaskManager.h" + +SchedDefineTask(SendKey); + +int +SendKey::run(void *rbuf, void *wbuf) +{ + + return 0; +} diff -r 96608899d1d3 -r 25f44290b8a9 TaskManager/Test/test_render/task/SendKey.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TaskManager/Test/test_render/task/SendKey.h Wed Sep 23 13:00:03 2009 +0900 @@ -0,0 +1,13 @@ +#ifndef INCLUDED_TASK_SEND_KEY +#define INCLUDED_TASK_SEND_KEY + +#include "SchedTask.h" + +class SendKey : public SchedTask { +public: + SchedConstructor(SendKey); + + int run(void *r, void *w); +}; + +#endif diff -r 96608899d1d3 -r 25f44290b8a9 TaskManager/Test/test_render/task/task_init.cpp --- a/TaskManager/Test/test_render/task/task_init.cpp Mon Sep 21 20:00:12 2009 +0900 +++ b/TaskManager/Test/test_render/task/task_init.cpp Wed Sep 23 13:00:03 2009 +0900 @@ -20,6 +20,7 @@ SchedExternTask(Dummy); SchedExternTask(ShowTime); +SchedExternTask(SendKey); /** @@ -45,5 +46,7 @@ SchedRegisterTask(TASK_DRAW, Draw); SchedRegisterTask(TASK_DUMMY, Dummy); + SchedRegisterTask(SHOW_TIME, ShowTime); + SchedRegisterTask(SEND_KEY, SendKey); } diff -r 96608899d1d3 -r 25f44290b8a9 TaskManager/Test/test_render/viewer.cpp --- a/TaskManager/Test/test_render/viewer.cpp Mon Sep 21 20:00:12 2009 +0900 +++ b/TaskManager/Test/test_render/viewer.cpp Wed Sep 23 13:00:03 2009 +0900 @@ -11,10 +11,12 @@ #include #include "Pad.h" -static void post2runLoop(void *viewer); -static void post2runDraw(void *viewer); +static void post2runLoop(void *viewer_); +static void post2runDraw(void *viewer_); +static void post2speRunLoop(void *viewer_); //static void post2runMove(void *viewer); //static void post2exchange_sgroot(void *viewer); +static void post2speRunLoop(void *viewer_); /* measure for FPS (Frame Per Second) */ @@ -228,10 +230,76 @@ { HTaskPtr task_next = initLoop(); - // post2runLoop は旧バージョン用なので post2runspeLoop の様なものを別につくるべき - task_next->set_post(post2runLoop, (void *)this); // set_post(function(this->run_loop()), NULL) + // post2runLoop は旧バージョン用なので post2speRunLoop の様なものを別につくるべき + task_next->set_post(post2speRunLoop, (void*)this); // set_post(function(this->run_loop()), NULL) task_next->spawn(); // TASK_INIT_TEXTURE が全て終わったら DUMMY_TASK が Viewer::run_loop() を呼ぶ + + /* test */ + HTaskPtr task_switch = manager->create_task(TASK_SWITCH); + task_switch->wait_for(task_next); + task_switch->set_post(post2runMoveDrawLoop, (void*)this); +} + + +static void +post2runMoveDrawLoop(void *viewer_) +{ + Viewer *viewer = (Viewer*)viewer_; + + HTaskPtr send_key_task = viewer->manager->create_task(SEND_KEY); + + HTaskPtr move_task = viewer->manager->create_task(MOVE_TASK); + move_task->add_param(sgroot); + + HTaskPtr draw_task = viewer->manager->create_task(DRAW_TASK); + + HTaskPtr switch_task = viewer->manager->create_task(SWITCH_TASK); + switch_task->wait_for(move_task); + switch_task->wait_for(draw_task); + send_key_task->spawn(); + move_task->spawn(); + draw_task->spawn(); + + switch_task->set_post(post2runMoveDrawLoop, (void*)viewer); + switch_task->spawn(); + +} + +static void +post2speRunLoop(void *viewer_) +{ + Viewer *viewer = viewer_; + HTaskPtr task_next = viewer->manager->create_task(TASK_DUMMY); + viewer->run_move(task_next); +} + +void +Viewer::spe_run_loop() +{ + + bool quit_flg; + quit_flg = quit_check(); + if (quit_flg == true) { + this_time = get_ticks(); + run_finish(); + return; + } + + clean_pixels(); + + for (int i = 1; i <= spackList_length; i++) { + spackList[i-1].reinit(i*split_screen_h); + } + + //run_move(task_next); + sgroot->updateControllerState(); + sgroot->speExecute(width, height); + //sgroot->checkRemove(); + + // ここから下は Rendering という関数にする + rendering(task_next); + } void @@ -265,6 +333,16 @@ } */ +/* +void +Viewer::spe_run_move(HTaskPtr task_next) +{ + HTaskPtr move_task = manager->create_task(MOVE_TASK); + move_task->add_param(sgroot); + task_next->wait_for(move_task); +} +*/ + static void post2runMove(void *viewer_) {