| Index: cc/delay_based_time_source.cc
|
| diff --git a/cc/delay_based_time_source.cc b/cc/delay_based_time_source.cc
|
| index d2334105f264d4323a5d8d6c98dafe286aa09932..0beb72b3130f9a96c22c2f7d39445ae53d028f7f 100644
|
| --- a/cc/delay_based_time_source.cc
|
| +++ b/cc/delay_based_time_source.cc
|
| @@ -11,6 +11,8 @@
|
|
|
| #include "base/debug/trace_event.h"
|
| #include "base/logging.h"
|
| +#include "base/message_loop.h"
|
| +#include "cc/thread.h"
|
|
|
| namespace cc {
|
|
|
| @@ -40,7 +42,8 @@ DelayBasedTimeSource::DelayBasedTimeSource(base::TimeDelta interval, Thread* thr
|
| , m_currentParameters(interval, base::TimeTicks())
|
| , m_nextParameters(interval, base::TimeTicks())
|
| , m_state(STATE_INACTIVE)
|
| - , m_timer(thread, this)
|
| + , m_thread(thread)
|
| + , m_weakFactory(ALLOW_THIS_IN_INITIALIZER_LIST(this))
|
| {
|
| }
|
|
|
| @@ -53,7 +56,7 @@ void DelayBasedTimeSource::setActive(bool active)
|
| TRACE_EVENT1("cc", "DelayBasedTimeSource::setActive", "active", active);
|
| if (!active) {
|
| m_state = STATE_INACTIVE;
|
| - m_timer.stop();
|
| + m_weakFactory.InvalidateWeakPtrs();
|
| return;
|
| }
|
|
|
| @@ -65,7 +68,7 @@ void DelayBasedTimeSource::setActive(bool active)
|
| // it runs, we use that to establish the timebase, become truly active, and
|
| // fire the first tick.
|
| m_state = STATE_STARTING;
|
| - m_timer.startOneShot(0);
|
| + m_thread->postTask(base::Bind(&DelayBasedTimeSource::onTimerFired, m_weakFactory.GetWeakPtr()));
|
| return;
|
| }
|
|
|
| @@ -222,7 +225,9 @@ void DelayBasedTimeSource::postNextTickTask(base::TimeTicks now)
|
| base::TimeDelta delay = newTickTarget - now;
|
| DCHECK(delay.InMillisecondsF() <=
|
| m_nextParameters.interval.InMillisecondsF() * (1.0 + doubleTickThreshold));
|
| - m_timer.startOneShot(delay.InSecondsF());
|
| + m_thread->postDelayedTask(base::Bind(&DelayBasedTimeSource::onTimerFired,
|
| + m_weakFactory.GetWeakPtr()),
|
| + delay.InMilliseconds());
|
|
|
| m_nextParameters.tickTarget = newTickTarget;
|
| m_currentParameters = m_nextParameters;
|
|
|