diff --git a/shell/platform/darwin/ios/ios_external_texture_gl.h b/shell/platform/darwin/ios/ios_external_texture_gl.h index 88be5cc7c466a..35230be5cd5af 100644 --- a/shell/platform/darwin/ios/ios_external_texture_gl.h +++ b/shell/platform/darwin/ios/ios_external_texture_gl.h @@ -7,6 +7,7 @@ #include "flutter/flow/texture.h" #include "flutter/fml/platform/darwin/cf_utils.h" +#include "flutter/fml/platform/darwin/scoped_nsobject.h" #include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterTexture.h" namespace flutter { @@ -33,7 +34,7 @@ class IOSExternalTextureGL : public flutter::Texture { bool NeedUpdateTexture(bool freeze); bool new_frame_ready_ = false; - NSObject* external_texture_; + fml::scoped_nsobject> external_texture_; fml::CFRef cache_ref_; fml::CFRef texture_ref_; fml::CFRef buffer_ref_; diff --git a/shell/platform/darwin/ios/ios_external_texture_gl.mm b/shell/platform/darwin/ios/ios_external_texture_gl.mm index a5e729195ce34..4167269bdabe0 100644 --- a/shell/platform/darwin/ios/ios_external_texture_gl.mm +++ b/shell/platform/darwin/ios/ios_external_texture_gl.mm @@ -16,7 +16,8 @@ IOSExternalTextureGL::IOSExternalTextureGL(int64_t textureId, NSObject* externalTexture) - : Texture(textureId), external_texture_(externalTexture) { + : Texture(textureId), + external_texture_(fml::scoped_nsobject>([externalTexture retain])) { FML_DCHECK(external_texture_); } @@ -65,7 +66,7 @@ GrContext* context) { EnsureTextureCacheExists(); if (NeedUpdateTexture(freeze)) { - auto pixelBuffer = [external_texture_ copyPixelBuffer]; + auto pixelBuffer = [external_texture_.get() copyPixelBuffer]; if (pixelBuffer) { buffer_ref_.Reset(pixelBuffer); }