Flutter Engine
The Flutter Engine
Public Member Functions | List of all members
flutter::TextureRegistrarImpl Class Reference

#include <texture_registrar_impl.h>

Inheritance diagram for flutter::TextureRegistrarImpl:
flutter::TextureRegistrar

Public Member Functions

 TextureRegistrarImpl (FlutterDesktopTextureRegistrarRef texture_registrar_ref)
 
virtual ~TextureRegistrarImpl ()
 
 TextureRegistrarImpl (TextureRegistrarImpl const &)=delete
 
TextureRegistrarImploperator= (TextureRegistrarImpl const &)=delete
 
int64_t RegisterTexture (TextureVariant *texture) override
 
bool MarkTextureFrameAvailable (int64_t texture_id) override
 
void UnregisterTexture (int64_t texture_id, std::function< void()> callback) override
 
bool UnregisterTexture (int64_t texture_id) override
 
- Public Member Functions inherited from flutter::TextureRegistrar
virtual ~TextureRegistrar ()=default
 
virtual int64_t RegisterTexture (TextureVariant *texture)=0
 
virtual bool MarkTextureFrameAvailable (int64_t texture_id)=0
 
virtual void UnregisterTexture (int64_t texture_id, std::function< void()> callback)=0
 
virtual bool UnregisterTexture (int64_t texture_id)=0
 

Detailed Description

Definition at line 14 of file texture_registrar_impl.h.

Constructor & Destructor Documentation

◆ TextureRegistrarImpl() [1/2]

flutter::TextureRegistrarImpl::TextureRegistrarImpl ( FlutterDesktopTextureRegistrarRef  texture_registrar_ref)
explicit

Definition at line 211 of file core_implementations.cc.

213 : texture_registrar_ref_(texture_registrar_ref) {}

◆ ~TextureRegistrarImpl()

flutter::TextureRegistrarImpl::~TextureRegistrarImpl ( )
virtualdefault

◆ TextureRegistrarImpl() [2/2]

flutter::TextureRegistrarImpl::TextureRegistrarImpl ( TextureRegistrarImpl const &  )
delete

Member Function Documentation

◆ MarkTextureFrameAvailable()

bool flutter::TextureRegistrarImpl::MarkTextureFrameAvailable ( int64_t  texture_id)
overridevirtual

Implements flutter::TextureRegistrar.

Definition at line 251 of file core_implementations.cc.

251 {
253 texture_registrar_ref_, texture_id);
254}
bool FlutterDesktopTextureRegistrarMarkExternalTextureFrameAvailable(FlutterDesktopTextureRegistrarRef texture_registrar, int64_t texture_id)
int64_t texture_id

◆ operator=()

TextureRegistrarImpl & flutter::TextureRegistrarImpl::operator= ( TextureRegistrarImpl const &  )
delete

◆ RegisterTexture()

int64_t flutter::TextureRegistrarImpl::RegisterTexture ( TextureVariant texture)
overridevirtual

Implements flutter::TextureRegistrar.

Definition at line 217 of file core_implementations.cc.

217 {
219 if (auto pixel_buffer_texture = std::get_if<PixelBufferTexture>(texture)) {
221 info.pixel_buffer_config.user_data = pixel_buffer_texture;
222 info.pixel_buffer_config.callback =
223 [](size_t width, size_t height,
224 void* user_data) -> const FlutterDesktopPixelBuffer* {
225 auto texture = static_cast<PixelBufferTexture*>(user_data);
226 return texture->CopyPixelBuffer(width, height);
227 };
228 } else if (auto gpu_surface_texture =
229 std::get_if<GpuSurfaceTexture>(texture)) {
231 info.gpu_surface_config.struct_size =
233 info.gpu_surface_config.type = gpu_surface_texture->surface_type();
234 info.gpu_surface_config.user_data = gpu_surface_texture;
235 info.gpu_surface_config.callback =
236 [](size_t width, size_t height,
238 auto texture = static_cast<GpuSurfaceTexture*>(user_data);
239 return texture->ObtainDescriptor(width, height);
240 };
241 } else {
242 std::cerr << "Attempting to register unknown texture variant." << std::endl;
243 return -1;
244 }
245
247 texture_registrar_ref_, &info);
248 return texture_id;
249} // namespace flutter
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
Definition: DM.cpp:213
@ kFlutterDesktopGpuSurfaceTexture
@ kFlutterDesktopPixelBufferTexture
FlTexture * texture
int32_t height
int32_t width
int64_t FlutterDesktopTextureRegistrarRegisterExternalTexture(FlutterDesktopTextureRegistrarRef texture_registrar, const FlutterDesktopTextureInfo *info)
void * user_data

◆ UnregisterTexture() [1/2]

bool flutter::TextureRegistrarImpl::UnregisterTexture ( int64_t  texture_id)
overridevirtual

Implements flutter::TextureRegistrar.

Definition at line 279 of file core_implementations.cc.

279 {
281 return true;
282}
void UnregisterTexture(int64_t texture_id, std::function< void()> callback) override

◆ UnregisterTexture() [2/2]

void flutter::TextureRegistrarImpl::UnregisterTexture ( int64_t  texture_id,
std::function< void()>  callback 
)
overridevirtual

Implements flutter::TextureRegistrar.

Definition at line 256 of file core_implementations.cc.

257 {
258 if (callback == nullptr) {
260 texture_registrar_ref_, texture_id, nullptr, nullptr);
261 return;
262 }
263
264 struct Captures {
265 std::function<void()> callback;
266 };
267 auto captures = new Captures();
268 captures->callback = std::move(callback);
270 texture_registrar_ref_, texture_id,
271 [](void* opaque) {
272 auto captures = reinterpret_cast<Captures*>(opaque);
273 captures->callback();
274 delete captures;
275 },
276 captures);
277}
FlKeyEvent uint64_t FlKeyResponderAsyncCallback callback
Dart_NativeFunction function
Definition: fuchsia.cc:51
void FlutterDesktopTextureRegistrarUnregisterExternalTexture(FlutterDesktopTextureRegistrarRef texture_registrar, int64_t texture_id, void(*callback)(void *user_data), void *user_data)

The documentation for this class was generated from the following files: