diff --git a/f8/app.cc b/f8/app.cc index 0153a66..f50f1ce 100644 --- a/f8/app.cc +++ b/f8/app.cc @@ -76,13 +76,20 @@ namespace f8 argc_ = argc; argv_ = argv; user_app_ = user_app; + int delta_time = 0; if (Init()) { while (!Terminated()) { + a8::tick_t begin_tick = a8::XGetTickCount(); f8::Timer::Instance()->Update(); f8::MsgQueue::Instance()->Update(); DispatchNetMsg(); - user_app->Update(0); + user_app->Update(delta_time); + a8::tick_t end_tick = a8::XGetTickCount(); Schedule(); + //if (end_tick - begin_tick > PerfMonitor::Instance()->max_run_delay_time) { + //PerfMonitor::Instance()->max_run_delay_time = end_tick - begin_tick; + //} + delta_time = end_tick - begin_tick; } UnInit(); } @@ -240,6 +247,7 @@ namespace f8 MsgHdr* hdr = list_first_entry(work_list, MsgHdr, entry); list_del_init(&hdr->entry); user_app_->DispatchSocketMsg(hdr); + MsgHdr::Destroy(hdr); } } diff --git a/f8/protoutils.cc b/f8/protoutils.cc index 8f354ea..09ecf96 100644 --- a/f8/protoutils.cc +++ b/f8/protoutils.cc @@ -306,20 +306,14 @@ namespace f8 MsgHdr* MsgHdr::Clone() { - MsgHdr* hdr = (MsgHdr*)malloc(sizeof(MsgHdr)); - *hdr = *this; - if (hdr->buflen > 0) { - hdr->buf = (char*)malloc(hdr->buflen); - memmove((void*)hdr->buf, (void*)buf, buflen); - } + MsgHdr* hdr = (MsgHdr*)malloc(sizeof(MsgHdr) + buflen); + memmove((void*)hdr, (void*)this, sizeof(MsgHdr) + buflen); + hdr->buf = ((char*)hdr) + sizeof(MsgHdr); return hdr; } void MsgHdr::Destroy(MsgHdr* hdr) { - if (hdr->buf) { - free((void*)hdr->buf); - } free((void*)hdr); }