Index: net/base/prioritized_dispatcher.cc |
diff --git a/net/base/prioritized_dispatcher.cc b/net/base/prioritized_dispatcher.cc |
index afa12f84e25b5a4fc7caeb54df1b9ce59ce79841..9b96e3f751a509e2b89cf078ef7dd3621cae751d 100644 |
--- a/net/base/prioritized_dispatcher.cc |
+++ b/net/base/prioritized_dispatcher.cc |
@@ -19,15 +19,15 @@ PrioritizedDispatcher::PrioritizedDispatcher(const Limits& limits) |
max_running_jobs_(limits.reserved_slots.size()), |
num_running_jobs_(0) { |
size_t total = 0; |
- for (size_t i = limits.reserved_slots.size(); i > 0; --i) { |
- total += limits.reserved_slots[i - 1]; |
- max_running_jobs_[i - 1] = total; |
+ for (size_t i = 0; i < limits.reserved_slots.size(); ++i) { |
+ total += limits.reserved_slots[i]; |
+ max_running_jobs_[i] = total; |
} |
// Unreserved slots are available for all priorities. |
DCHECK_LE(total, limits.total_jobs) << "sum(reserved_slots) <= total_jobs"; |
size_t spare = limits.total_jobs - total; |
- for (size_t i = 0; i < max_running_jobs_.size(); ++i) { |
- max_running_jobs_[i] += spare; |
+ for (size_t i = limits.reserved_slots.size(); i > 0; --i) { |
+ max_running_jobs_[i - 1] += spare; |
} |
} |
@@ -50,7 +50,7 @@ void PrioritizedDispatcher::Cancel(const Handle& handle) { |
} |
PrioritizedDispatcher::Job* PrioritizedDispatcher::EvictOldestLowest() { |
- Handle handle = queue_.FirstMax(); |
+ Handle handle = queue_.FirstMin(); |
if (handle.is_null()) |
return NULL; |
Job* job = handle.value(); |
@@ -78,7 +78,7 @@ PrioritizedDispatcher::Handle PrioritizedDispatcher::ChangePriority( |
void PrioritizedDispatcher::OnJobFinished() { |
DCHECK_GT(num_running_jobs_, 0u); |
--num_running_jobs_; |
- Handle handle = queue_.FirstMin(); |
+ Handle handle = queue_.FirstMax(); |
if (handle.is_null()) { |
DCHECK_EQ(0u, queue_.size()); |
return; |