7 #include <condition_variable>
13 #include "flutter/fml/macros.h"
39 :
public std::enable_shared_from_this<ResourceManagerVK> {
53 static std::shared_ptr<ResourceManagerVK>
Create();
65 void Reclaim(std::unique_ptr<ResourceVK> resource);
75 using Reclaimables = std::vector<std::unique_ptr<ResourceVK>>;
78 std::mutex reclaimables_mutex_;
79 std::condition_variable reclaimables_cv_;
80 Reclaimables reclaimables_;
81 bool should_exit_ =
false;
110 template <
class ResourceType_>
119 : resource_(
std::move(resource)) {}
139 template <
class ResourceType_>
150 : resource_manager_(
std::move(resource_manager)) {}
161 : resource_manager_(
std::move(resource_manager)),
170 FML_CHECK(resource_) <<
"UniqueResourceVKT was reclaimed.";
172 return resource_.get()->Get();
180 resource_ = std::make_unique<ResourceVKT<ResourceType>>(std::move(other));
191 if (
auto manager = resource_manager_.lock()) {
192 manager->Reclaim(std::move(resource_));
198 std::weak_ptr<ResourceManagerVK> resource_manager_;
199 std::unique_ptr<ResourceVKT<ResourceType>> resource_;