| Index: webrtc/base/task_queue.h
|
| diff --git a/webrtc/base/task_queue.h b/webrtc/base/task_queue.h
|
| index eeabe05fabc886db22bddb0d085bf503d5cf275d..a6a70364ac4a19df27e28a2580efdeca6568f393 100644
|
| --- a/webrtc/base/task_queue.h
|
| +++ b/webrtc/base/task_queue.h
|
| @@ -178,6 +178,11 @@ class LOCKABLE TaskQueue {
|
| void PostTaskAndReply(std::unique_ptr<QueuedTask> task,
|
| std::unique_ptr<QueuedTask> reply);
|
|
|
| + // Schedules a task to execute a specified number of milliseconds from when
|
| + // the call is made. The precision should be considered as "best effort"
|
| + // and in some cases, such as on Windows when all high precision timers have
|
| + // been used up, can be off by as much as 15 millseconds (although 8 would be
|
| + // more likely). This can be mitigated by limiting the use of delayed tasks.
|
| void PostDelayedTask(std::unique_ptr<QueuedTask> task, uint32_t milliseconds);
|
|
|
| template <class Closure>
|
| @@ -185,6 +190,7 @@ class LOCKABLE TaskQueue {
|
| PostTask(std::unique_ptr<QueuedTask>(new ClosureTask<Closure>(closure)));
|
| }
|
|
|
| + // See documentation above for performance expectations.
|
| template <class Closure>
|
| void PostDelayedTask(const Closure& closure, uint32_t milliseconds) {
|
| PostDelayedTask(
|
| @@ -254,10 +260,12 @@ class LOCKABLE TaskQueue {
|
| dispatch_queue_t queue_;
|
| QueueContext* const context_;
|
| #elif defined(WEBRTC_WIN)
|
| + class MultimediaTimer;
|
| typedef std::unordered_map<UINT_PTR, std::unique_ptr<QueuedTask>>
|
| DelayedTasks;
|
| static bool ThreadMain(void* context);
|
| - static bool ProcessQueuedMessages(DelayedTasks* delayed_tasks);
|
| + static bool ProcessQueuedMessages(DelayedTasks* delayed_tasks,
|
| + std::vector<MultimediaTimer>* timers);
|
|
|
| class WorkerThread : public PlatformThread {
|
| public:
|
|
|