changeset 406:25f44290b8a9

add task/SendKey
author game@henri.cr.ie.u-ryukyu.ac.jp
date Wed, 23 Sep 2009 13:00:03 +0900
parents 96608899d1d3
children 2bf71fc10ed1
files TaskManager/Test/test_render/Func.h TaskManager/Test/test_render/task/SendKey.cpp TaskManager/Test/test_render/task/SendKey.h TaskManager/Test/test_render/task/task_init.cpp TaskManager/Test/test_render/viewer.cpp
diffstat 5 files changed, 110 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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
--- /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;
+}
--- /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
--- 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);
 }
--- 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 <wchar.h>
 #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_)
 {