| Index: cc/thread_proxy.cc
|
| diff --git a/cc/thread_proxy.cc b/cc/thread_proxy.cc
|
| index ee08f77cb3be14c3c6a6506e27944f14a1ccc0c1..2f419b27ebd50c715d95b8f17187b20b63ae7750 100644
|
| --- a/cc/thread_proxy.cc
|
| +++ b/cc/thread_proxy.cc
|
| @@ -15,6 +15,7 @@
|
| #include "cc/layer_tree_host.h"
|
| #include "cc/scheduler.h"
|
| #include "cc/scoped_thread_proxy.h"
|
| +#include "cc/thread.h"
|
| #include "cc/thread_task.h"
|
| #include <public/WebSharedGraphicsContext3D.h>
|
| #include <wtf/CurrentTime.h>
|
| @@ -30,13 +31,14 @@ const double contextRecreationTickRate = 0.03;
|
|
|
| namespace cc {
|
|
|
| -scoped_ptr<Proxy> ThreadProxy::create(LayerTreeHost* layerTreeHost)
|
| +scoped_ptr<Proxy> ThreadProxy::create(LayerTreeHost* layerTreeHost, Thread* implThread)
|
| {
|
| - return make_scoped_ptr(new ThreadProxy(layerTreeHost)).PassAs<Proxy>();
|
| + return make_scoped_ptr(new ThreadProxy(layerTreeHost, implThread)).PassAs<Proxy>();
|
| }
|
|
|
| -ThreadProxy::ThreadProxy(LayerTreeHost* layerTreeHost)
|
| - : m_animateRequested(false)
|
| +ThreadProxy::ThreadProxy(LayerTreeHost* layerTreeHost, Thread* implThread)
|
| + : Proxy(implThread)
|
| + , m_animateRequested(false)
|
| , m_commitRequested(false)
|
| , m_commitRequestSentToImplThread(false)
|
| , m_forcedCommitRequested(false)
|
| @@ -79,7 +81,7 @@ bool ThreadProxy::compositeAndReadback(void *pixels, const IntRect& rect)
|
|
|
| // Perform a synchronous commit.
|
| {
|
| - DebugScopedSetMainThreadBlocked mainThreadBlocked;
|
| + DebugScopedSetMainThreadBlocked mainThreadBlocked(this);
|
| CompletionEvent beginFrameCompletion;
|
| Proxy::implThread()->postTask(createThreadTask(this, &ThreadProxy::forceBeginFrameOnImplThread, &beginFrameCompletion));
|
| beginFrameCompletion.wait();
|
| @@ -93,7 +95,7 @@ bool ThreadProxy::compositeAndReadback(void *pixels, const IntRect& rect)
|
| request.rect = rect;
|
| request.pixels = pixels;
|
| {
|
| - DebugScopedSetMainThreadBlocked mainThreadBlocked;
|
| + DebugScopedSetMainThreadBlocked mainThreadBlocked(this);
|
| Proxy::implThread()->postTask(createThreadTask(this, &ThreadProxy::requestReadbackOnImplThread, &request));
|
| request.completion.wait();
|
| }
|
| @@ -133,7 +135,7 @@ void ThreadProxy::finishAllRendering()
|
| DCHECK(Proxy::isMainThread());
|
|
|
| // Make sure all GL drawing is finished on the impl thread.
|
| - DebugScopedSetMainThreadBlocked mainThreadBlocked;
|
| + DebugScopedSetMainThreadBlocked mainThreadBlocked(this);
|
| CompletionEvent completion;
|
| Proxy::implThread()->postTask(createThreadTask(this, &ThreadProxy::finishAllRenderingOnImplThread, &completion));
|
| completion.wait();
|
| @@ -172,7 +174,7 @@ void ThreadProxy::setSurfaceReadyOnImplThread()
|
| void ThreadProxy::setVisible(bool visible)
|
| {
|
| TRACE_EVENT0("cc", "ThreadProxy::setVisible");
|
| - DebugScopedSetMainThreadBlocked mainThreadBlocked;
|
| + DebugScopedSetMainThreadBlocked mainThreadBlocked(this);
|
| CompletionEvent completion;
|
| Proxy::implThread()->postTask(createThreadTask(this, &ThreadProxy::setVisibleOnImplThread, &completion, visible));
|
| completion.wait();
|
| @@ -194,7 +196,7 @@ bool ThreadProxy::initializeRenderer()
|
| CompletionEvent completion;
|
| bool initializeSucceeded = false;
|
| RendererCapabilities capabilities;
|
| - DebugScopedSetMainThreadBlocked mainThreadBlocked;
|
| + DebugScopedSetMainThreadBlocked mainThreadBlocked(this);
|
| Proxy::implThread()->postTask(createThreadTask(this, &ThreadProxy::initializeRendererOnImplThread,
|
| &completion,
|
| &initializeSucceeded,
|
| @@ -227,7 +229,7 @@ bool ThreadProxy::recreateContext()
|
| CompletionEvent completion;
|
| bool recreateSucceeded = false;
|
| RendererCapabilities capabilities;
|
| - DebugScopedSetMainThreadBlocked mainThreadBlocked;
|
| + DebugScopedSetMainThreadBlocked mainThreadBlocked(this);
|
| Proxy::implThread()->postTask(createThreadTask(this, &ThreadProxy::recreateContextOnImplThread,
|
| &completion,
|
| context.release(),
|
| @@ -244,7 +246,7 @@ void ThreadProxy::renderingStats(RenderingStats* stats)
|
| {
|
| DCHECK(isMainThread());
|
|
|
| - DebugScopedSetMainThreadBlocked mainThreadBlocked;
|
| + DebugScopedSetMainThreadBlocked mainThreadBlocked(this);
|
| CompletionEvent completion;
|
| Proxy::implThread()->postTask(createThreadTask(this, &ThreadProxy::renderingStatsOnImplThread,
|
| &completion,
|
| @@ -391,7 +393,7 @@ void ThreadProxy::start()
|
| DCHECK(isMainThread());
|
| DCHECK(Proxy::implThread());
|
| // Create LayerTreeHostImpl.
|
| - DebugScopedSetMainThreadBlocked mainThreadBlocked;
|
| + DebugScopedSetMainThreadBlocked mainThreadBlocked(this);
|
| CompletionEvent completion;
|
| scoped_ptr<InputHandler> handler = m_layerTreeHost->createInputHandler();
|
| Proxy::implThread()->postTask(createThreadTask(this, &ThreadProxy::initializeImplOnImplThread, &completion, handler.release()));
|
| @@ -408,7 +410,7 @@ void ThreadProxy::stop()
|
|
|
| // Synchronously deletes the impl.
|
| {
|
| - DebugScopedSetMainThreadBlocked mainThreadBlocked;
|
| + DebugScopedSetMainThreadBlocked mainThreadBlocked(this);
|
|
|
| CompletionEvent completion;
|
| Proxy::implThread()->postTask(createThreadTask(this, &ThreadProxy::layerTreeHostClosedOnImplThread, &completion));
|
| @@ -424,7 +426,7 @@ void ThreadProxy::stop()
|
|
|
| void ThreadProxy::forceSerializeOnSwapBuffers()
|
| {
|
| - DebugScopedSetMainThreadBlocked mainThreadBlocked;
|
| + DebugScopedSetMainThreadBlocked mainThreadBlocked(this);
|
| CompletionEvent completion;
|
| Proxy::implThread()->postTask(createThreadTask(this, &ThreadProxy::forceSerializeOnSwapBuffersOnImplThread, &completion));
|
| completion.wait();
|
| @@ -570,7 +572,7 @@ void ThreadProxy::beginFrame()
|
| {
|
| TRACE_EVENT0("cc", "commit");
|
|
|
| - DebugScopedSetMainThreadBlocked mainThreadBlocked;
|
| + DebugScopedSetMainThreadBlocked mainThreadBlocked(this);
|
|
|
| base::TimeTicks startTime = base::TimeTicks::HighResNow();
|
| CompletionEvent completion;
|
| @@ -613,7 +615,7 @@ void ThreadProxy::beginFrameCompleteOnImplThread(CompletionEvent* completion, Te
|
|
|
| m_layerTreeHost->contentsTextureManager()->pushTexturePrioritiesToBackings();
|
|
|
| - m_currentTextureUpdateControllerOnImplThread = TextureUpdateController::create(this, Proxy::implThread(), queue.Pass(), m_layerTreeHostImpl->resourceProvider());
|
| + m_currentTextureUpdateControllerOnImplThread = TextureUpdateController::create(this, Proxy::implThread(), queue.Pass(), m_layerTreeHostImpl->resourceProvider(), hasImplThread());
|
| m_currentTextureUpdateControllerOnImplThread->performMoreUpdates(
|
| m_schedulerOnImplThread->anticipatedDrawTime());
|
|
|
| @@ -745,7 +747,7 @@ void ThreadProxy::acquireLayerTextures()
|
| return;
|
|
|
| TRACE_EVENT0("cc", "ThreadProxy::acquireLayerTextures");
|
| - DebugScopedSetMainThreadBlocked mainThreadBlocked;
|
| + DebugScopedSetMainThreadBlocked mainThreadBlocked(this);
|
| CompletionEvent completion;
|
| Proxy::implThread()->postTask(createThreadTask(this, &ThreadProxy::acquireLayerTexturesForMainThreadOnImplThread, &completion));
|
| completion.wait(); // Block until it is safe to write to layer textures from the main thread.
|
| @@ -831,7 +833,7 @@ public:
|
|
|
| private:
|
| explicit ThreadProxyContextRecreationTimer(ThreadProxy* proxy)
|
| - : Timer(Proxy::mainThread(), this)
|
| + : Timer(proxy->mainThread(), this)
|
| , m_proxy(proxy)
|
| {
|
| }
|
|
|