Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
fl_view_monitor.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 <gtk/gtk.h>
6
9
12
13 // View being monitored.
14 FlView* view;
15
16 // Isolate to call callbacks with.
18
19 // Callbacks.
20 void (*on_first_frame)(void);
21};
22
23G_DEFINE_TYPE(FlViewMonitor, fl_view_monitor, G_TYPE_OBJECT)
24
25static void first_frame_cb(FlViewMonitor* self) {
26 flutter::IsolateScope scope(self->isolate);
27 if (self->on_first_frame) {
28 self->on_first_frame();
29 }
30}
31
32static void fl_view_monitor_dispose(GObject* object) {
33 FlViewMonitor* self = FL_VIEW_MONITOR(object);
34
35 // Disconnect all handlers using data. If we try and disconnect them
36 // individually they generate warnings after the widget has been destroyed.
37 g_signal_handlers_disconnect_by_data(self->view, self);
38 g_clear_object(&self->view);
39
40 G_OBJECT_CLASS(fl_view_monitor_parent_class)->dispose(object);
41}
42
43static void fl_view_monitor_class_init(FlViewMonitorClass* klass) {
44 G_OBJECT_CLASS(klass)->dispose = fl_view_monitor_dispose;
45}
46
47static void fl_view_monitor_init(FlViewMonitor* self) {}
48
49G_MODULE_EXPORT FlViewMonitor* fl_view_monitor_new(
50 FlView* view,
51 void (*on_first_frame)(void)) {
52 FlViewMonitor* self =
53 FL_VIEW_MONITOR(g_object_new(fl_view_monitor_get_type(), nullptr));
54
55 self->view = FL_VIEW(g_object_ref(view));
57 self->on_first_frame = on_first_frame;
58 g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb),
59 self);
60
61 return self;
62}
static Isolate Current()
FlView * view
G_DEFINE_TYPE(FlBasicMessageChannelResponseHandle, fl_basic_message_channel_response_handle, G_TYPE_OBJECT) static void fl_basic_message_channel_response_handle_dispose(GObject *object)
G_MODULE_EXPORT FlViewMonitor * fl_view_monitor_new(FlView *view, void(*on_first_frame)(void))
static void fl_view_monitor_dispose(GObject *object)
static void fl_view_monitor_class_init(FlViewMonitorClass *klass)
static void fl_view_monitor_init(FlViewMonitor *self)
static void first_frame_cb(FlViewMonitor *self)
void(* on_first_frame)(void)
flutter::Isolate isolate