Index: webrtc/base/task_queue_libevent.cc |
diff --git a/webrtc/base/task_queue_libevent.cc b/webrtc/base/task_queue_libevent.cc |
index c80258811fca2ca88e1c0cfbd80ecaba1866784b..f9c622d73ce0a7d067315f0106c341c3ca34890b 100644 |
--- a/webrtc/base/task_queue_libevent.cc |
+++ b/webrtc/base/task_queue_libevent.cc |
@@ -61,6 +61,19 @@ void EventAssign(struct event* ev, |
RTC_CHECK_EQ(0, event_base_set(base, ev)); |
#endif |
} |
+ |
+ThreadPriority TaskQueuePriorityToThreadPriority(TaskQueue::Priority priority) { |
+ switch (priority) { |
+ case TaskQueue::HIGH: |
+ return kRealtimePriority; |
+ case TaskQueue::LOW: |
+ return kLowPriority; |
+ case TaskQueue::NORMAL: |
+ default: |
+ break; |
+ } |
+ return kNormalPriority; |
+} |
} // namespace |
struct TaskQueue::QueueContext { |
@@ -133,10 +146,13 @@ class TaskQueue::SetTimerTask : public QueuedTask { |
const uint32_t posted_; |
}; |
-TaskQueue::TaskQueue(const char* queue_name) |
+TaskQueue::TaskQueue(const char* queue_name, Priority priority /*= NORMAL*/) |
: event_base_(event_base_new()), |
wakeup_event_(new event()), |
- thread_(&TaskQueue::ThreadMain, this, queue_name) { |
+ thread_(&TaskQueue::ThreadMain, |
+ this, |
+ queue_name, |
+ TaskQueuePriorityToThreadPriority(priority)) { |
RTC_DCHECK(queue_name); |
int fds[2]; |
RTC_CHECK(pipe(fds) == 0); |