aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2016-04-29 10:57:34 +0200
committerChristophe Romain <christophe.romain@process-one.net>2016-04-29 10:57:34 +0200
commit6a10916ddab5b289bc1f83b835818bb907bcda3c (patch)
treeba1402e5863f3fbecfa8bd294a72d31bd906b921 /src
parentAdd pubsub subscribe/unsubscribe hook (diff)
Let shaper cope with low resolution system clock
We no longer rely on getting unique values from clock source, so we need to handle cope with systems which does not have a microsecond resolution on system clock (such as MS Windows)
Diffstat (limited to 'src')
-rw-r--r--src/shaper.erl6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/shaper.erl b/src/shaper.erl
index a136c2130..eb82b8faa 100644
--- a/src/shaper.erl
+++ b/src/shaper.erl
@@ -124,9 +124,13 @@ update(#maxrate{} = State, Size) ->
true -> 0
end,
NextNow = p1_time_compat:system_time(micro_seconds) + Pause * 1000,
+ Div = case NextNow - State#maxrate.lasttime of
+ 0 -> 1;
+ V -> V
+ end,
{State#maxrate{lastrate =
(State#maxrate.lastrate +
- 1000000 * Size / (NextNow - State#maxrate.lasttime))
+ 1000000 * Size / Div)
/ 2,
lasttime = NextNow},
Pause}.