From bfedebb8069e4613c96a53151e72785ea7352765 Mon Sep 17 00:00:00 2001 From: Björn Steinbrink <B.Steinbrink@gmx.de> Date: Sun, 22 Jan 2006 19:26:32 +0000 Subject: Make dispatchMessages actually handle more than one message per call. --- ChangeLog | 2 ++ src/game.cpp | 4 +--- src/net/network.cpp | 22 +++++++++++----------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 040a5e19..71e2932e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2006-01-22 Bj�rn Steinbrink <B.Steinbrink@gmx.de> + * src/game.cpp, src/net/network.cpp: Make dispatchMessages actually + handle more than one message per call. * src/main.cpp: Remove obsoleted action listeners. * src/main.cpp: Use generic error method for sound failure. * src/main.cpp, src/net/charserverhandler.cpp, diff --git a/src/game.cpp b/src/game.cpp index dcd7b9d9..edc1789f 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -369,10 +369,8 @@ void game(Network *network) } // Handle network stuff - while(network->messageReady()) - network->dispatchMessages(); - network->flush(); + network->dispatchMessages(); } do_exit(network); diff --git a/src/net/network.cpp b/src/net/network.cpp index 3b0652e2..f519a467 100644 --- a/src/net/network.cpp +++ b/src/net/network.cpp @@ -214,20 +214,20 @@ void Network::clearHandlers() void Network::dispatchMessages() { - if (!messageReady()) - return; - - MessageIn msg = getNextMessage(); + while (messageReady()) + { + MessageIn msg = getNextMessage(); - std::map<Uint16, MessageHandler*>::iterator iter; - iter = mMessageHandlers.find(msg.getId()); + std::map<Uint16, MessageHandler*>::iterator iter; + iter = mMessageHandlers.find(msg.getId()); - if (iter != mMessageHandlers.end()) - iter->second->handleMessage(&msg); - else - logger->log("Unhandled packet: %x", msg.getId()); + if (iter != mMessageHandlers.end()) + iter->second->handleMessage(&msg); + else + logger->log("Unhandled packet: %x", msg.getId()); - skip(msg.getLength()); + skip(msg.getLength()); + } } void Network::flush() -- cgit v1.2.3-70-g09d2