[Libreoffice-commits] online.git: wsd/DocumentBroker.cpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Tue Mar 28 05:12:54 UTC 2017
wsd/DocumentBroker.cpp | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
New commits:
commit 06249045006c438e41ec7037778fcc57017735ec
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Mon Mar 27 20:50:30 2017 -0400
wsd: flush sockets using timed loops
Change-Id: If6cc6194aa36a770913b777a8f19617fea6ba4a7
Reviewed-on: https://gerrit.libreoffice.org/35786
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
Tested-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index 97b81fdd..384e66cf 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -248,8 +248,17 @@ void DocumentBroker::pollThread()
}
// Flush socket data.
- for (int i = 0; i < 7 && _poll->getSocketCount() > 0; ++i)
- _poll->poll(POLL_TIMEOUT_MS / 5);
+ const int flushTimeoutMs = POLL_TIMEOUT_MS * 2; // ~1000ms
+ const auto flushStartTime = std::chrono::steady_clock::now();
+ while (_poll->getSocketCount())
+ {
+ const auto now = std::chrono::steady_clock::now();
+ const int elapsedMs = std::chrono::duration_cast<std::chrono::milliseconds>(now - flushStartTime).count();
+ if (elapsedMs > flushTimeoutMs)
+ break;
+
+ _poll->poll(std::min(flushTimeoutMs - elapsedMs, POLL_TIMEOUT_MS / 5));
+ }
// Terminate properly while we can.
auto lock = getLock();
More information about the Libreoffice-commits
mailing list