Index: cc/trees/thread_proxy.cc |
diff --git a/cc/trees/thread_proxy.cc b/cc/trees/thread_proxy.cc |
index 688937eda3a8f15fc3e0daf9c8452d84926f0bbe..ff99224642d50702cc64cb38e83785bfc02dae66 100644 |
--- a/cc/trees/thread_proxy.cc |
+++ b/cc/trees/thread_proxy.cc |
@@ -1334,8 +1334,7 @@ void ThreadProxy::RenewTreePriority() { |
bool smoothness_takes_priority = |
impl().layer_tree_host_impl->pinch_gesture_active() || |
impl().layer_tree_host_impl->page_scale_animation_active() || |
- (impl().layer_tree_host_impl->IsCurrentlyScrolling() && |
- !impl().layer_tree_host_impl->scroll_affects_scroll_handler()); |
+ impl().layer_tree_host_impl->IsCurrentlyScrolling(); |
// Schedule expiration if smoothness currently takes priority. |
if (smoothness_takes_priority) |
@@ -1362,8 +1361,14 @@ void ThreadProxy::RenewTreePriority() { |
} |
impl().layer_tree_host_impl->SetTreePriority(priority); |
- impl().scheduler->SetSmoothnessTakesPriority(priority == |
- SMOOTHNESS_TAKES_PRIORITY); |
+ |
+ // Only put the scheduler in impl latency prioritization mode if we don't |
+ // have a scroll listener. This gives the scroll listener a better chance of |
+ // handling scroll updates within the same frame. The tree itself is still |
+ // kept in prefer smoothness mode to allow checkerboarding. |
+ impl().scheduler->SetImplLatencyTakesPriority( |
+ priority == SMOOTHNESS_TAKES_PRIORITY && |
+ !impl().layer_tree_host_impl->scroll_affects_scroll_handler()); |
// Notify the the client of this compositor via the output surface. |
// TODO(epenner): Route this to compositor-thread instead of output-surface |