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 Screenshot 2024-11-23 at 3 22 11 PM [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;