blob: 7842136c8f719e0ca05dc665202e991ffebcb017 [file] [log] [blame]
// Copyright (c) 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "cc/output/context_provider.h"
namespace cc {
ContextProvider::ScopedContextLock::ScopedContextLock(
ContextProvider* context_provider)
: context_provider_(context_provider),
context_lock_(*context_provider_->GetLock()) {
// Allow current thread to use |context_provider_|.
context_provider_->DetachFromThread();
busy_ = context_provider_->CacheController()->ClientBecameBusy();
}
ContextProvider::ScopedContextLock::~ScopedContextLock() {
// Let ContextCacheController know we are no longer busy.
context_provider_->CacheController()->ClientBecameNotBusy(std::move(busy_));
// Allow usage by thread for which |context_provider_| is bound to.
context_provider_->DetachFromThread();
}
} // namespace cc