diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 8ef0e6a8..dd523cfb 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -128,6 +128,7 @@ void Room::Init() void Room::UnInit() { destorying_ = true; + UpdateFrameCall(); incubator_->UnInit(); #ifdef DEBUG UnInitDebugInfo(); @@ -173,6 +174,7 @@ void Room::Update(int delta_time) long long begin_tick = a8::XGetTickCount(); long long end_tick = a8::XGetTickCount(); #endif + UpdateFrameCall(); if (GetFrameNo() % 2 == 0) { UpdateGas(); } @@ -3641,5 +3643,17 @@ void Room::AddFrameCall(FrameCallCb cb, void* context) void Room::UpdateFrameCall() { - + if (!work_node_ && top_node_) { + work_node_ = top_node_; + top_node_ = nullptr; + bot_node_ = nullptr; + } + while (work_node_) { + FrameCallNode *pdelnode = work_node_; + work_node_ = pdelnode->next; + if (pdelnode->cb) { + pdelnode->cb(pdelnode->context); + } + delete pdelnode; + }//end while }