| Index: cc/proxy.h
|
| diff --git a/cc/proxy.h b/cc/proxy.h
|
| index 5bce61f74202a8efee4927c387ca9733aa052058..4f4a2b0df82bff708549f09773669d281d9cfbdd 100644
|
| --- a/cc/proxy.h
|
| +++ b/cc/proxy.h
|
| @@ -8,6 +8,7 @@
|
| #include "base/basictypes.h"
|
| #include "base/logging.h"
|
| #include "base/time.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| #include <public/WebCompositorOutputSurface.h>
|
| #include "cc/cc_export.h"
|
|
|
| @@ -26,15 +27,21 @@ struct RendererCapabilities;
|
| // the compositor over to the compositor implementation.
|
| class CC_EXPORT Proxy {
|
| public:
|
| - static void setMainThread(Thread*);
|
| - static Thread* mainThread();
|
| -
|
| - static bool hasImplThread();
|
| - static void setImplThread(Thread*);
|
| - static Thread* implThread();
|
| + Thread* mainThread() const;
|
| + bool hasImplThread() const;
|
| + Thread* implThread() const;
|
|
|
| // Returns 0 if the current thread is neither the main thread nor the impl thread.
|
| - static Thread* currentThread();
|
| + Thread* currentThread() const;
|
| +
|
| + // Debug hooks
|
| + bool isMainThread() const;
|
| + bool isImplThread() const;
|
| + bool isMainThreadBlocked() const;
|
| +#ifndef NDEBUG
|
| + void setMainThreadBlocked(bool);
|
| + void setCurrentThreadIsImplThread(bool);
|
| +#endif
|
|
|
| virtual ~Proxy();
|
|
|
| @@ -90,46 +97,45 @@ public:
|
|
|
| virtual void acquireLayerTextures() = 0;
|
|
|
| - // Debug hooks
|
| - static bool isMainThread();
|
| - static bool isImplThread();
|
| - static bool isMainThreadBlocked();
|
| -#ifndef NDEBUG
|
| - static void setMainThreadBlocked(bool);
|
| -#endif
|
| -
|
| // Testing hooks
|
| virtual void loseContext() = 0;
|
|
|
| -#ifndef NDEBUG
|
| - static void setCurrentThreadIsImplThread(bool);
|
| -#endif
|
| -
|
| protected:
|
| - Proxy();
|
| + explicit Proxy(scoped_ptr<Thread> implThread);
|
| friend class DebugScopedSetImplThread;
|
| + friend class DebugScopedSetMainThread;
|
| friend class DebugScopedSetMainThreadBlocked;
|
|
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(Proxy);
|
| +
|
| + scoped_ptr<Thread> m_mainThread;
|
| + scoped_ptr<Thread> m_implThread;
|
| +#ifndef NDEBUG
|
| + bool m_implThreadIsOverridden;
|
| + bool m_isMainThreadBlocked;
|
| +#endif
|
| };
|
|
|
| class DebugScopedSetMainThreadBlocked {
|
| public:
|
| - DebugScopedSetMainThreadBlocked()
|
| + explicit DebugScopedSetMainThreadBlocked(Proxy* proxy)
|
| + : m_proxy(proxy)
|
| {
|
| #ifndef NDEBUG
|
| - DCHECK(!Proxy::isMainThreadBlocked());
|
| - Proxy::setMainThreadBlocked(true);
|
| + DCHECK(!m_proxy->isMainThreadBlocked());
|
| + m_proxy->setMainThreadBlocked(true);
|
| #endif
|
| }
|
| ~DebugScopedSetMainThreadBlocked()
|
| {
|
| #ifndef NDEBUG
|
| - DCHECK(Proxy::isMainThreadBlocked());
|
| - Proxy::setMainThreadBlocked(false);
|
| + DCHECK(m_proxy->isMainThreadBlocked());
|
| + m_proxy->setMainThreadBlocked(false);
|
| #endif
|
| }
|
| +private:
|
| + Proxy* m_proxy;
|
| };
|
|
|
| }
|
|
|