12#include "gtest/gtest.h"
26 fl_test_registrar_texture,
28 TEST_REGISTRAR_TEXTURE,
32struct _FlTestRegistrarTexture {
33 FlTextureGL parent_instance;
37 fl_test_registrar_texture,
38 fl_texture_gl_get_type())
40static gboolean fl_test_registrar_texture_populate(FlTextureGL*
texture,
46 EXPECT_TRUE(FL_IS_TEST_REGISTRAR_TEXTURE(
texture));
59 FlTestRegistrarTextureClass* klass) {
60 FL_TEXTURE_GL_CLASS(klass)->populate = fl_test_registrar_texture_populate;
66 return FL_TEST_REGISTRAR_TEXTURE(
67 g_object_new(fl_test_registrar_texture_get_type(),
nullptr));
71 g_return_val_if_fail(FL_TEXTURE_REGISTRAR(pointer), ((
void*)NULL));
72 FlTextureRegistrar* registrar = FL_TEXTURE_REGISTRAR(pointer);
75 int64_t*
id =
static_cast<int64_t*
>(malloc(
sizeof(int64_t)));
81TEST(FlTextureRegistrarTest, MockRegistrar) {
84 EXPECT_TRUE(FL_IS_MOCK_TEXTURE_REGISTRAR(registrar));
87 FL_TEXTURE_REGISTRAR(registrar),
texture));
90 FL_TEXTURE_REGISTRAR(registrar),
texture));
93 FL_TEXTURE_REGISTRAR(registrar),
texture));
98TEST(FlTextureRegistrarTest, RegisterTexture) {
101 bool register_called =
false;
105 register_called =
true;
108 bool unregister_called =
false;
112 unregister_called =
true;
120 EXPECT_FALSE(register_called);
122 EXPECT_TRUE(register_called);
123 EXPECT_FALSE(unregister_called);
125 EXPECT_TRUE(unregister_called);
129TEST(FlTextureRegistrarTest, MarkTextureFrameAvailable) {
132 bool register_called =
false;
136 register_called =
true;
141 UnregisterExternalTexture,
145 MarkExternalTextureFrameAvailable,
152 EXPECT_TRUE(register_called);
158TEST(FlTextureRegistrarTest, MarkInvalidTextureFrameAvailable) {
163 RegisterExternalTexture,
167 UnregisterExternalTexture,
188 DISABLED_RegistrarRegisterTextureInMultipleThreads) {
194 RegisterExternalTexture,
198 UnregisterExternalTexture,
212 pthread_join(threads[t], &
id);
213 ids[t] =
static_cast<int64_t*
>(
id)[0];
g_autoptr(GMutexLocker) locker
G_MODULE_EXPORT FlDartProject * fl_dart_project_new()
G_MODULE_EXPORT FlEngine * fl_engine_new(FlDartProject *project)
FlutterEngineProcTable * fl_engine_get_embedder_api(FlEngine *self)
G_MODULE_EXPORT int64_t fl_texture_get_id(FlTexture *self)
G_MODULE_EXPORT gboolean fl_texture_registrar_register_texture(FlTextureRegistrar *self, FlTexture *texture)
G_MODULE_EXPORT gboolean fl_texture_registrar_unregister_texture(FlTextureRegistrar *self, FlTexture *texture)
G_MODULE_EXPORT gboolean fl_texture_registrar_mark_texture_frame_available(FlTextureRegistrar *self, FlTexture *texture)
FlTexture * fl_texture_registrar_lookup_texture(FlTextureRegistrar *self, int64_t texture_id)
FlTextureRegistrar * fl_texture_registrar_new(FlEngine *engine)
uint32_t uint32_t uint32_t uint32_t GError ** error
static void fl_test_registrar_texture_init(FlTestRegistrarTexture *self)
static constexpr uint32_t kBufferWidth
static void * add_mock_texture_to_registrar(void *pointer)
uint32_t uint32_t uint32_t uint32_t * height
uint32_t uint32_t * format
TEST(FlTextureRegistrarTest, MockRegistrar)
uint32_t uint32_t uint32_t * width
G_DEFINE_TYPE(FlTestRegistrarTexture, fl_test_registrar_texture, fl_texture_gl_get_type()) static gboolean fl_test_registrar_texture_populate(FlTextureGL *texture
static constexpr uint32_t kRealBufferHeight
G_DECLARE_FINAL_TYPE(FlTestRegistrarTexture, fl_test_registrar_texture, FL, TEST_REGISTRAR_TEXTURE, FlTextureGL) struct _FlTestRegistrarTexture
A simple texture.
static void fl_test_registrar_texture_class_init(FlTestRegistrarTextureClass *klass)
static constexpr uint32_t kBufferHeight
static constexpr uint64_t kThreadCount
static FlTestRegistrarTexture * fl_test_registrar_texture_new()
static constexpr uint32_t kRealBufferWidth
FlTexture * fl_mock_texture_registrar_get_texture(FlMockTextureRegistrar *self)
FlMockTextureRegistrar * fl_mock_texture_registrar_new()
gboolean fl_mock_texture_registrar_get_frame_available(FlMockTextureRegistrar *self)
#define MOCK_ENGINE_PROC(proc, mock_impl)
FlutterEngineRegisterExternalTextureFnPtr RegisterExternalTexture
FlutterEngineUnregisterExternalTextureFnPtr UnregisterExternalTexture
FlutterEngineMarkExternalTextureFrameAvailableFnPtr MarkExternalTextureFrameAvailable