diff --git a/impeller/renderer/backend/vulkan/descriptor_pool_vk_unittests.cc b/impeller/renderer/backend/vulkan/descriptor_pool_vk_unittests.cc index 34bbcdd91bdfe..2deb9b3453642 100644 --- a/impeller/renderer/backend/vulkan/descriptor_pool_vk_unittests.cc +++ b/impeller/renderer/backend/vulkan/descriptor_pool_vk_unittests.cc @@ -3,6 +3,7 @@ // found in the LICENSE file. #include "flutter/testing/testing.h" // IWYU pragma: keep. +#include "fml/closure.h" #include "fml/synchronization/waitable_event.h" #include "impeller/renderer/backend/vulkan/descriptor_pool_vk.h" #include "impeller/renderer/backend/vulkan/resource_manager_vk.h" @@ -23,27 +24,6 @@ TEST(DescriptorPoolRecyclerVKTest, GetDescriptorPoolRecyclerCreatesNewPools) { context->Shutdown(); } -namespace { - -// Invokes the provided callback when the destructor is called. -// -// Can be moved, but not copied. -class DeathRattle final { - public: - explicit DeathRattle(std::function callback) - : callback_(std::move(callback)) {} - - DeathRattle(DeathRattle&&) = default; - DeathRattle& operator=(DeathRattle&&) = default; - - ~DeathRattle() { callback_(); } - - private: - std::function callback_; -}; - -} // namespace - TEST(DescriptorPoolRecyclerVKTest, ReclaimMakesDescriptorPoolAvailable) { auto const context = MockVulkanContextBuilder().Build(); @@ -64,10 +44,10 @@ TEST(DescriptorPoolRecyclerVKTest, ReclaimMakesDescriptorPoolAvailable) { // destroyed. That should give us a non-flaky signal that the pool has been // reclaimed as well. auto waiter = fml::AutoResetWaitableEvent(); - auto rattle = DeathRattle([&waiter]() { waiter.Signal(); }); + auto rattle = fml::ScopedCleanupClosure([&waiter]() { waiter.Signal(); }); { - UniqueResourceVKT resource(context->GetResourceManager(), - std::move(rattle)); + UniqueResourceVKT resource( + context->GetResourceManager(), std::move(rattle)); } waiter.Wait(); } @@ -98,10 +78,10 @@ TEST(DescriptorPoolRecyclerVKTest, ReclaimDropsDescriptorPoolIfSizeIsExceeded) { // See note above. for (auto i = 0u; i < 2; i++) { auto waiter = fml::AutoResetWaitableEvent(); - auto rattle = DeathRattle([&waiter]() { waiter.Signal(); }); + auto rattle = fml::ScopedCleanupClosure([&waiter]() { waiter.Signal(); }); { - UniqueResourceVKT resource(context->GetResourceManager(), - std::move(rattle)); + UniqueResourceVKT resource( + context->GetResourceManager(), std::move(rattle)); } waiter.Wait(); } @@ -126,10 +106,10 @@ TEST(DescriptorPoolRecyclerVKTest, ReclaimDropsDescriptorPoolIfSizeIsExceeded) { for (auto i = 0u; i < 2; i++) { auto waiter = fml::AutoResetWaitableEvent(); - auto rattle = DeathRattle([&waiter]() { waiter.Signal(); }); + auto rattle = fml::ScopedCleanupClosure([&waiter]() { waiter.Signal(); }); { - UniqueResourceVKT resource(context->GetResourceManager(), - std::move(rattle)); + UniqueResourceVKT resource( + context->GetResourceManager(), std::move(rattle)); } waiter.Wait(); } diff --git a/impeller/renderer/backend/vulkan/resource_manager_vk_unittests.cc b/impeller/renderer/backend/vulkan/resource_manager_vk_unittests.cc index fd5f10d8e0f70..78f653a37eefa 100644 --- a/impeller/renderer/backend/vulkan/resource_manager_vk_unittests.cc +++ b/impeller/renderer/backend/vulkan/resource_manager_vk_unittests.cc @@ -6,6 +6,7 @@ #include #include #include +#include "fml/closure.h" #include "fml/synchronization/waitable_event.h" #include "gtest/gtest.h" #include "impeller/renderer/backend/vulkan/resource_manager_vk.h" @@ -20,39 +21,19 @@ TEST(ResourceManagerVKTest, CreatesANewInstance) { EXPECT_NE(a, b); } -namespace { - -// Invokes the provided callback when the destructor is called. -// -// Can be moved, but not copied. -class DeathRattle final { - public: - explicit DeathRattle(std::function callback) - : callback_(std::move(callback)) {} - - DeathRattle(DeathRattle&&) = default; - DeathRattle& operator=(DeathRattle&&) = default; - - ~DeathRattle() { callback_(); } - - private: - std::function callback_; -}; - -} // namespace - TEST(ResourceManagerVKTest, ReclaimMovesAResourceAndDestroysIt) { auto const manager = ResourceManagerVK::Create(); auto waiter = fml::AutoResetWaitableEvent(); auto dead = false; - auto rattle = DeathRattle([&waiter]() { waiter.Signal(); }); + auto rattle = fml::ScopedCleanupClosure([&waiter]() { waiter.Signal(); }); // Not killed immediately. EXPECT_FALSE(waiter.IsSignaledForTest()); { - auto resource = UniqueResourceVKT(manager, std::move(rattle)); + auto resource = UniqueResourceVKT( + manager, std::move(rattle)); } waiter.Wait();