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

Side by Side Diff: Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp

Issue 10199014: Merge 114800 - [chromium] Plumb a compositor surface ready notification through to the threaded com… (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1084/
Patch Set: Created 8 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 173
174 // Leak the context pointer so we can transfer ownership of it to the other side... 174 // Leak the context pointer so we can transfer ownership of it to the other side...
175 GraphicsContext3D* contextPtr = context.release().leakRef(); 175 GraphicsContext3D* contextPtr = context.release().leakRef();
176 ASSERT(contextPtr->hasOneRef()); 176 ASSERT(contextPtr->hasOneRef());
177 177
178 CCProxy::implThread()->postTask(createCCThreadTask(this, &CCThreadProxy::ini tializeContextOnImplThread, 178 CCProxy::implThread()->postTask(createCCThreadTask(this, &CCThreadProxy::ini tializeContextOnImplThread,
179 AllowCrossThreadAccess(co ntextPtr))); 179 AllowCrossThreadAccess(co ntextPtr)));
180 return true; 180 return true;
181 } 181 }
182 182
183 void CCThreadProxy::setSurfaceReady()
184 {
185 TRACE_EVENT0("cc", "CCThreadProxy::setSurfaceReady");
186 CCProxy::implThread()->postTask(createCCThreadTask(this, &CCThreadProxy::set SurfaceReadyOnImplThread));
187 }
188
189 void CCThreadProxy::setSurfaceReadyOnImplThread()
190 {
191 TRACE_EVENT0("cc", "CCThreadProxy::setSurfaceReadyOnImplThread");
192 m_schedulerOnImplThread->setCanBeginFrame(true);
193 }
194
183 bool CCThreadProxy::initializeLayerRenderer() 195 bool CCThreadProxy::initializeLayerRenderer()
184 { 196 {
185 TRACE_EVENT("CCThreadProxy::initializeLayerRenderer", this, 0); 197 TRACE_EVENT("CCThreadProxy::initializeLayerRenderer", this, 0);
186 // Make a blocking call to initializeLayerRendererOnImplThread. The results of that call 198 // Make a blocking call to initializeLayerRendererOnImplThread. The results of that call
187 // are pushed into the initializeSucceeded and capabilities local variables. 199 // are pushed into the initializeSucceeded and capabilities local variables.
188 CCCompletionEvent completion; 200 CCCompletionEvent completion;
189 bool initializeSucceeded = false; 201 bool initializeSucceeded = false;
190 LayerRendererCapabilities capabilities; 202 LayerRendererCapabilities capabilities;
191 CCProxy::implThread()->postTask(createCCThreadTask(this, &CCThreadProxy::ini tializeLayerRendererOnImplThread, 203 CCProxy::implThread()->postTask(createCCThreadTask(this, &CCThreadProxy::ini tializeLayerRendererOnImplThread,
192 AllowCrossThreadAccess(&c ompletion), 204 AllowCrossThreadAccess(&c ompletion),
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 } 717 }
706 718
707 void CCThreadProxy::initializeImplOnImplThread(CCCompletionEvent* completion) 719 void CCThreadProxy::initializeImplOnImplThread(CCCompletionEvent* completion)
708 { 720 {
709 TRACE_EVENT("CCThreadProxy::initializeImplOnImplThread", this, 0); 721 TRACE_EVENT("CCThreadProxy::initializeImplOnImplThread", this, 0);
710 ASSERT(isImplThread()); 722 ASSERT(isImplThread());
711 m_layerTreeHostImpl = m_layerTreeHost->createLayerTreeHostImpl(this); 723 m_layerTreeHostImpl = m_layerTreeHost->createLayerTreeHostImpl(this);
712 const double displayRefreshInterval = 1.0 / 60.0; 724 const double displayRefreshInterval = 1.0 / 60.0;
713 OwnPtr<CCFrameRateController> frameRateController = adoptPtr(new CCFrameRate Controller(CCDelayBasedTimeSource::create(displayRefreshInterval, CCProxy::implT hread()))); 725 OwnPtr<CCFrameRateController> frameRateController = adoptPtr(new CCFrameRate Controller(CCDelayBasedTimeSource::create(displayRefreshInterval, CCProxy::implT hread())));
714 m_schedulerOnImplThread = CCScheduler::create(this, frameRateController.rele ase()); 726 m_schedulerOnImplThread = CCScheduler::create(this, frameRateController.rele ase());
715 m_schedulerOnImplThread->setCanBeginFrame(true); // FIXME: Set this when we actually can begin a frame.
716 m_schedulerOnImplThread->setVisible(m_layerTreeHostImpl->visible()); 727 m_schedulerOnImplThread->setVisible(m_layerTreeHostImpl->visible());
717 728
718 m_inputHandlerOnImplThread = CCInputHandler::create(m_layerTreeHostImpl.get( )); 729 m_inputHandlerOnImplThread = CCInputHandler::create(m_layerTreeHostImpl.get( ));
719 m_compositorIdentifier = m_inputHandlerOnImplThread->identifier(); 730 m_compositorIdentifier = m_inputHandlerOnImplThread->identifier();
720 731
721 completion->signal(); 732 completion->signal();
722 } 733 }
723 734
724 void CCThreadProxy::initializeContextOnImplThread(GraphicsContext3D* context) 735 void CCThreadProxy::initializeContextOnImplThread(GraphicsContext3D* context)
725 { 736 {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 m_layerTreeHost->deleteContentsTexturesOnImplThread(m_layerTreeHostImpl->con tentsTextureAllocator()); 783 m_layerTreeHost->deleteContentsTexturesOnImplThread(m_layerTreeHostImpl->con tentsTextureAllocator());
773 *recreateSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(adoptRef(c ontextPtr)); 784 *recreateSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(adoptRef(c ontextPtr));
774 if (*recreateSucceeded) { 785 if (*recreateSucceeded) {
775 *capabilities = m_layerTreeHostImpl->layerRendererCapabilities(); 786 *capabilities = m_layerTreeHostImpl->layerRendererCapabilities();
776 m_schedulerOnImplThread->didRecreateContext(); 787 m_schedulerOnImplThread->didRecreateContext();
777 } 788 }
778 completion->signal(); 789 completion->signal();
779 } 790 }
780 791
781 } // namespace WebCore 792 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h ('k') | Source/WebKit/chromium/ChangeLog » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698