changeset 397:a4f690f44842

delete manager (in kernel/ppe/TaskManager.h) don't move.
author game@henri.cr.ie.u-ryukyu.ac.jp
date Sun, 20 Sep 2009 18:55:26 +0900
parents d1f1e27d0a12
children e621024b6ef1
files TaskManager/Test/test_render/Camera.cpp TaskManager/Test/test_render/Func.h TaskManager/Test/test_render/SceneGraph.cpp TaskManager/Test/test_render/SceneGraph.h TaskManager/Test/test_render/SceneGraphRoot.cpp TaskManager/Test/test_render/SceneGraphRoot.h TaskManager/Test/test_render/ball_bound.cpp TaskManager/Test/test_render/boss1_action.cpp TaskManager/Test/test_render/chain.cpp TaskManager/Test/test_render/cube_action.cpp TaskManager/Test/test_render/direction.cpp TaskManager/Test/test_render/gaplant.cpp TaskManager/Test/test_render/ieshoot.cpp TaskManager/Test/test_render/init_position.cpp TaskManager/Test/test_render/long_cube.cpp TaskManager/Test/test_render/main.cpp TaskManager/Test/test_render/node.cpp TaskManager/Test/test_render/panel.cpp TaskManager/Test/test_render/post.cpp TaskManager/Test/test_render/show_time.cpp TaskManager/Test/test_render/task/task_init.cpp TaskManager/Test/test_render/universe.cpp TaskManager/Test/test_render/untitled.cpp TaskManager/Test/test_render/vacuum.cpp TaskManager/Test/test_render/viewer.cpp TaskManager/Test/test_render/viewer.h TaskManager/Test/test_render/viewerFB.cpp TaskManager/Test/test_render/viewerFB.h TaskManager/Test/test_render/viewerSDL.cpp TaskManager/Test/test_render/viewerSDL.h TaskManager/kernel/main.cc TaskManager/kernel/ppe/HTask.cc TaskManager/kernel/ppe/HTask.h TaskManager/kernel/ppe/TaskManager.cc TaskManager/kernel/ppe/TaskManager.h
diffstat 35 files changed, 249 insertions(+), 197 deletions(-) [+]
line wrap: on
line diff
--- a/TaskManager/Test/test_render/Camera.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/Camera.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -4,6 +4,7 @@
 #include "sys.h"
 #include "Scheduler.h"
 #include "show_time.h"
+#include "TaskManager.h"
 
 static void
 camera_move(SceneGraphPtr _node, int screen_w, int screen_h)
@@ -29,9 +30,11 @@
      * ここに show_dma_wait 表示をいれようか
      */
 
+    /*
     if (pad->r1.isPush()) {
-	show_time();
+	show_time(manager);
     }
+    */
 
     if (pad->r1.isPush() || pad->r1.isHold()) {
 	node->xyz[2] += 10.0f;
--- a/TaskManager/Test/test_render/Func.h	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/Func.h	Sun Sep 20 18:55:26 2009 +0900
@@ -19,6 +19,8 @@
 //     TASK_DRAW_SPAN2,
      TASK_DRAW_BACK,
      TASK_SET_TEXTURE,
+     TASK_MOVE,
+     TASK_DRAW,
      TASK_DUMMY,
 
      CHAINCAL_TASK,
--- a/TaskManager/Test/test_render/SceneGraph.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/SceneGraph.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -60,16 +60,15 @@
  * @return (1) のアドレス
  */
 static uint32*
-makeTapestry(int tex_w, int tex_h, uint32 *tex_src,
+makeTapestry(TaskManager *manager, int tex_w, int tex_h, uint32 *tex_src,
              int all_pixel_num, int scale_cnt)
 {
-    uint32 *tex_dest;
 
     int t = 0;
     int diff = TEXTURE_SPLIT_PIXEL;
     int p_diff = 1;
 
-    tex_dest = (uint32*)manager->allocate(sizeof(int)*all_pixel_num);
+    uint32 *tex_dest = (uint32*)manager->allocate(sizeof(int)*all_pixel_num);
 
     while (scale_cnt) {
         for (int y = 0; y < tex_h; y += diff) {
@@ -132,7 +131,7 @@
 
 
 /* construct polygon from xmlNode.  */
-SceneGraph::SceneGraph(xmlNodePtr surface)
+SceneGraph::SceneGraph(TaskManager *manager, xmlNodePtr surface)
 {
     init();
 
@@ -145,7 +144,7 @@
     coord_tex = (float*)manager->allocate(sizeof(float)*size*3);
     normal    = (float*)manager->allocate(sizeof(float)*size*3);
 
-    get_data(surface->children);
+    get_data(manager, surface->children);
 
     finalize = &SceneGraph::finalize_original;
 }
@@ -344,7 +343,7 @@
  * surface nodeからポリゴンの情報を読み出す 再帰しない
  */
 void
-SceneGraph::get_data(xmlNodePtr cur)
+SceneGraph::get_data(TaskManager *manager, xmlNodePtr cur)
 {
     //char *image_name;
 
@@ -378,7 +377,7 @@
         }
         else if(!xmlStrcmp(cur->name,(xmlChar*)"image"))
         {
-            get_image(cur);
+            get_image(manager, cur);
         }
     }
 }
@@ -420,7 +419,7 @@
 }
 
 int
-SceneGraph::makeTapestries(SDL_Surface *texture_image, int id) {
+SceneGraph::makeTapestries(TaskManager *manager, SDL_Surface *texture_image, int id) {
                 uint32 *tapestry;
                 int scale = 1;
                 int tex_w = texture_image->w;
@@ -448,7 +447,7 @@
 
                 scale >>= 1;
 
-                tapestry = makeTapestry(texture_image->w, texture_image->h,
+                tapestry = makeTapestry(manager, texture_image->w, texture_image->h,
                                         (uint32*)texture_image->pixels,
                                         all_pixel_num, scale);
 
@@ -462,7 +461,7 @@
     }
 
 void
-SceneGraph::get_image(xmlNodePtr cur)
+SceneGraph::get_image(TaskManager *manager, xmlNodePtr cur)
 {
     char image_name[20] = "/tmp/image_XXXXXX";
     char *filename = (char *)xmlGetProp(cur, (xmlChar *)"name");
@@ -479,7 +478,7 @@
 
         SDL_Surface *texture_image = load_decode_image(image_name, cur);
 
-        texture_id = makeTapestries(texture_image, tex_id);
+        texture_id = makeTapestries(manager, texture_image, tex_id);
 
         if (unlink(image_name)) {
             cout << "unlink error\n";
--- a/TaskManager/Test/test_render/SceneGraph.h	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/SceneGraph.h	Sun Sep 20 18:55:26 2009 +0900
@@ -3,7 +3,7 @@
 
 #include "polygon.h"
 #include "Pad.h"
-
+#include "TaskManager.h"
 class SceneGraph;
 
 typedef void (*move_func)(SceneGraph* node, int screen_w, int screen_h);
@@ -14,7 +14,7 @@
 class SceneGraph : public Polygon {
 public:
     SceneGraph(void);
-    SceneGraph(xmlNodePtr surface);
+    SceneGraph(TaskManager *manager, xmlNodePtr surface);
     SceneGraph(SceneGraphPtr orig);
     ~SceneGraph(void);
 
@@ -91,16 +91,17 @@
 
     void tree_check(void);
     void print_member(void);
-    void get_data(xmlNodePtr cur);
+    void get_data(TaskManager *manager, xmlNodePtr cur);
     void delete_data(void);
 
     SDL_Surface* load_decode_image(char *image_name, xmlNodePtr cur);
-    int makeTapestries(SDL_Surface *texture_image, int id);
-    void get_image(xmlNodePtr cur);
+    int makeTapestries(TaskManager *manager, SDL_Surface *texture_image, int id);
+    void get_image(TaskManager *manager, xmlNodePtr cur);
 };
 
 #endif
 
+// 帯域変数を使うのは禁止なので削除すること
 // オリジナル (Linked List)
 extern SceneGraphPtr scene_graph;
 
--- a/TaskManager/Test/test_render/SceneGraphRoot.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/SceneGraphRoot.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -94,7 +94,7 @@
 
 /* XMLファイルからポリゴンを作成  */
 void
-SceneGraphRoot::createFromXMLfile(const char *xmlfile)
+SceneGraphRoot::createFromXMLfile(TaskManager *manager, const char *xmlfile)
 {
     xmlDocPtr doc;
     xmlNodePtr cur;
@@ -115,7 +115,7 @@
 	}
 
 	/* ポリゴン(SceneGraph)生成  */
-	tmp = new SceneGraph(cur);
+	tmp = new SceneGraph(manager, cur);
 
 	registSceneGraph(tmp);
     }
--- a/TaskManager/Test/test_render/SceneGraphRoot.h	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/SceneGraphRoot.h	Sun Sep 20 18:55:26 2009 +0900
@@ -46,7 +46,7 @@
      * Functions
      */
     /* User API */
-    void createFromXMLfile(const char *);
+    void createFromXMLfile(TaskManager *manager, const char *);
     SceneGraphPtr createSceneGraph(int id);
     SceneGraphPtr createSceneGraph(void);
     void setSceneData(SceneGraphPtr sg);
--- a/TaskManager/Test/test_render/ball_bound.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/ball_bound.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -104,7 +104,7 @@
 
 
 void
-ball_bound_init(int screen_w, int screen_h)
+ball_bound_init(TaskManager *manager, int screen_w, int screen_h)
 {
     SceneGraphPtr ball;
 
@@ -112,7 +112,7 @@
     // random な値が欲しいなら、man random に方法が書いてあります。
     srandom(100);
 
-    sgroot->createFromXMLfile("xml_file/Ball.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/Ball.xml");
     ball = sgroot->createSceneGraph(Ball);
     ball->set_move_collision(ball_move, ball_collision);
 
--- a/TaskManager/Test/test_render/boss1_action.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/boss1_action.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -224,7 +224,7 @@
 }
   
 void
-boss1_init(int screen_w, int screen_h)
+boss1_init(TaskManager *manager, int screen_w, int screen_h)
 {
   SceneGraphPtr root;
   SceneGraphPtr player;
@@ -232,10 +232,10 @@
   SceneGraphPtr left_parts;
   SceneGraphPtr right_parts;
 
-  sgroot->createFromXMLfile("xml_file/boss1.xml");
-  sgroot->createFromXMLfile("xml_file/player1.xml");
-  sgroot->createFromXMLfile("xml_file/p_shot.xml");
-  sgroot->createFromXMLfile("xml_file/blast.xml");
+  sgroot->createFromXMLfile(manager, "xml_file/boss1.xml");
+  sgroot->createFromXMLfile(manager, "xml_file/player1.xml");
+  sgroot->createFromXMLfile(manager, "xml_file/p_shot.xml");
+  sgroot->createFromXMLfile(manager, "xml_file/blast.xml");
   
   //rootとなるSceneGraphを生成
   root = sgroot->createSceneGraph();
--- a/TaskManager/Test/test_render/chain.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/chain.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -72,7 +72,7 @@
 }
 
 void
-chain_move(SceneGraphPtr sg, int w, int h)
+chain_move(TaskManager *manager, SceneGraphPtr sg, int w, int h)
 {
     int id = sg->id;
     //CHAIN_VARS* p = (CHAIN_VARS*)sg->propertyptr;
@@ -114,7 +114,7 @@
 }
 
 void
-chain_init(int w, int h)
+chain_init(TaskManager *manager, int w, int h)
 {
     SceneGraphPtr root_chain, chain;
     CHAIN_VARS rcv;
@@ -122,7 +122,7 @@
     HTaskPtr chain_init;
     
     
-    sgroot->createFromXMLfile("xml_file/chain.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/chain.xml");
 
     /* SPE に送る property の配列の領域確保 */
     properties[0] = (CHAIN_VARS*)manager->allocate(sizeof(CHAIN_VARS)*CHAIN_LEN);
--- a/TaskManager/Test/test_render/cube_action.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/cube_action.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -109,12 +109,12 @@
 }
 
 void
-create_cube_split(int number)
+create_cube_split(TaskManager *manager, int number)
 {
     SceneGraphPtr cube;
     SceneGraphPtr back;
 
-    sgroot->createFromXMLfile("xml_file/cube.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/cube.xml");
 
     // 何もしない親
     // cube は brother として繋がっていくので
--- a/TaskManager/Test/test_render/direction.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/direction.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -62,14 +62,14 @@
 }
 
 void
-direction_init(void)
+direction_init(TaskManager *manager)
 {
     SceneGraphPtr dx;
     SceneGraphPtr dy;
     SceneGraphPtr dz;
     SceneGraphPtr back;
 
-    sgroot->createFromXMLfile("xml_file/direction.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/direction.xml");
 
     dx = sgroot->createSceneGraph(Dirx);
     dy = sgroot->createSceneGraph(Diry);
--- a/TaskManager/Test/test_render/gaplant.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/gaplant.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -4,12 +4,12 @@
 #include "back_action.h"
 
 void
-init_gaplant(int w, int h)
+init_gaplant(TaskManager *manager, int w, int h)
 {
     SceneGraphPtr back;
     SceneGraphPtr gaplant;
-    sgroot->createFromXMLfile("xml_file/gap_plane_test.xml");
-    sgroot->createFromXMLfile("xml_file/Ball.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/gap_plane_test.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/Ball.xml");
 
     back = sgroot->createSceneGraph();
     back->set_move_collision(back_move, back_coll);
--- a/TaskManager/Test/test_render/ieshoot.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/ieshoot.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -189,16 +189,16 @@
 
 
 void
-ieshoot_init(void)
+ieshoot_init(TaskManager *manager)
 {
     SceneGraphPtr iejiki;
     SceneGraphPtr enemy;
     SceneGraphPtr back;
 
-    sgroot->createFromXMLfile("xml_file/ietama.xml");
-    sgroot->createFromXMLfile("xml_file/ieboss.xml");
-    sgroot->createFromXMLfile("xml_file/iejiki.xml");
-    sgroot->createFromXMLfile("xml_file/universe.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/ietama.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/ieboss.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/iejiki.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/universe.xml");
 
     back = sgroot->createSceneGraph();
 
--- a/TaskManager/Test/test_render/init_position.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/init_position.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -5,14 +5,14 @@
 #include "camera_action.h"
 
 void
-init_position(int w, int h)
+init_position(TaskManager *manager, int w, int h)
 {
     SceneGraphPtr back;
     SceneGraphPtr player;
     SceneGraphPtr enemy;
     //SceneGraphPtr bullet;
 
-    sgroot->createFromXMLfile("xml_file/player.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/player.xml");
     back   = sgroot->createSceneGraph(BACK);
     //back = sgroot->createSceneGraph();
     player = sgroot->createSceneGraph(IDLE);
--- a/TaskManager/Test/test_render/long_cube.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/long_cube.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -19,11 +19,11 @@
 
 
 void
-lcube_init(int screen_w, int screen_h)
+lcube_init(TaskManager *manager, int screen_w, int screen_h)
 {
     SceneGraphPtr lcube;
 
-    sgroot->createFromXMLfile("xml_file/LongCube.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/LongCube.xml");
     lcube = sgroot->createSceneGraph(LongCube);
     lcube->set_move_collision(lcube_move, lcube_collision);
 
--- a/TaskManager/Test/test_render/main.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/main.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -5,14 +5,15 @@
 #include "Func.h"
 
 /* prototype */
-static int init(int argc, char *argv[]);
-static void TMend(void);
+static int init(TaskManager *manager, int argc, char *argv[]);
+static void TMend(TaskManager *manager);
 
 extern void task_initialize();
 
-Viewer *screen;
+// 帯域変数は禁止
+//static Viewer *screen;
+static int sg_number = 0;
 
-static int sg_number = 0;
 
 const char *usr_help_str = "Usage: ./test_nogl [OPTION]\n\
   -cpu Number of SPE (default 1)\n\
@@ -27,7 +28,7 @@
       6 以降: キューブが跳ね返りながら、勝手にキューブが増えて行く\n";
 
 int
-init(int argc, char *argv[])
+init(TaskManager *manager, int argc, char *argv[])
 {
     int bpp    = 32;
     int width  = 640;
@@ -66,14 +67,17 @@
 	}
     }
 
+    Viewer *screen;
     if (vtype == VTYPE_SDL) {
-	screen = new ViewerSDL(bpp, width, height, spenum);
+	screen = new ViewerSDL(manager, bpp, width, height, spenum);
     } else if (vtype == VTYPE_FB) {
-	screen = new ViewerFB(bpp, width, height, spenum);
+	screen = new ViewerFB(manager, bpp, width, height, spenum);
+    }else{
+	screen = new ViewerSDL(manager, bpp, width, height, spenum);
     }
 
-    screen->video_init();
-    screen->run_init(xml, sg_number);
+    screen->video_init(manager);
+    screen->run_init(manager, xml, sg_number);
 
     manager->set_TMend(TMend);
 
@@ -81,17 +85,16 @@
 }
 
 int
-TMmain(int argc, char *argv[])
+TMmain(TaskManager *manager, int argc, char *argv[])
 {
     task_initialize();
-
-    return init(argc, argv);
+    return init(manager, argc, argv);
 
     //return 0;
 }
 
 void
-TMend(void)
+TMend(TaskManager *manager)
 {
     printf("test_nogl end\n");
 }
--- a/TaskManager/Test/test_render/node.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/node.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -63,9 +63,9 @@
 }
 
 void
-node_init(void)
+node_init(TaskManager *manager)
 {
-    sgroot->createFromXMLfile("xml_file/cube.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/cube.xml");
     Cube->set_move_collision(cube_move, cube_collision);
     Cube->stack_xyz[0] = 2.0f;
     Cube->stack_xyz[1] = 2.0f;
--- a/TaskManager/Test/test_render/panel.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/panel.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -17,18 +17,18 @@
 }
 
 void
-panel_init(int bg)
+panel_init(TaskManager *manager, int bg)
 {
     SceneGraphPtr panel;
 
     if (bg == 2) {
-	sgroot->createFromXMLfile("xml_file/panel_512.xml");
+	sgroot->createFromXMLfile(manager, "xml_file/panel_512.xml");
 	panel = sgroot->createSceneGraph(PANEL_512);
     } else if (bg == 3) {
-	sgroot->createFromXMLfile("xml_file/panel_1024.xml");
+	sgroot->createFromXMLfile(manager, "xml_file/panel_1024.xml");
 	panel = sgroot->createSceneGraph(PANEL_1024);
     } else {
-	sgroot->createFromXMLfile("xml_file/panel_2048.xml");
+	sgroot->createFromXMLfile(manager, "xml_file/panel_2048.xml");
 	panel = sgroot->createSceneGraph(PANEL_2048);
     }
 
--- a/TaskManager/Test/test_render/post.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/post.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -1,5 +1,7 @@
 #include "viewer.h"
 
+/*
+// post.cppの中身を viewer.cpp の中に持って行く
 extern Viewer *screen;
 
 void
@@ -25,3 +27,4 @@
 {
     screen->exchange_sgroot();
 }
+*/
--- a/TaskManager/Test/test_render/show_time.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/show_time.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -5,8 +5,10 @@
 void
 show_time()
 {
+    /*
     HTaskPtr show;
     HTaskPtr pre_show;
+    */
     /*
     show = manager->create_task(SHOW_TIME);
     show->set_cpu(SPE_0);
@@ -14,6 +16,7 @@
     printf("testですよ\n");
     */
 
+    /*
     pre_show = manager->create_task(SHOW_TIME);
     pre_show->set_cpu((CPU_TYPE)((int)SPE_0));    
     pre_show->spawn();
@@ -25,5 +28,5 @@
 	show->spawn();
 	pre_show = show;
     }
-
+    */
 }
--- a/TaskManager/Test/test_render/task/task_init.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/task/task_init.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -14,10 +14,14 @@
 SchedExternTask(LoadTexture);
 SchedExternTask(SetTexture);
 
+SchedExternTask(Move);
+SchedExternTask(Draw);
+
 SchedExternTask(Dummy);
 
 SchedExternTask(ShowTime);
 
+
 /**
  * set_cpu(CPU_PPE) で動作する task
  */
@@ -37,6 +41,9 @@
     SchedRegisterTask(TASK_INIT_TEXTURE, LoadTexture);
     SchedRegisterTask(TASK_SET_TEXTURE, SetTexture);
 
+    SchedRegisterTask(TASK_MOVE, Move);
+    SchedRegisterTask(TASK_DRAW, Draw);
+
     SchedRegisterTask(TASK_DUMMY, Dummy);
     SchedRegisterTask(SHOW_TIME, ShowTime);
 }
--- a/TaskManager/Test/test_render/universe.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/universe.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -41,12 +41,12 @@
 }
 
 void
-universe_init(void)
+universe_init(TaskManager *manager)
 {
     SceneGraphPtr earth;
     SceneGraphPtr moon;
 
-    sgroot->createFromXMLfile("xml_file/universe.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/universe.xml");
 
     // SGList.h にある SceneGraph ID から SceneGraph を生成する
     earth = sgroot->createSceneGraph(Earth);
--- a/TaskManager/Test/test_render/untitled.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/untitled.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -74,7 +74,7 @@
 }
 
 void
-untitled_init(void)
+untitled_init(TaskManager *manager)
 {
     SceneGraphPtr test00;
     SceneGraphPtr test01;
@@ -87,7 +87,7 @@
     SceneGraphPtr test08;
     SceneGraphPtr test09;
 
-    sgroot->createFromXMLfile("xml_file/Venus.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/Venus.xml");
 
     // SGList.h にある SceneGraph ID から SceneGraph を生成する
     /*
--- a/TaskManager/Test/test_render/vacuum.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/vacuum.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -157,13 +157,13 @@
 
 
 void
-vacuum_init2(int w, int h)
+vacuum_init2(TaskManager *manager, int w, int h)
 {
     SceneGraphPtr title;
 
-    sgroot->createFromXMLfile("xml_file/gamecube.xml");
-    sgroot->createFromXMLfile("xml_file/title.xml");
-    sgroot->createFromXMLfile("xml_file/gameover.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/gamecube.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/title.xml");
+    sgroot->createFromXMLfile(manager, "xml_file/gameover.xml");
 
     title = sgroot->createSceneGraph(TITLE);
     title->xyz[0] = w/2;
--- a/TaskManager/Test/test_render/viewer.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/viewer.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -11,13 +11,10 @@
 #include <wchar.h>
 #include "Pad.h"
 
-HTaskPtr move_DUMMY = manager->create_task(TASK_DUMMY);
-HTaskPtr draw_DUMMY = manager->create_task(TASK_DUMMY);
-
-extern void post2runLoop(void *);
-extern void post2runDraw(void *);
-extern void post2runMove(void *);
-extern void post2exchange_sgroot(void *);
+static void post2runLoop(void *viewer);
+static void post2runDraw(void *viewer);
+static void post2runMove(void *viewer);
+//static void post2exchange_sgroot(void *viewer);
 
 
 /* measure for FPS (Frame Per Second) */
@@ -89,27 +86,28 @@
     SDL_GL_SwapBuffers();
 }
 
-extern void node_init(void);
-extern void create_cube_split(int);
-extern void panel_init(int);
-extern void universe_init(void);
-extern void ieshoot_init(void);
-extern void ball_bound_init(int, int);
-extern void lcube_init(int, int);
-extern void direction_init(void);
-extern void init_position(int, int);
-extern void vacuum_init(int w, int h);
-extern void untitled_init(void);
-extern void chain_init(int w, int h);
-extern void boss1_init(int w, int h);
-extern void init_gaplant(int w, int h);
-extern void vacuum_init2(int w, int h);
+extern void node_init(TaskManager *manager);
+extern void create_cube_split(TaskManager *manager, int);
+extern void panel_init(TaskManager *manager, int bg);
+extern void universe_init(TaskManager *manager);
+extern void ieshoot_init(TaskManager *manager);
+extern void ball_bound_init(TaskManager *manager, int, int);
+extern void lcube_init(TaskManager *manager, int, int);
+extern void direction_init(TaskManager *manager);
+extern void init_position(TaskManager *manager, int, int);
+extern void vacuum_init(TaskManager *manager, int w, int h);
+extern void untitled_init(TaskManager *manager);
+extern void chain_init(TaskManager *manager, int w, int h);
+extern void boss1_init(TaskManager *manager, int w, int h);
+extern void init_gaplant(TaskManager *manager, int w, int h);
+extern void vacuum_init2(TaskManager *manager, int w, int h);
 
 void
-Viewer::run_init(const char *xml, int sg_number)
+Viewer::run_init(TaskManager *manager, const char *xml, int sg_number)
 {
     HTaskPtr task_next;
     HTaskPtr task_tex;
+    this->manager = manager;
 
     start_time = get_ticks();
     this_time  = 0;
@@ -122,51 +120,51 @@
     switch (sg_number) {
     case 0:
     case 1:
-      create_cube_split(sg_number);
+	create_cube_split(manager, sg_number);
         break;
     case 2:
     case 3:
     case 4:
-      panel_init(sg_number);
+	panel_init(manager, sg_number);
         break;
     case 5:
-      universe_init();
+	universe_init(manager);
         break;
     case 6:
-      ieshoot_init();
+	ieshoot_init(manager);
         break;
     case 7:
-      ball_bound_init(this->width, this->height);
+	ball_bound_init(manager, this->width, this->height);
         break;
     case 8:
-      lcube_init(this->width, this->height);
+	lcube_init(manager, this->width, this->height);
         break;
     case 9:
-      direction_init();
+	direction_init(manager);
         break;
     case 10:
-      init_position(this->width, this->height);
+	init_position(manager, this->width, this->height);
         break;
     case 11:
-        //        vacuum_init(this->width, this->height);
+        //        vacuum_init(manager, this->width, this->height);
         break;
     case 12:
-	untitled_init();
+	untitled_init(manager);
         break;
     case 13:
-      boss1_init(this->width, this->height);
+	boss1_init(manager, this->width, this->height);
         break;
     case 14:
-	init_gaplant(this->width, this->height);
+	init_gaplant(manager, this->width, this->height);
         break;
     case 15:
-      vacuum_init2(this->width, this->height);
+	vacuum_init2(manager, this->width, this->height);
         break;
     case 16:
-        chain_init(this->width, this-> height);
+        chain_init(manager, this->width, this-> height);
         break;
     default:
-        node_init();
+        node_init(manager);
         break;
     }
 
@@ -224,42 +222,58 @@
         task_tex->spawn();
     }
 
-    task_next->set_post(&post2runLoop, NULL); // set_post(function(this->run_loop()), NULL)
-    task_next->set_post(&post2runMove, NULL); // set_post(function(this->run_move()), NULL)
+    task_next->set_post(&post2runLoop, (void *)this); // set_post(function(this->run_loop()), NULL)
     task_next->spawn();
     // TASK_INIT_TEXTURE が全て終わったら DUMMY_TASK が Viewer::run_loop() を呼ぶ
+
+
+    /*
+    HTaskPtr move_task = manager->create_task(RUN_MOVE_TASK);
+    HTaskPtr draw_task = manager->create_task(RUN_DRAW_TASK);
+    move_task->spawn();
+    draw_task->spawn();
+    
+    task_next->wait_for(RUN_MOVE_TASK);
+    task_next->wait_for(RUN_DRAW_TASK);
+    task_next->set_post(&post2runExchange, (void *)this);
+    task_next->spawn();
+    */
+}
+
+
+/*
+static void
+post2exchange_sgroot(void *viewer_)
+{
+    Viewer *viewer = (Viewer*)viewer_;
+    HTaskPtr task_next = viewer->manager->create_task(TASK_DUMMY);
+    viewer->exchange_sgroot(task_next);
 }
 
 void
-Viewer::exchange_sgroot()
+Viewer::exchange_sgroot(TaskManager *manager)
 {
+
     SceneGraphRootPtr tmp = sgroot;
     sgroot = sgroot_2;
     sgroot_2 = tmp;
-    HTaskPtr task_next = manager->create_task(TASK_DUMMY);
-    task_next->set_post(&post2runLoop, NULL); // set_post(function(this->run_loop()), NULL)
-    task_next->set_post(&post2runMove, NULL); // set_post(function(this->run_move()), NULL)
-    task_next->spawn();
     
 }
+*/
+
+static void
+post2runMove(void *viewer_)
+{
+    Viewer *viewer = (Viewer*)viewer_;
+    HTaskPtr task_next = viewer->manager->create_task(TASK_DUMMY);
+    viewer->run_move(task_next);
+}
 
 void
-Viewer::run_move()
+Viewer::run_move(HTaskPtr task_next)
 {
     sgroot->updateControllerState();
     sgroot->allExecute(width, height);
-    // run_loop と待ち合わせの処理
-
-    HTaskPtr task_next;
-    task_next = manager->create_task(TASK_DUMMY);
-
-    task_next->wait_for(draw_DUMMY);
-    task_next->wait_for(move_DUMMY);
-    move_DUMMY->spawn();
-    //task_next->set_post(exchange_sgroot, NULL); // set_post(function(this->run_loop()), NULL)
-    task_next->spawn();    
-
-
 }
 
 void
@@ -268,13 +282,10 @@
 }
 
 void 
-Viewer::rendering()
+Viewer::rendering(HTaskPtr task_next)
 {
     HTaskPtr task_create_pp = NULL;
     HTaskPtr task_create_sp = NULL;
-    HTaskPtr task_next;
-    
-    task_next = manager->create_task(TASK_DUMMY);
     
     // SceneGraph(木構造) -> PolygonPack
     task_create_pp = manager->create_task(TASK_CREATE_PP2);
@@ -323,16 +334,24 @@
 
     // Barrier 同期
     // run_draw() を呼ぶ post2runDraw
-    task_next->set_post(post2runDraw, NULL); // set_post(function(this->run_draw()), NULL)
+    task_next->set_post(post2runDraw, (void*)this); // set_post(function(this->run_draw()), NULL)
     task_next->spawn();
     // TASK_CREATE_SPAN が全て終わったら DUMMY_TASK が Viewer::run_draw() を呼ぶ
 }
 
+static void
+post2runLoop(void *viewer_)
+{
+    Viewer *viewer = (Viewer*)viewer_;
+    HTaskPtr task_next = viewer->manager->create_task(TASK_DUMMY);
+    viewer->run_loop(task_next);
+
+}
+
 void
-Viewer::run_loop()
+Viewer::run_loop(HTaskPtr task_next)
 {
     bool quit_flg;
-
     quit_flg = quit_check();
     if (quit_flg == true) {
         this_time = get_ticks();
@@ -346,23 +365,31 @@
         spackList[i-1].reinit(i*split_screen_h);
     }
     
-    //task_next = manager->create_task(TASK_DUMMY);
-
+    task_next = manager->create_task(TASK_DUMMY);
+    run_move(task_next);
     //sgroot->updateControllerState();
     //sgroot->allExecute(width, height);
     //sgroot->checkRemove();
 
     // ここから下は Rendering という関数にする
-    rendering();
+    rendering(task_next);
+}
+
+static void
+post2runDraw(void *viewer_)
+{
+    Viewer *viewer = (Viewer*)viewer_;
+    HTaskPtr task_next = viewer->manager->create_task(TASK_DUMMY);
+    viewer->run_draw(task_next);
+
 }
 
 void
-Viewer::run_draw() // 引数に post2runLoop を入れるようにする
+Viewer::run_draw(HTaskPtr task_next) // 引数に post2runLoop を入れるようにする
 {
-    HTaskPtr task_next;
     HTaskPtr task_draw;
 
-    task_next = manager->create_task(TASK_DUMMY);
+    //task_next = manager->create_task(TASK_DUMMY);
     //task_next->set_post(post2runLoop, NULL);
 
     ppack->clear();
@@ -391,6 +418,8 @@
 		break;
             }
 
+
+	    task_next->spawn();
             task_draw->add_param(startx);
             task_draw->add_param(endx);
             task_draw->add_param(rangey);
@@ -407,11 +436,9 @@
         }
     }
     
-    task_next->wait_for(draw_DUMMY);
-    task_next->wait_for(move_DUMMY);
-    draw_DUMMY->spawn();
-    task_next->set_post(post2exchange_sgroot, NULL); // set_post(function(this->run_loop()), NULL)
-    task_next->spawn();    
+
+    task_next->set_post(post2runLoop, (void*)this); // set_post(function(this->run_loop()), NULL)
+    task_next->spawn(); 
     // TASK_DRAW_SPAN が全て終わったら DUMMY_TASK が Viewer::run_loop() を呼ぶ
 
     frames++;
--- a/TaskManager/Test/test_render/viewer.h	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/viewer.h	Sun Sep 20 18:55:26 2009 +0900
@@ -4,6 +4,7 @@
 #include <SDL.h>
 
 #include "viewer_types.h"
+#include "TaskManager.h"
 
 class Viewer {
 public:
@@ -11,6 +12,8 @@
 
     virtual ~Viewer(void) {}
 
+    TaskManager *manager;
+
     /* screen info */
     int width;
     int height;
@@ -22,7 +25,7 @@
     Uint32 video_flags;
     Uint32 *pixels;
 
-    virtual void video_init(void) = 0;
+    virtual void video_init(TaskManager *manager) = 0;
     void init();
 
     int get_ticks();
@@ -32,17 +35,18 @@
     virtual void swap_buffers();
     virtual void clean_pixels() {}
 
-    virtual void run_init(const char *xml, int sg_number);
-    virtual void run_loop(void);
-    virtual void run_draw(void);
-    virtual void run_finish(void);
-    virtual void run_move();
+    virtual void run_init(TaskManager *manager, const char *xml, int sg_number);
+    virtual void run_loop(HTaskPtr task_next);
+    virtual void run_draw(HTaskPtr task_next);
+    virtual void run_finish();
+    virtual void run_move(HTaskPtr task_next);
     virtual void run_collision();
-    virtual void rendering();
-    virtual void exchange_sgroot();
+    virtual void rendering(HTaskPtr task_next);
+    //virtual void exchange_sgroot(TaskManager *manager);
 };
 
 #define default_sdl_flag SDL_INIT_TIMER | SDL_INIT_JOYSTICK
 
+
 #endif
 
--- a/TaskManager/Test/test_render/viewerFB.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/viewerFB.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -2,10 +2,10 @@
 #include "Func.h"
 #include "fb.h"
 
-extern void post2runLoop(void *);
+//extern void post2runLoop(void *);
 
 void
-ViewerFB::video_init(void)
+ViewerFB::video_init(TaskManager *manager)
 {
     Uint32 sdl_flag = default_sdl_flag | SDL_INIT_VIDEO;
 
--- a/TaskManager/Test/test_render/viewerFB.h	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/viewerFB.h	Sun Sep 20 18:55:26 2009 +0900
@@ -5,11 +5,11 @@
 
 class ViewerFB : public Viewer {
 public:
-    ViewerFB(int bpp, int width, int height, int spenum)
-	:Viewer(bpp, width, height, spenum) {}
+ViewerFB(TaskManager *manager, int bpp, int width, int height, int spenum)
+    :Viewer(bpp, width, height, spenum) {}
 
     /* override function */
-    void video_init(void);
+    void video_init(TaskManager *manager);
     void clean_pixels(void);
 };
 
--- a/TaskManager/Test/test_render/viewerSDL.cpp	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/viewerSDL.cpp	Sun Sep 20 18:55:26 2009 +0900
@@ -7,7 +7,7 @@
 extern
 
 void
-ViewerSDL::video_init()
+ViewerSDL::video_init(TaskManager *manager)
 {
     Uint32 sdl_flag = default_sdl_flag | SDL_INIT_VIDEO;
     Uint32 *p;
@@ -42,16 +42,16 @@
 }
 
 void
-ViewerSDL::run_loop(void)
+ViewerSDL::run_loop(HTaskPtr task_next)
 {
     SDL_BlitSurface(bitmap, NULL, screen, NULL);
     SDL_UpdateRect(screen, 0, 0, 0, 0);        
 
-    Viewer::run_loop();
+    Viewer::run_loop(task_next);
 }
 
 void
-ViewerSDL::run_finish(void)
+ViewerSDL::run_finish()
 {
     free(bitmap->pixels);
     SDL_FreeSurface(bitmap);
--- a/TaskManager/Test/test_render/viewerSDL.h	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/Test/test_render/viewerSDL.h	Sun Sep 20 18:55:26 2009 +0900
@@ -5,17 +5,17 @@
 
 class ViewerSDL : public Viewer {
 public:
-    ViewerSDL(int bpp, int width, int height, int spenum)
-	:Viewer(bpp, width, height, spenum) {}
+ViewerSDL(TaskManager *manager, int bpp, int width, int height, int spenum)
+    :Viewer(bpp, width, height, spenum) {}
 
     SDL_Surface *screen;
     SDL_Surface *bitmap;
 
     /* override function */
-    void video_init(void);
+    void video_init(TaskManager *manager);
     void clean_pixels();
-    void run_loop(void);
-    void run_finish(void);
+    void run_loop(HTaskPtr task_next);
+    void run_finish();
 };
 
 #endif
--- a/TaskManager/kernel/main.cc	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/kernel/main.cc	Sun Sep 20 18:55:26 2009 +0900
@@ -8,13 +8,13 @@
  */
 
 /* User main function */
-extern int TMmain(int argc, char *argv[]);
+extern int TMmain(TaskManager* manager, int argc, char *argv[]);
 
 /* Default TMend function */
 static void
-defaultTMend(void) {}
+defaultTMend(TaskManager *manager) {}
 
-TaskManager *manager;
+//TaskManager *manager;
 
 /*!
   const char *usr_help_str を User 側で指定する必要がある
@@ -45,18 +45,18 @@
         }
     }
 
-    manager = new TaskManager(machineNum);
+    TaskManager *manager = new TaskManager(machineNum);
     manager->init();
 
     manager->set_TMend(defaultTMend);
 
-    if (TMmain(argc, argv) < 0) {
+    if (TMmain(manager, argc, argv) < 0) {
 	goto FINISH;
     }
 
     manager->run();
 
-    (manager->tm_end)();
+    (manager->tm_end)(manager);
 
 FINISH:
     delete manager;
--- a/TaskManager/kernel/ppe/HTask.cc	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/kernel/ppe/HTask.cc	Sun Sep 20 18:55:26 2009 +0900
@@ -42,7 +42,7 @@
 }
 
 void
-HTask::set_post(void (*func)(void *), void *arg)
+HTask::set_post(void (*func)(void *arg), void *arg)
 {
     this->post_func = func;
     this->post_arg = arg;
--- a/TaskManager/kernel/ppe/HTask.h	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/kernel/ppe/HTask.h	Sun Sep 20 18:55:26 2009 +0900
@@ -25,7 +25,7 @@
 
     TaskQueuePtr wait_me;  // List of task waiting for me
     TaskQueuePtr wait_i;   // List of task for which I am waiting
-    void (*post_func)(void *);
+    void (*post_func)(void *arg);
     void *post_arg;
     CPU_TYPE cpu_type;
     HTask *next;
@@ -33,7 +33,7 @@
 
     void spawn(void);
     void wait_for(HTask *);
-    void set_cpu(CPU_TYPE type);
+    void set_cpu(CPU_TYPE type);    
     void set_post(void (*func)(void *), void *arg);
 };
 
--- a/TaskManager/kernel/ppe/TaskManager.cc	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/kernel/ppe/TaskManager.cc	Sun Sep 20 18:55:26 2009 +0900
@@ -5,7 +5,7 @@
     gen_random = new Random;
 }
 
-TaskManager::~TaskManager(void)
+TaskManager::~TaskManager()
 {
     delete m_impl;
     delete gen_random;
@@ -30,7 +30,7 @@
 extern TaskManagerImpl* create_impl(int);
 
 void
-TaskManager::init(void)
+TaskManager::init()
 {
     m_impl = create_impl(machineNum);
     m_impl->init();
@@ -38,7 +38,7 @@
 }
 
 void
-TaskManager::finish(void)
+TaskManager::finish()
 {
     delete m_impl;
 }
@@ -58,13 +58,13 @@
  * TaskManaer 終了時に実行される関数の設定
  */
 void
-TaskManager::set_TMend(void (*endf)(void))
+TaskManager::set_TMend(void (*endf)(TaskManager *manager))
 {
     tm_end = endf;
 }
 
 void
-TaskManager::run(void)
+TaskManager::run()
 {
     m_impl->run();
 }
@@ -75,13 +75,13 @@
 }
 
 int
-TaskManager::get_cpuNum(void)
+TaskManager::get_cpuNum()
 {
     return machineNum;
 }
 
 int
-TaskManager::get_random(void)
+TaskManager::get_random()
 {
     return gen_random->getData();
 }
--- a/TaskManager/kernel/ppe/TaskManager.h	Fri Sep 18 18:28:56 2009 +0900
+++ b/TaskManager/kernel/ppe/TaskManager.h	Sun Sep 20 18:55:26 2009 +0900
@@ -10,25 +10,25 @@
 public:
     /* constructor */
     TaskManager(int num = 1); // The number of threads
-    ~TaskManager(void);
+    ~TaskManager();
 
     /* variables */
     TaskManagerImpl *m_impl;
-    void (*tm_end)(void);
+    void (*tm_end)(TaskManager *manager);
     RandomPtr gen_random;
 
     /* user function */
     HTaskPtr create_task(int cmd);
-    void run(void);
+    void run();
     void *allocate(int size);
-    void set_TMend(void (*endf)(void));
-    int get_cpuNum(void);
-    int get_random(void);
+    void set_TMend(void (*endf)(TaskManager *manager));
+    int get_cpuNum();
+    int get_random();
     Scheduler *get_scheduler();
 
     /* functions */
-    void init(void);
-    void finish(void);
+    void init();
+    void finish();
 
 private:
     int machineNum;
@@ -36,5 +36,5 @@
 
 #endif
 
-extern TaskManager *manager;
+//extern TaskManager *manager;