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

Unified Diff: cc/thread_proxy.cc

Issue 11232051: Remove static thread pointers from CC (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Address code review comments and fix all cc_unittests Created 8 years, 2 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 side-by-side diff with in-line comments
Download patch
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)
{
}

Powered by Google App Engine
This is Rietveld 408576698