| Index: cc/thread_proxy.cc | 
| diff --git a/cc/thread_proxy.cc b/cc/thread_proxy.cc | 
| index d3aac84f1d7b01ea1446ccf4ae73a9898f8d0533..921b15a1f1f8191a5da930a89ec213ff1a5cbfea 100644 | 
| --- a/cc/thread_proxy.cc | 
| +++ b/cc/thread_proxy.cc | 
| @@ -300,6 +300,15 @@ void ThreadProxy::didLoseOutputSurfaceOnImplThread() | 
| { | 
| DCHECK(isImplThread()); | 
| TRACE_EVENT0("cc", "ThreadProxy::didLoseOutputSurfaceOnImplThread"); | 
| +    Proxy::implThread()->postTask(base::Bind(&ThreadProxy::checkOutputSurfaceStatusOnImplThread, m_implThreadWeakPtr)); | 
| +} | 
| + | 
| +void ThreadProxy::checkOutputSurfaceStatusOnImplThread() | 
| +{ | 
| +    DCHECK(isImplThread()); | 
| +    TRACE_EVENT0("cc", "ThreadProxy::checkOutputSurfaceStatusOnImplThread"); | 
| +    if (!m_layerTreeHostImpl->isContextLost()) | 
| +        return; | 
| m_schedulerOnImplThread->didLoseOutputSurface(); | 
| } | 
|  | 
| @@ -842,6 +851,9 @@ ScheduledActionDrawAndSwapResult ThreadProxy::scheduledActionDrawAndSwapInternal | 
| Proxy::mainThread()->postTask(base::Bind(&ThreadProxy::didCommitAndDrawFrame, m_mainThreadWeakPtr)); | 
| } | 
|  | 
| +    if (drawFrame) | 
| +        checkOutputSurfaceStatusOnImplThread(); | 
| + | 
| return result; | 
| } | 
|  | 
|  |