| Index: gpu/command_buffer/service/fence_manager.cc
|
| diff --git a/gpu/command_buffer/service/fence_manager.cc b/gpu/command_buffer/service/fence_manager.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..748ba9ad2dc6f039e1c0012a2e4a43be2c45ab4f
|
| --- /dev/null
|
| +++ b/gpu/command_buffer/service/fence_manager.cc
|
| @@ -0,0 +1,48 @@
|
| +// Copyright 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 "gpu/command_buffer/service/fence_manager.h"
|
| +
|
| +#include <stdint.h>
|
| +
|
| +#include "base/logging.h"
|
| +#include "ui/gl/gl_fence.h"
|
| +
|
| +namespace gpu {
|
| +namespace gles2 {
|
| +
|
| +FenceManager::FenceManager() {}
|
| +
|
| +FenceManager::~FenceManager() {}
|
| +
|
| +void FenceManager::Destroy(bool have_context) {
|
| + if (!have_context) {
|
| + for (auto& fence_entry : fences_)
|
| + fence_entry.second.get()->Invalidate();
|
| + }
|
| + fences_.clear();
|
| +}
|
| +
|
| +void FenceManager::AddFence(std::unique_ptr<gl::GLFence> fence,
|
| + int32_t service_id) {
|
| + DCHECK(fences_.find(service_id) == fences_.end());
|
| + fences_[service_id] = std::move(fence);
|
| +}
|
| +
|
| +void FenceManager::RemoveFence(int32_t service_id) {
|
| + GLFenceMap::iterator iter = fences_.find(service_id);
|
| + DCHECK(iter != fences_.end());
|
| + fences_.erase(iter);
|
| +}
|
| +
|
| +gl::GLFence* FenceManager::LookupFence(int32_t service_id) {
|
| + GLFenceMap::const_iterator iter = fences_.find(service_id);
|
| + if (iter != fences_.end())
|
| + return iter->second.get();
|
| +
|
| + return NULL;
|
| +}
|
| +
|
| +} // namespace gles2
|
| +} // namespace gpu
|
|
|