comparison TaskManager/Test/simple_render/main.cpp @ 105:3e331f7576a1

*** empty log message ***
author gongo
date Mon, 03 Mar 2008 18:55:28 +0900
parents 588ab5f0e659
children 5c194c71eca8
comparison
equal deleted inserted replaced
104:226c743d07c6 105:3e331f7576a1
1 #include <iostream> 1 #include <iostream>
2 #include "viewer.h" 2 #include "viewer.h"
3 #include "Func.h"
3 #include "polygon.h" 4 #include "polygon.h"
4 #include "demonstration.h" 5 #include "demonstration.h"
5 #include "pad.h" 6 #include "pad.h"
6 #include "TaskManager.h" 7 #include "TaskManager.h"
7 using namespace std; 8 using namespace std;
8 9
9 #include "error.h" 10 #include "error.h"
10 11
11 int init(void*, void*); 12 int init(void*, void*);
12 int sdl_init(void*, void*); 13 int sdl_init(void*, void*);
13 int zrow_init(void*, void*); 14 int run_init(void*, void*);
14 int run(void*, void*);
15 int finish(void*, void*); 15 int finish(void*, void*);
16 16
17 extern void task_initialize(); 17 extern void task_initialize();
18 18
19 TaskManager *manager; 19 TaskManager *manager;
27 27
28 struct init_arg *initArg; 28 struct init_arg *initArg;
29 29
30 int init(void *r, void *w) 30 int init(void *r, void *w)
31 { 31 {
32 int fd_sdl_init, fd_zrow_init, fd_run; 32 HTaskPtr task_sdl_init, task_run;
33 HTaskPtr task_sdl_init, task_zrow_init, task_run;
34 33
35 __debug("[%s]\n", __FUNCTION__); 34 __debug("[%s]\n", __FUNCTION__);
36 35
37 screen = new Viewer(initArg->bpp, initArg->w, initArg->h); 36 screen = new Viewer(initArg->bpp, initArg->w, initArg->h);
37
38 // obsolute API
39 // シンボル名登録してほげほげと
40 // ユーザが自分で ID つけるのどっちがいいかな。
41 // 現段階では、ppe と spe の func_list を共有できないので
42 // シンボル名よりは ID の方が楽。
43 //fd_sdl_init = manager->open("sdl_init");
44 //fd_zrow_init = manager->open("zRow_init");
45 //fd_run = manager->open("run");
46 //task_sdl_init = manager->create_task(fd_sdl_init, 0, 0, 0, NULL);
47 //task_zrow_init = manager->create_task(fd_zrow_init, 0, 0, 0, NULL);
48 //task_run = manager->create_task(fd_run, 0, 0, 0, NULL);
38 49
39 fd_sdl_init = manager->open("sdl_init"); 50 task_sdl_init = manager->create_task(SDL_INIT, 0, 0, 0, NULL);
40 fd_zrow_init = manager->open("zRow_init"); 51 task_run = manager->create_task(VIEWER_RUN_INIT, 0, 0, 0, NULL);
41 fd_run = manager->open("run");
42
43 task_sdl_init = manager->create_task(fd_sdl_init, 0, 0, 0, NULL);
44 task_zrow_init = manager->create_task(fd_zrow_init, 0, 0, 0, NULL);
45 task_run = manager->create_task(fd_run, 0, 0, 0, NULL);
46
47 //manager->set_task_depend(task_sdl_init, task_run);
48 //manager->set_task_depend(task_zrow_init, task_run);
49
50 task_run->set_depend(task_sdl_init); 52 task_run->set_depend(task_sdl_init);
51 task_run->set_depend(task_zrow_init);
52 53
53 task_sdl_init->spawn(); 54 task_sdl_init->spawn();
54 task_zrow_init->spawn();
55 task_run->spawn(); 55 task_run->spawn();
56 56
57 free(initArg); 57 free(initArg);
58 return 0; 58 return 0;
59 } 59 }
66 __debug("[%s]\n", __FUNCTION__); 66 __debug("[%s]\n", __FUNCTION__);
67 screen->sdl_init(); 67 screen->sdl_init();
68 return 0; 68 return 0;
69 } 69 }
70 70
71 int zRow_init(void *r, void *w) 71 int run_init(void *r, void *w)
72 {
73 __debug("[%s]\n", __FUNCTION__);
74 screen->zRow_init();
75 return 0;
76 }
77
78 int run(void *r, void *w)
79 { 72 {
80 __debug("[%s]\n", __FUNCTION__); 73 __debug("[%s]\n", __FUNCTION__);
81 screen->run_init(); 74 screen->run_init();
82 return 0; 75 return 0;
83 } 76 }
121 114
122 task_initialize(); 115 task_initialize();
123 116
124 // 本当は、dlsym みたいなものを使いたいんだけど 117 // 本当は、dlsym みたいなものを使いたいんだけど
125 // 静的なやつはできないん? 118 // 静的なやつはできないん?
119 #if 0
126 manager->set_symbol("init", (void*)init); 120 manager->set_symbol("init", (void*)init);
127 manager->set_symbol("sdl_init", (void*)sdl_init); 121 manager->set_symbol("sdl_init", (void*)sdl_init);
128 manager->set_symbol("zRow_init", (void*)zRow_init); 122 manager->set_symbol("zRow_init", (void*)zRow_init);
129 manager->set_symbol("run", (void*)run); 123 manager->set_symbol("run", (void*)run);
130 manager->set_symbol("finish", (void*)finish); 124 manager->set_symbol("finish", (void*)finish);
131 manager->set_symbol("ViewerRunLoop", (void*)run_loop); 125 manager->set_symbol("ViewerRunLoop", (void*)run_loop);
132 manager->set_symbol("ViewerRunDraw", (void*)run_draw); 126 manager->set_symbol("ViewerRunDraw", (void*)run_draw);
133 manager->set_symbol("ViewerRunFinish", (void*)run_finish); 127 manager->set_symbol("ViewerRunFinish", (void*)run_finish);
128 #else
129 manager->set_func(INIT, init);
130 manager->set_func(SDL_INIT, sdl_init);
131 manager->set_func(FINISH, finish);
132 manager->set_func(VIEWER_RUN_INIT, run_init);
133 manager->set_func(VIEWER_RUN_LOOP, run_loop);
134 manager->set_func(VIEWER_RUN_DRAW, run_draw);
135 manager->set_func(VIEWER_RUN_FINISH, run_finish);
136 #endif
134 137
135 int bpp = 0; 138 int bpp = 0;
136 int width = 640; 139 int width = 640;
137 int height = 480; 140 int height = 480;
138 141
154 157
155 // 一番最初に行われる init 専用の task_run があってもいいけど。。 158 // 一番最初に行われる init 専用の task_run があってもいいけど。。
156 // その場合は引数とか固定か。まあ引数は argc, argv を持つ 159 // その場合は引数とか固定か。まあ引数は argc, argv を持つ
157 // 構造体で固定しても問題はない・・・か? 160 // 構造体で固定しても問題はない・・・か?
158 HTaskPtr task_init; 161 HTaskPtr task_init;
159 int fd_init;
160 initArg = new struct init_arg; 162 initArg = new struct init_arg;
161 initArg->bpp = bpp; 163 initArg->bpp = bpp;
162 initArg->w = width; 164 initArg->w = width;
163 initArg->h = height; 165 initArg->h = height;
164 166
165 fd_init = manager->open("init"); 167 //fd_init = manager->open("init");
166 task_init = manager->create_task(fd_init, 0, 0, 0, NULL); 168 //task_init = manager->create_task(fd_init, 0, 0, 0, NULL);
167 //manager->spawn_task(task_init); 169 task_init = manager->create_task(INIT, 0, 0, 0, NULL);
168 task_init->spawn(); 170 task_init->spawn();
169 171
170 manager->run(); 172 manager->run();
171 173
172 finish(NULL, NULL); 174 finish(NULL, NULL);