| Index: Source/core/workers/WorkerThread.cpp
|
| diff --git a/Source/core/workers/WorkerThread.cpp b/Source/core/workers/WorkerThread.cpp
|
| index 6a4ba101005434cbe96cdc2f9389af5082bb8e4a..166679e448d1e49897a71187389409c8dec51f31 100644
|
| --- a/Source/core/workers/WorkerThread.cpp
|
| +++ b/Source/core/workers/WorkerThread.cpp
|
| @@ -85,39 +85,12 @@
|
| return workerThreads().size();
|
| }
|
|
|
| -class WorkerThreadCancelableTask FINAL : public ExecutionContextTask {
|
| - WTF_MAKE_NONCOPYABLE(WorkerThreadCancelableTask); WTF_MAKE_FAST_ALLOCATED;
|
| -public:
|
| - static PassOwnPtr<WorkerThreadCancelableTask> create(const Closure& closure)
|
| - {
|
| - return adoptPtr(new WorkerThreadCancelableTask(closure));
|
| - }
|
| -
|
| - virtual void performTask(ExecutionContext*) OVERRIDE
|
| - {
|
| - if (!m_taskCanceled)
|
| - m_closure();
|
| - }
|
| -
|
| - void cancelTask() { m_taskCanceled = true; }
|
| -
|
| -private:
|
| - explicit WorkerThreadCancelableTask(const Closure& closure)
|
| - : m_closure(closure)
|
| - , m_taskCanceled(false)
|
| - { }
|
| -
|
| - Closure m_closure;
|
| - bool m_taskCanceled;
|
| -};
|
| -
|
| class WorkerSharedTimer : public SharedTimer {
|
| public:
|
| explicit WorkerSharedTimer(WorkerThread* workerThread)
|
| : m_workerThread(workerThread)
|
| , m_nextFireTime(0.0)
|
| , m_running(false)
|
| - , m_lastQueuedTask(0)
|
| { }
|
|
|
| typedef void (*SharedTimerFunction)();
|
| @@ -143,21 +116,12 @@
|
|
|
| m_running = true;
|
| m_nextFireTime = currentTime() + interval;
|
| -
|
| - if (m_lastQueuedTask)
|
| - m_lastQueuedTask->cancelTask();
|
| -
|
| - // Now queue the task as a cancellable one.
|
| - m_lastQueuedTask = WorkerThreadCancelableTask::create(bind(&WorkerSharedTimer::OnTimeout, this)).leakPtr();
|
| - m_workerThread->postDelayedTask(adoptPtr(m_lastQueuedTask), delay);
|
| + m_workerThread->postDelayedTask(createSameThreadTask(&WorkerSharedTimer::OnTimeout, this), delay);
|
| }
|
|
|
| virtual void stop()
|
| {
|
| m_running = false;
|
| - if (m_lastQueuedTask)
|
| - m_lastQueuedTask->cancelTask();
|
| - m_lastQueuedTask = 0;
|
| }
|
|
|
| double nextFireTime() { return m_nextFireTime; }
|
| @@ -166,9 +130,6 @@
|
| void OnTimeout()
|
| {
|
| ASSERT(m_workerThread->workerGlobalScope());
|
| -
|
| - m_lastQueuedTask = 0;
|
| -
|
| if (m_sharedTimerFunction && m_running && !m_workerThread->workerGlobalScope()->isClosing())
|
| m_sharedTimerFunction();
|
| }
|
| @@ -177,7 +138,6 @@
|
| SharedTimerFunction m_sharedTimerFunction;
|
| double m_nextFireTime;
|
| bool m_running;
|
| - WorkerThreadCancelableTask* m_lastQueuedTask;
|
| };
|
|
|
| class WorkerThreadTask : public blink::WebThread::Task {
|
|
|