| Index: WebCore/dom/WorkerRunLoop.cpp
|
| ===================================================================
|
| --- WebCore/dom/WorkerRunLoop.cpp (revision 10232)
|
| +++ WebCore/dom/WorkerRunLoop.cpp (working copy)
|
| @@ -98,7 +98,7 @@
|
| return m_defaultMode;
|
| }
|
|
|
| - bool operator()(PassRefPtr<WorkerRunLoop::Task> task)
|
| + bool operator()(PassRefPtr<WorkerRunLoop::Task> task) const
|
| {
|
| return m_defaultMode || m_mode == task->mode();
|
| }
|
| @@ -163,21 +163,15 @@
|
| return result;
|
| }
|
|
|
| -MessageQueueWaitResult WorkerRunLoop::runInMode(WorkerContext* context, ModePredicate& predicate)
|
| +MessageQueueWaitResult WorkerRunLoop::runInMode(WorkerContext* context, const ModePredicate& predicate)
|
| {
|
| ASSERT(context);
|
| ASSERT(context->thread());
|
| ASSERT(context->thread()->threadID() == currentThread());
|
|
|
| + double absoluteTime = (predicate.isDefaultMode() && m_sharedTimer->isActive()) ? m_sharedTimer->fireTime() : MessageQueue<RefPtr<Task> >::infiniteTime();
|
| RefPtr<Task> task;
|
| - MessageQueueWaitResult result;
|
| - if (predicate.isDefaultMode()) {
|
| - if (m_sharedTimer->isActive())
|
| - result = m_messageQueue.waitForMessageTimed(task, m_sharedTimer->fireTime());
|
| - else
|
| - result = m_messageQueue.waitForMessage(task) ? MessageQueueMessageReceived : MessageQueueTerminated;
|
| - } else
|
| - result = m_messageQueue.waitForMessageFiltered(task, predicate);
|
| + MessageQueueWaitResult result = m_messageQueue.waitForMessageFilteredWithTimeout(task, predicate, absoluteTime);
|
|
|
| switch (result) {
|
| case MessageQueueTerminated:
|
|
|