| Index: cc/trees/thread_proxy.cc
 | 
| diff --git a/cc/trees/thread_proxy.cc b/cc/trees/thread_proxy.cc
 | 
| index 167cca9792f8b3036a9ee70803b2fe077dcda3d4..1097805855691baae4dfb1fb7d4ca2c58ae473dc 100644
 | 
| --- a/cc/trees/thread_proxy.cc
 | 
| +++ b/cc/trees/thread_proxy.cc
 | 
| @@ -154,9 +154,9 @@ bool ThreadProxy::IsStarted() const {
 | 
|  }
 | 
|  
 | 
|  bool ThreadProxy::CommitToActiveTree() const {
 | 
| -  // With ThreadProxy we use a pending tree and activate it once it's ready to
 | 
| -  // draw.
 | 
| -  return false;
 | 
| +  // With ThreadProxy and impl-side painting, we use a pending tree and activate
 | 
| +  // it once it's ready to draw.
 | 
| +  return !impl().layer_tree_host_impl->settings().impl_side_painting;
 | 
|  }
 | 
|  
 | 
|  void ThreadProxy::SetLayerTreeHostClientReady() {
 | 
| @@ -701,6 +701,12 @@ void ThreadProxy::ScheduledActionSendBeginMainFrame() {
 | 
|    impl().timing_history.DidBeginMainFrame();
 | 
|  }
 | 
|  
 | 
| +void ThreadProxy::SendBeginMainFrameNotExpectedSoon() {
 | 
| +  Proxy::MainThreadTaskRunner()->PostTask(
 | 
| +      FROM_HERE, base::Bind(&ThreadProxy::BeginMainFrameNotExpectedSoon,
 | 
| +                            main_thread_weak_ptr_));
 | 
| +}
 | 
| +
 | 
|  void ThreadProxy::BeginMainFrame(
 | 
|      scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state) {
 | 
|    benchmark_instrumentation::ScopedBeginFrameTask begin_frame_task(
 | 
| @@ -861,6 +867,12 @@ void ThreadProxy::BeginMainFrame(
 | 
|    layer_tree_host()->DidBeginMainFrame();
 | 
|  }
 | 
|  
 | 
| +void ThreadProxy::BeginMainFrameNotExpectedSoon() {
 | 
| +  TRACE_EVENT0("cc", "ThreadProxy::BeginMainFrameNotExpectedSoon");
 | 
| +  DCHECK(IsMainThread());
 | 
| +  layer_tree_host()->BeginMainFrameNotExpectedSoon();
 | 
| +}
 | 
| +
 | 
|  void ThreadProxy::StartCommitOnImplThread(CompletionEvent* completion,
 | 
|                                            ResourceUpdateQueue* raw_queue) {
 | 
|    TRACE_EVENT0("cc", "ThreadProxy::StartCommitOnImplThread");
 | 
| @@ -1021,8 +1033,11 @@ DrawResult ThreadProxy::DrawSwapInternal(bool forced_draw) {
 | 
|    impl().timing_history.DidStartDrawing();
 | 
|    base::AutoReset<bool> mark_inside(&impl().inside_draw, true);
 | 
|  
 | 
| -  if (impl().layer_tree_host_impl->pending_tree())
 | 
| -    impl().layer_tree_host_impl->pending_tree()->UpdateDrawProperties();
 | 
| +  if (impl().layer_tree_host_impl->pending_tree()) {
 | 
| +    bool update_lcd_text = false;
 | 
| +    impl().layer_tree_host_impl->pending_tree()->UpdateDrawProperties(
 | 
| +        update_lcd_text);
 | 
| +  }
 | 
|  
 | 
|    // This method is called on a forced draw, regardless of whether we are able
 | 
|    // to produce a frame, as the calling site on main thread is blocked until its
 | 
| 
 |