| Index: cc/output/context_provider.h
|
| diff --git a/cc/output/context_provider.h b/cc/output/context_provider.h
|
| index 2245b643e134b464d0db441cd4bd5dfae0ca2d2e..34db04b3564e4c9b8018f74239f08510dbed714d 100644
|
| --- a/cc/output/context_provider.h
|
| +++ b/cc/output/context_provider.h
|
| @@ -12,6 +12,7 @@
|
| #include "base/memory/ref_counted.h"
|
| #include "base/synchronization/lock.h"
|
| #include "cc/base/cc_export.h"
|
| +#include "gpu/command_buffer/client/context_support.h"
|
| #include "gpu/command_buffer/common/capabilities.h"
|
|
|
| class GrContext;
|
| @@ -35,18 +36,10 @@ class ContextProvider : public base::RefCountedThreadSafe<ContextProvider> {
|
| // lock from GetLock(), so is not always supported. Most use of
|
| // ContextProvider should be single-thread only on the thread that
|
| // BindToCurrentThread is run on.
|
| - class ScopedContextLock {
|
| + class CC_EXPORT ScopedContextLock {
|
| public:
|
| - explicit ScopedContextLock(ContextProvider* context_provider)
|
| - : context_provider_(context_provider),
|
| - context_lock_(*context_provider_->GetLock()) {
|
| - // Allow current thread to use |context_provider_|.
|
| - context_provider_->DetachFromThread();
|
| - }
|
| - ~ScopedContextLock() {
|
| - // Allow usage by thread for which |context_provider_| is bound to.
|
| - context_provider_->DetachFromThread();
|
| - }
|
| + explicit ScopedContextLock(ContextProvider* context_provider);
|
| + ~ScopedContextLock();
|
|
|
| gpu::gles2::GLES2Interface* ContextGL() {
|
| return context_provider_->ContextGL();
|
| @@ -55,6 +48,7 @@ class ContextProvider : public base::RefCountedThreadSafe<ContextProvider> {
|
| private:
|
| ContextProvider* const context_provider_;
|
| base::AutoLock context_lock_;
|
| + std::unique_ptr<gpu::ContextSupport::ScopedBusy> busy_;
|
| };
|
|
|
| // Bind the 3d context to the current thread. This should be called before
|
|
|