12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- // Copyright 2019 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 "components/exo/frame_sink_resource_manager.h"
- #include <utility>
- namespace exo {
- FrameSinkResourceManager::FrameSinkResourceManager() {}
- FrameSinkResourceManager::~FrameSinkResourceManager() {
- ClearAllCallbacks();
- }
- bool FrameSinkResourceManager::HasReleaseCallbackForResource(
- viz::ResourceId id) {
- return release_callbacks_.find(id) != release_callbacks_.end();
- }
- void FrameSinkResourceManager::SetResourceReleaseCallback(
- viz::ResourceId id,
- ReleaseCallback callback) {
- DCHECK(!callback.is_null());
- release_callbacks_[id] = std::move(callback);
- }
- viz::ResourceId FrameSinkResourceManager::AllocateResourceId() {
- return id_generator_.GenerateNextId();
- }
- bool FrameSinkResourceManager::HasNoCallbacks() const {
- return release_callbacks_.empty();
- }
- void FrameSinkResourceManager::ReclaimResource(viz::ReturnedResource resource) {
- auto it = release_callbacks_.find(resource.id);
- if (it != release_callbacks_.end()) {
- std::move(it->second).Run(std::move(resource));
- release_callbacks_.erase(it);
- }
- }
- void FrameSinkResourceManager::ClearAllCallbacks() {
- for (auto& callback : release_callbacks_)
- std::move(callback.second)
- .Run(viz::ReturnedResource(viz::kInvalidResourceId, gpu::SyncToken(),
- /*release_fence=*/gfx::GpuFenceHandle(),
- /*count=*/0, /*lost=*/true));
- release_callbacks_.clear();
- }
- } // namespace exo
|