From 0f23bf01056ac30dc2e6efb2481ad69463d4ee4f Mon Sep 17 00:00:00 2001 From: lotodore Date: Wed, 8 Jan 2014 22:27:10 +0100 Subject: [PATCH] Invoke ping callback only if a new ping value has been added. --- src/net/clientthread.h | 5 ++++- src/net/common/clientthread.cpp | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/net/clientthread.h b/src/net/clientthread.h index cf09819f..03f5fd96 100644 --- a/src/net/clientthread.h +++ b/src/net/clientthread.h @@ -77,14 +77,17 @@ public: void StartPing() { pingTimer.start(); } - void EndPing() { + bool EndPing() { + bool retVal = false; if (pingTimer.is_running()) { pingValues.push_back((unsigned)pingTimer.elapsed().total_milliseconds()); if (pingValues.size() > SIZE_PING_BACKLOG) { pingValues.pop_front(); } pingTimer.reset(); + retVal = true; } + return retVal; } private: diff --git a/src/net/common/clientthread.cpp b/src/net/common/clientthread.cpp index fc0c4d6f..c36e94af 100644 --- a/src/net/common/clientthread.cpp +++ b/src/net/common/clientthread.cpp @@ -1566,8 +1566,9 @@ void ClientThread::EndPing() { boost::mutex::scoped_lock lock(m_pingDataMutex); - m_pingData.EndPing(); - GetCallback().SignalNetClientPingUpdate(m_pingData.MinPing(), m_pingData.AveragePing(), m_pingData.MaxPing()); + if (m_pingData.EndPing()) { + GetCallback().SignalNetClientPingUpdate(m_pingData.MinPing(), m_pingData.AveragePing(), m_pingData.MaxPing()); + } } ServerStats