Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
fl_view_renderer.cc File Reference

Go to the source code of this file.

Classes

struct  FlViewRendererPrivate
 

Enumerations

enum  {
  SIGNAL_FIRST_FRAME ,
  LAST_SIGNAL
}
 

Functions

 G_DEFINE_TYPE_WITH_PRIVATE (FlViewRenderer, fl_view_renderer, GTK_TYPE_DRAWING_AREA) static void fl_view_renderer_present_layers_default(FlViewRenderer *self
 
static void fl_view_renderer_dispose (GObject *object)
 
static void fl_view_renderer_class_init (FlViewRendererClass *klass)
 
static void fl_view_renderer_init (FlViewRenderer *self)
 
void fl_view_renderer_set_background_color (FlViewRenderer *self, const GdkRGBA *color)
 
void fl_view_renderer_paint_background (FlViewRenderer *self, cairo_t *cr)
 
void fl_view_renderer_present_layers (FlViewRenderer *self, const FlutterLayer **layers, size_t layers_count)
 
void fl_view_renderer_notify_frame (FlViewRenderer *self)
 

Variables

static guint fl_view_renderer_signals [LAST_SIGNAL]
 
const FlutterLayer ** layers
 
const FlutterLayer size_t layers_count
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
SIGNAL_FIRST_FRAME 
LAST_SIGNAL 

Definition at line 15 of file fl_view_renderer.cc.

@ LAST_SIGNAL
@ SIGNAL_FIRST_FRAME

Function Documentation

◆ fl_view_renderer_class_init()

static void fl_view_renderer_class_init ( FlViewRendererClass *  klass)
static

Definition at line 40 of file fl_view_renderer.cc.

40 {
41 G_OBJECT_CLASS(klass)->dispose = fl_view_renderer_dispose;
42
43 klass->present_layers = fl_view_renderer_present_layers_default;
44
46 g_signal_new("first-frame", fl_view_renderer_get_type(),
47 G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
48}
static void fl_view_renderer_dispose(GObject *object)
static guint fl_view_renderer_signals[LAST_SIGNAL]

References fl_view_renderer_dispose(), fl_view_renderer_signals, and SIGNAL_FIRST_FRAME.

◆ fl_view_renderer_dispose()

static void fl_view_renderer_dispose ( GObject *  object)
static

Definition at line 31 of file fl_view_renderer.cc.

31 {
33 fl_view_renderer_get_instance_private(FL_VIEW_RENDERER(object)));
34
35 g_clear_pointer(&priv->background_color, gdk_rgba_free);
36
37 G_OBJECT_CLASS(fl_view_renderer_parent_class)->dispose(object);
38}
FlAccessibilityHandlerPrivate * priv

References priv.

Referenced by fl_view_renderer_class_init().

◆ fl_view_renderer_init()

static void fl_view_renderer_init ( FlViewRenderer *  self)
static

Definition at line 50 of file fl_view_renderer.cc.

50 {
52 fl_view_renderer_get_instance_private(self));
53
54 GdkRGBA default_background = {
55 .red = 0.0, .green = 0.0, .blue = 0.0, .alpha = 1.0};
56 priv->background_color = gdk_rgba_copy(&default_background);
57}

References priv, and self.

◆ fl_view_renderer_notify_frame()

void fl_view_renderer_notify_frame ( FlViewRenderer *  renderer)

fl_view_renderer_notify_frame: @renderer: an #FlViewRenderer.

Notifies that a frame has been rendered. Subclasses call this on each frame. The "first-frame" signal is emitted on the first call.

Definition at line 99 of file fl_view_renderer.cc.

99 {
100 g_return_if_fail(FL_IS_VIEW_RENDERER(self));
101
103 fl_view_renderer_get_instance_private(self));
104
105 if (!priv->have_first_frame) {
106 priv->have_first_frame = TRUE;
108 }
109}

References fl_view_renderer_signals, priv, self, SIGNAL_FIRST_FRAME, and TRUE.

Referenced by G_DEFINE_TYPE(), and G_DEFINE_TYPE().

◆ fl_view_renderer_paint_background()

void fl_view_renderer_paint_background ( FlViewRenderer *  renderer,
cairo_t *  cr 
)

fl_view_renderer_paint_background: @renderer: an #FlViewRenderer. @cr: a #cairo_t to paint to.

Paints the background color behind the Flutter frame. Subclasses call this at the start of their draw implementation.

Definition at line 73 of file fl_view_renderer.cc.

73 {
74 g_return_if_fail(FL_IS_VIEW_RENDERER(self));
75
77 fl_view_renderer_get_instance_private(self));
78
79 // Don't bother drawing if fully transparent - the widget above this will
80 // already be drawn by GTK.
81 if (priv->background_color->red == 0 && priv->background_color->green == 0 &&
82 priv->background_color->blue == 0 && priv->background_color->alpha == 0) {
83 return;
84 }
85
86 gdk_cairo_set_source_rgba(cr, priv->background_color);
87 cairo_paint(cr);
88}
void gdk_cairo_set_source_rgba(cairo_t *cr, const GdkRGBA *rgba)
Definition mock_gtk.cc:154

References gdk_cairo_set_source_rgba(), priv, and self.

Referenced by fl_view_renderer_opengl_draw(), and fl_view_renderer_software_draw().

◆ fl_view_renderer_present_layers()

void fl_view_renderer_present_layers ( FlViewRenderer *  renderer,
const FlutterLayer **  layers,
size_t  layers_count 
)

fl_view_renderer_present_layers: @renderer: an #FlViewRenderer. @layers: layers to draw. @layers_count: number of layers.

Composites a frame into the renderer. This method can be called from any thread.

Definition at line 90 of file fl_view_renderer.cc.

92 {
93 g_return_if_fail(FL_IS_VIEW_RENDERER(self));
94
95 FlViewRendererClass* klass = FL_VIEW_RENDERER_GET_CLASS(self);
96 klass->present_layers(self, layers, layers_count);
97}
const FlutterLayer size_t layers_count
const FlutterLayer ** layers

References layers, layers_count, and self.

Referenced by fl_view_present_layers().

◆ fl_view_renderer_set_background_color()

void fl_view_renderer_set_background_color ( FlViewRenderer *  renderer,
const GdkRGBA *  color 
)

fl_view_renderer_set_background_color: @renderer: an #FlViewRenderer. @color: the background color.

Sets the background color drawn behind the Flutter frame.

Definition at line 59 of file fl_view_renderer.cc.

60 {
61 g_return_if_fail(FL_IS_VIEW_RENDERER(self));
62
64 fl_view_renderer_get_instance_private(self));
65
66 gdk_rgba_free(priv->background_color);
67 priv->background_color = gdk_rgba_copy(color);
68
69 // Redraw so the new background color is shown.
70 gtk_widget_queue_draw(GTK_WIDGET(self));
71}
void gtk_widget_queue_draw(GtkWidget *widget)
Definition mock_gtk.cc:271

References gtk_widget_queue_draw(), priv, and self.

Referenced by fl_view_set_background_color().

◆ G_DEFINE_TYPE_WITH_PRIVATE()

G_DEFINE_TYPE_WITH_PRIVATE ( FlViewRenderer  ,
fl_view_renderer  ,
GTK_TYPE_DRAWING_AREA   
)

Variable Documentation

◆ fl_view_renderer_signals

guint fl_view_renderer_signals[LAST_SIGNAL]
static

◆ layers

const FlutterLayer** layers

Definition at line 26 of file fl_view_renderer.cc.

Referenced by impeller::CapabilitiesVK::CapabilitiesVK(), flutter::testing::DiffContextTest::CreateContainerLayer(), flutter::testing::DiffContextTest::CreateOpacityLater(), flutter::testing::expectSoftwareRenderingOutputMatches(), fl_compositor_opengl_composite_layers(), fl_compositor_software_composite_layers(), fl_renderable_present_layers(), fl_view_present_layers(), fl_view_renderer_opengl_present_layers(), fl_view_renderer_present_layers(), fl_view_renderer_software_present_layers(), G_DECLARE_DERIVABLE_TYPE(), InferExternalViewEmbedderFromArgs(), flutter::testing::EmbedderTestCompositor::Present(), flutter::FlutterCompositor::Present(), flutter::CompositorOpenGL::Present(), flutter::CompositorSoftware::Present(), flutter::testing::EmbedderConfigBuilder::SetCompositor(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), vulkan::VulkanApplication::VulkanApplication(), and vulkan::VulkanDevice::VulkanDevice().

◆ layers_count

const FlutterLayer size_t layers_count
Initial value:
{
g_assert_not_reached()

Definition at line 27 of file fl_view_renderer.cc.

Referenced by flutter::testing::expectSoftwareRenderingOutputMatches(), fl_compositor_opengl_composite_layers(), fl_compositor_software_composite_layers(), fl_renderable_present_layers(), fl_view_present_layers(), fl_view_renderer_opengl_present_layers(), fl_view_renderer_present_layers(), fl_view_renderer_software_present_layers(), G_DECLARE_DERIVABLE_TYPE(), InferExternalViewEmbedderFromArgs(), flutter::testing::EmbedderTestCompositor::Present(), flutter::FlutterCompositor::Present(), flutter::CompositorOpenGL::Present(), flutter::CompositorSoftware::Present(), flutter::testing::EmbedderConfigBuilder::SetCompositor(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), and flutter::testing::TEST_P().