From c1b6fd8c6910a2ca1e873ec9ebb2c51d757aded5 Mon Sep 17 00:00:00 2001
From: gaaclarke <30870216+gaaclarke@users.noreply.github.com>
Date: Sun, 24 Nov 2024 12:01:34 -0800
Subject: [PATCH] Replaces Resource's shared_ptr with unique_ptr
(flutter/engine#56778)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
A non-inconsequential amount of time is spent in ~shared_ptr for no reason in ~Resource
[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
---
engine/src/flutter/impeller/renderer/command.h | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/engine/src/flutter/impeller/renderer/command.h b/engine/src/flutter/impeller/renderer/command.h
index 62553269fd..a63f52f35a 100644
--- a/engine/src/flutter/impeller/renderer/command.h
+++ b/engine/src/flutter/impeller/renderer/command.h
@@ -29,7 +29,8 @@ namespace impeller {
#endif // IMPELLER_DEBUG
template
-struct Resource {
+class Resource {
+ public:
using ResourceType = T;
ResourceType resource;
@@ -40,7 +41,7 @@ struct Resource {
Resource(const ShaderMetadata& metadata, ResourceType p_resource)
: resource(p_resource),
- dynamic_metadata_(std::make_shared(metadata)) {}
+ dynamic_metadata_(std::make_unique(metadata)) {}
const ShaderMetadata* GetMetadata() const {
return dynamic_metadata_ ? dynamic_metadata_.get() : metadata_;
@@ -51,7 +52,7 @@ struct Resource {
const ShaderMetadata* metadata_ = nullptr;
// Dynamically generated shader metadata.
- std::shared_ptr dynamic_metadata_ = nullptr;
+ std::unique_ptr dynamic_metadata_ = nullptr;
};
using BufferResource = Resource;