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

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

Issue 10702135: Merge 120858 - [chromium] Separate LayerRenderer initialization from updateLayers (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1180/
Patch Set: Created 8 years, 5 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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 ASSERT(isMainThread()); 96 ASSERT(isMainThread());
97 ASSERT(!m_started); 97 ASSERT(!m_started);
98 } 98 }
99 99
100 bool CCThreadProxy::compositeAndReadback(void *pixels, const IntRect& rect) 100 bool CCThreadProxy::compositeAndReadback(void *pixels, const IntRect& rect)
101 { 101 {
102 TRACE_EVENT("CCThreadPRoxy::compositeAndReadback", this, 0); 102 TRACE_EVENT("CCThreadPRoxy::compositeAndReadback", this, 0);
103 ASSERT(isMainThread()); 103 ASSERT(isMainThread());
104 ASSERT(m_layerTreeHost); 104 ASSERT(m_layerTreeHost);
105 105
106 if (!m_layerRendererInitialized) { 106 if (!m_layerTreeHost->initializeLayerRendererIfNeeded()) {
107 TRACE_EVENT("compositeAndReadback_EarlyOut_LR_Uninitialized", this, 0); 107 TRACE_EVENT("compositeAndReadback_EarlyOut_LR_Uninitialized", this, 0);
108 return false; 108 return false;
109 } 109 }
110 110
111 111
112 // Perform a synchronous commit. 112 // Perform a synchronous commit.
113 CCCompletionEvent beginFrameCompletion; 113 CCCompletionEvent beginFrameCompletion;
114 CCProxy::implThread()->postTask(createCCThreadTask(this, &CCThreadProxy::for ceBeginFrameOnImplThread, AllowCrossThreadAccess(&beginFrameCompletion))); 114 CCProxy::implThread()->postTask(createCCThreadTask(this, &CCThreadProxy::for ceBeginFrameOnImplThread, AllowCrossThreadAccess(&beginFrameCompletion)));
115 beginFrameCompletion.wait(); 115 beginFrameCompletion.wait();
116 beginFrame(); 116 beginFrame();
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 // FIXME: recreate the context if it was requested by the impl thread. 502 // FIXME: recreate the context if it was requested by the impl thread.
503 m_layerTreeHost->updateAnimations(request->monotonicFrameBeginTime); 503 m_layerTreeHost->updateAnimations(request->monotonicFrameBeginTime);
504 m_layerTreeHost->layout(); 504 m_layerTreeHost->layout();
505 505
506 // Clear the commit flag after updating animations and layout here --- objec ts that only 506 // Clear the commit flag after updating animations and layout here --- objec ts that only
507 // layout when painted will trigger another setNeedsCommit inside 507 // layout when painted will trigger another setNeedsCommit inside
508 // updateLayers. 508 // updateLayers.
509 m_commitRequested = false; 509 m_commitRequested = false;
510 m_forcedCommitRequested = false; 510 m_forcedCommitRequested = false;
511 511
512 if (!m_layerTreeHost->updateLayers(*request->updater)) 512 if (!m_layerTreeHost->initializeLayerRendererIfNeeded())
513 return; 513 return;
514 514
515 m_layerTreeHost->updateLayers(*request->updater);
516
515 // Once single buffered layers are committed, they cannot be modified until 517 // Once single buffered layers are committed, they cannot be modified until
516 // they are drawn by the impl thread. 518 // they are drawn by the impl thread.
517 m_texturesAcquired = false; 519 m_texturesAcquired = false;
518 520
519 m_layerTreeHost->willCommit(); 521 m_layerTreeHost->willCommit();
520 // Before applying scrolls and calling animate, we set m_animateRequested to false. 522 // Before applying scrolls and calling animate, we set m_animateRequested to false.
521 // If it is true now, it means setNeedAnimate was called again. Call setNeed sCommit 523 // If it is true now, it means setNeedAnimate was called again. Call setNeed sCommit
522 // now so that we get begin frame when this one is done. 524 // now so that we get begin frame when this one is done.
523 if (m_animateRequested) 525 if (m_animateRequested)
524 setNeedsCommit(); 526 setNeedsCommit();
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
871 m_layerTreeHost->deleteContentsTexturesOnImplThread(m_layerTreeHostImpl->con tentsTextureAllocator()); 873 m_layerTreeHost->deleteContentsTexturesOnImplThread(m_layerTreeHostImpl->con tentsTextureAllocator());
872 *recreateSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(adoptRef(c ontextPtr), textureUploader); 874 *recreateSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(adoptRef(c ontextPtr), textureUploader);
873 if (*recreateSucceeded) { 875 if (*recreateSucceeded) {
874 *capabilities = m_layerTreeHostImpl->layerRendererCapabilities(); 876 *capabilities = m_layerTreeHostImpl->layerRendererCapabilities();
875 m_schedulerOnImplThread->didRecreateContext(); 877 m_schedulerOnImplThread->didRecreateContext();
876 } 878 }
877 completion->signal(); 879 completion->signal();
878 } 880 }
879 881
880 } // namespace WebCore 882 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698