Mercurial > hg > Members > kono > Cerium
diff Renderer/Test/dynamic_create.cc @ 671:f42b303044f7
fix several Renderer/Test with (void*)sgroot.
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 05 Dec 2009 17:26:58 +0900 |
parents | d0b8860c17f8 |
children | 4dc02d3e98bb |
line wrap: on
line diff
--- a/Renderer/Test/dynamic_create.cc Thu Dec 03 09:02:40 2009 +0900 +++ b/Renderer/Test/dynamic_create.cc Sat Dec 05 17:26:58 2009 +0900 @@ -37,6 +37,7 @@ int sid; int read_id; SceneGraphPtr node; + SceneGraphRoot *sgroot; TaskManager *manager; client_t *clist; } callback_arg; @@ -105,13 +106,13 @@ static void -earth_move(SceneGraphPtr node, int screen_w, int screen_h) +earth_move(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h) { // psx_sync_n(); in viewer::MainLoop } SceneGraphPtr -create_sg(TaskManager *manager, SceneGraphPtr parent, unsigned char *data, +create_sg(TaskManager *manager, SceneGraphRoot *sgroot, SceneGraphPtr parent, unsigned char *data, int len, int serial_id) { SceneGraphPtr child = sgroot->createSceneGraph(); @@ -119,8 +120,8 @@ // 読み込んだオブジェクトは、すべて、child の child になる。 sgroot->createFromXMLmemory(sgroot->tmanager, child, (char *)data, len); child->set_move_collision(moon_move, moon_collision); - child->id = serial_id; - child->seq = psx_wait_rd(sgroot->tid, serial_id * 10 + 1); + child->id = serial_id; + child->seq = psx_wait_rd(sgroot->tid, serial_id * 10 + 1); return child; } @@ -134,7 +135,7 @@ SceneGraphPtr sgp; // ここで create // fwrite(xml_data, 1, 10, stdout); - sgp = create_sg(carg->manager, carg->node, xml_data, xml_len, carg->sid); + sgp = create_sg(carg->manager, carg->sgroot, carg->node, xml_data, xml_len, carg->sid); printf("%s size %d loaded\n", sgp->children->name, xml_len); client_list_update(carg->manager, carg->clist, carg->sid, sgp); free(arg); @@ -166,20 +167,23 @@ /* dataは'\0'で終わっている事を期待 (writerで保証する) */ //printf("get data[%d]: `%s'\n", len, data); free(taple); - + + // arg は使い回すらしい。 + psx_callback_in(carg->tid, carg->read_id, callbacker, arg); } static char const *linda = "localhost"; -void -linda_init(TaskManager *manager, client_t *clist, SceneGraphPtr node) +static void +linda_init(TaskManager *manager, SceneGraphRoot *sgroot, client_t *clist, SceneGraphPtr node) { init_linda(); callback_arg *carg = (callback_arg *)manager->allocate(sizeof(callback_arg)); carg->tid = open_linda_java(linda, PORT); - sgroot->tid = carg->tid; + carg->sgroot = sgroot; + carg->sgroot->tid = carg->tid; carg->read_id = SERIAL_REGIST_TUPLE_NO; carg->node = node; carg->manager = manager; @@ -201,7 +205,7 @@ parent->set_move_collision(earth_move, earth_collision); // parent->xyz[0] += 300; // parent->xyz[1] += 300; - linda_init(sgroot->manager, clist, parent); + linda_init(sgroot->manager, sgroot->sgroot, clist, parent); // SceneGraphRoot に、使用する SceneGraph を設定する // このとき、ユーザーが記述した SceneGraph の root を渡す。