Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(140)

Side by Side Diff: cc/thread_proxy.cc

Issue 11606012: cc: Unify context losing machinery (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: reboot Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/thread_proxy.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/thread_proxy.h" 5 #include "cc/thread_proxy.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "cc/delay_based_time_source.h" 10 #include "cc/delay_based_time_source.h"
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 if (m_commitRequestSentToImplThread) 293 if (m_commitRequestSentToImplThread)
294 return; 294 return;
295 m_commitRequestSentToImplThread = true; 295 m_commitRequestSentToImplThread = true;
296 Proxy::implThread()->postTask(base::Bind(&ThreadProxy::setNeedsCommitOnImplT hread, m_implThreadWeakPtr)); 296 Proxy::implThread()->postTask(base::Bind(&ThreadProxy::setNeedsCommitOnImplT hread, m_implThreadWeakPtr));
297 } 297 }
298 298
299 void ThreadProxy::didLoseOutputSurfaceOnImplThread() 299 void ThreadProxy::didLoseOutputSurfaceOnImplThread()
300 { 300 {
301 DCHECK(isImplThread()); 301 DCHECK(isImplThread());
302 TRACE_EVENT0("cc", "ThreadProxy::didLoseOutputSurfaceOnImplThread"); 302 TRACE_EVENT0("cc", "ThreadProxy::didLoseOutputSurfaceOnImplThread");
303 Proxy::implThread()->postTask(base::Bind(&ThreadProxy::checkOutputSurfaceSta tusOnImplThread, m_implThreadWeakPtr));
304 }
305
306 void ThreadProxy::checkOutputSurfaceStatusOnImplThread()
307 {
308 DCHECK(isImplThread());
309 TRACE_EVENT0("cc", "ThreadProxy::checkOutputSurfaceStatusOnImplThread");
310 if (!m_layerTreeHostImpl->isContextLost())
311 return;
303 m_schedulerOnImplThread->didLoseOutputSurface(); 312 m_schedulerOnImplThread->didLoseOutputSurface();
304 } 313 }
305 314
306 void ThreadProxy::onSwapBuffersCompleteOnImplThread() 315 void ThreadProxy::onSwapBuffersCompleteOnImplThread()
307 { 316 {
308 DCHECK(isImplThread()); 317 DCHECK(isImplThread());
309 TRACE_EVENT0("cc", "ThreadProxy::onSwapBuffersCompleteOnImplThread"); 318 TRACE_EVENT0("cc", "ThreadProxy::onSwapBuffersCompleteOnImplThread");
310 m_schedulerOnImplThread->didSwapBuffersComplete(); 319 m_schedulerOnImplThread->didSwapBuffersComplete();
311 Proxy::mainThread()->postTask(base::Bind(&ThreadProxy::didCompleteSwapBuffer s, m_mainThreadWeakPtr)); 320 Proxy::mainThread()->postTask(base::Bind(&ThreadProxy::didCompleteSwapBuffer s, m_mainThreadWeakPtr));
312 } 321 }
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
835 m_readbackRequestOnImplThread = 0; 844 m_readbackRequestOnImplThread = 0;
836 } else if (drawFrame) 845 } else if (drawFrame)
837 result.didSwap = m_layerTreeHostImpl->swapBuffers(); 846 result.didSwap = m_layerTreeHostImpl->swapBuffers();
838 847
839 // Tell the main thread that the the newly-commited frame was drawn. 848 // Tell the main thread that the the newly-commited frame was drawn.
840 if (m_nextFrameIsNewlyCommittedFrameOnImplThread) { 849 if (m_nextFrameIsNewlyCommittedFrameOnImplThread) {
841 m_nextFrameIsNewlyCommittedFrameOnImplThread = false; 850 m_nextFrameIsNewlyCommittedFrameOnImplThread = false;
842 Proxy::mainThread()->postTask(base::Bind(&ThreadProxy::didCommitAndDrawF rame, m_mainThreadWeakPtr)); 851 Proxy::mainThread()->postTask(base::Bind(&ThreadProxy::didCommitAndDrawF rame, m_mainThreadWeakPtr));
843 } 852 }
844 853
854 if (drawFrame)
855 checkOutputSurfaceStatusOnImplThread();
856
845 return result; 857 return result;
846 } 858 }
847 859
848 void ThreadProxy::acquireLayerTextures() 860 void ThreadProxy::acquireLayerTextures()
849 { 861 {
850 // Called when the main thread needs to modify a layer texture that is used 862 // Called when the main thread needs to modify a layer texture that is used
851 // directly by the compositor. 863 // directly by the compositor.
852 // This method will block until the next compositor draw if there is a 864 // This method will block until the next compositor draw if there is a
853 // previously committed frame that is still undrawn. This is necessary to 865 // previously committed frame that is still undrawn. This is necessary to
854 // ensure that the main thread does not monopolize access to the textures. 866 // ensure that the main thread does not monopolize access to the textures.
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
1094 } 1106 }
1095 1107
1096 void ThreadProxy::capturePictureOnImplThread(CompletionEvent* completion, skia:: RefPtr<SkPicture>* picture) 1108 void ThreadProxy::capturePictureOnImplThread(CompletionEvent* completion, skia:: RefPtr<SkPicture>* picture)
1097 { 1109 {
1098 DCHECK(isImplThread()); 1110 DCHECK(isImplThread());
1099 *picture = m_layerTreeHostImpl->capturePicture(); 1111 *picture = m_layerTreeHostImpl->capturePicture();
1100 completion->signal(); 1112 completion->signal();
1101 } 1113 }
1102 1114
1103 } // namespace cc 1115 } // namespace cc
OLDNEW
« no previous file with comments | « cc/thread_proxy.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698