| Flutter Linux Embedder |

fl_texture_gl.cc
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "flutter/shell/platform/linux/public/flutter_linux/fl_texture_gl.h"
6 #include "flutter/shell/platform/linux/fl_texture_gl_private.h"
7
8 #include <epoxy/gl.h>
9 #include <gmodule.h>
10 #include <cstdio>
11
12 typedef struct {
13 int64_t id;
14 } FlTextureGLPrivate;
15
16 static void fl_texture_gl_texture_iface_init(FlTextureInterface* iface);
17
18 G_DEFINE_TYPE_WITH_CODE(FlTextureGL,
19 fl_texture_gl,
20 G_TYPE_OBJECT,
21 G_IMPLEMENT_INTERFACE(fl_texture_get_type(),
22 fl_texture_gl_texture_iface_init);
23 G_ADD_PRIVATE(FlTextureGL))
24
25 // Implements FlTexture::set_id
26 static void fl_texture_gl_set_id(FlTexture* texture, int64_t id) {
27 FlTextureGL* self = FL_TEXTURE_GL(texture);
28 FlTextureGLPrivate* priv = reinterpret_cast<FlTextureGLPrivate*>(
29 fl_texture_gl_get_instance_private(self));
30 priv->id = id;
31 }
32
33 // Implements FlTexture::set_id
34 static int64_t fl_texture_gl_get_id(FlTexture* texture) {
35 FlTextureGL* self = FL_TEXTURE_GL(texture);
36 FlTextureGLPrivate* priv = reinterpret_cast<FlTextureGLPrivate*>(
37 fl_texture_gl_get_instance_private(self));
38 return priv->id;
39 }
40
41 static void fl_texture_gl_texture_iface_init(FlTextureInterface* iface) {
42 iface->set_id = fl_texture_gl_set_id;
43 iface->get_id = fl_texture_gl_get_id;
44 }
45
46 static void fl_texture_gl_class_init(FlTextureGLClass* klass) {}
47
48 static void fl_texture_gl_init(FlTextureGL* self) {}
49
50 gboolean fl_texture_gl_populate(FlTextureGL* self,
51 uint32_t width,
52 uint32_t height,
53 FlutterOpenGLTexture* opengl_texture,
54 GError** error) {
55 uint32_t target = 0, name = 0;
56 if (!FL_TEXTURE_GL_GET_CLASS(self)->populate(self, &target, &name, &width,
57 &height, error)) {
58 return FALSE;
59 }
60
61 opengl_texture->target = target;
62 opengl_texture->name = name;
63 opengl_texture->format = GL_RGBA8;
64 opengl_texture->destruction_callback = nullptr;
65 opengl_texture->user_data = nullptr;
66 opengl_texture->width = width;
67 opengl_texture->height = height;
68
69 return TRUE;
70 }
id
int64_t id
Definition: fl_texture_gl.cc:26
fl_texture_gl_get_id
static int64_t fl_texture_gl_get_id(FlTexture *texture)
Definition: fl_texture_gl.cc:34
fl_texture_gl_private.h
FlTextureGLPrivate
Definition: fl_texture_gl.cc:12
FlTextureGLPrivate::id
int64_t id
Definition: fl_texture_gl.cc:13
height
G_BEGIN_DECLS int height
Definition: fl_backing_store_provider.h:37
G_DEFINE_TYPE_WITH_CODE
G_DEFINE_TYPE_WITH_CODE(FlTextureGL, fl_texture_gl, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE(fl_texture_get_type(), fl_texture_gl_texture_iface_init);G_ADD_PRIVATE(FlTextureGL)) static void fl_texture_gl_set_id(FlTexture *texture
fl_texture_gl.h
TRUE
return TRUE
Definition: fl_pixel_buffer_texture_test.cc:53
priv
FlTextureGLPrivate * priv
Definition: fl_texture_gl.cc:28
fl_texture_gl_populate
gboolean fl_texture_gl_populate(FlTextureGL *self, uint32_t width, uint32_t height, FlutterOpenGLTexture *opengl_texture, GError **error)
Definition: fl_texture_gl.cc:50
fl_texture_gl_texture_iface_init
static void fl_texture_gl_texture_iface_init(FlTextureInterface *iface)
Definition: fl_texture_gl.cc:41
error
const uint8_t uint32_t uint32_t GError ** error
Definition: fl_pixel_buffer_texture_test.cc:40
target
uint32_t * target
Definition: fl_texture_registrar_test.cc:40
width
const uint8_t uint32_t * width
Definition: fl_pixel_buffer_texture_test.cc:38
fl_texture_gl_class_init
static void fl_texture_gl_class_init(FlTextureGLClass *klass)
Definition: fl_texture_gl.cc:46
fl_texture_gl_init
static void fl_texture_gl_init(FlTextureGL *self)
Definition: fl_texture_gl.cc:48