| Flutter Linux Embedder |

Classes | Functions | Variables
fl_mouse_cursor_channel.cc File Reference
`#include "flutter/shell/platform/linux/fl_mouse_cursor_channel.h"`
`#include <cstring>`
`#include "flutter/shell/platform/linux/public/flutter_linux/fl_method_channel.h"`
`#include "flutter/shell/platform/linux/public/flutter_linux/fl_standard_method_codec.h"`

Go to the source code of this file.

## Classes
struct | _FlMouseCursorChannel

## Functions
static FlMethodResponse * | activate_system_cursor (FlMouseCursorChannel *self, FlValue *args)
static void | method_call_cb (FlMethodChannel *channel, FlMethodCall *method_call, gpointer user_data)
static void | fl_mouse_cursor_channel_dispose (GObject *object)
static void | fl_mouse_cursor_channel_class_init (FlMouseCursorChannelClass *klass)
static void | fl_mouse_cursor_channel_init (FlMouseCursorChannel *self)
FlMouseCursorChannel * | fl_mouse_cursor_channel_new (FlBinaryMessenger *messenger, FlMouseCursorChannelVTable *vtable, gpointer user_data)

## Variables
static constexpr char | kChannelName [] = "flutter/mousecursor"
static constexpr char | kBadArgumentsError [] = "Bad Arguments"
static constexpr char | kActivateSystemCursorMethod [] = "activateSystemCursor"
static constexpr char | kKindKey [] = "kind"

## Function Documentation

## ◆ activate_system_cursor()

static FlMethodResponse* activate_system_cursor | ( | FlMouseCursorChannel * | self,
|  | FlValue * | args
| ) |  |
| static

Definition at line 30 of file fl_mouse_cursor_channel.cc.

31 {
32 if (fl_value_get_type(args) != FL_VALUE_TYPE_MAP) {
33 return FL_METHOD_RESPONSE(fl_method_error_response_new(
34 kBadArgumentsError, "Argument map missing or malformed", nullptr));
35 }
36
37 FlValue* kind_value = fl_value_lookup_string(args, kKindKey);
38 const gchar* kind = nullptr;
39 if (fl_value_get_type(kind_value) == FL_VALUE_TYPE_STRING) {
40 kind = fl_value_get_string(kind_value);
41 }
42
43 self->vtable->activate_system_cursor(kind, self->user_data);
44
45 return FL_METHOD_RESPONSE(fl_method_success_response_new(nullptr));
46 }
args
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
Definition: fl_event_channel.h:89
fl_method_error_response_new
G_MODULE_EXPORT FlMethodErrorResponse * fl_method_error_response_new(const gchar *code, const gchar *message, FlValue *details)
Definition: fl_method_response.cc:144
fl_method_success_response_new
G_MODULE_EXPORT FlMethodSuccessResponse * fl_method_success_response_new(FlValue *result)
Definition: fl_method_response.cc:126
kKindKey
static constexpr char kKindKey[]
Definition: fl_mouse_cursor_channel.cc:15
kBadArgumentsError
static constexpr char kBadArgumentsError[]
Definition: fl_mouse_cursor_channel.cc:13
fl_value_lookup_string
G_MODULE_EXPORT FlValue * fl_value_lookup_string(FlValue *self, const gchar *key)
Definition: fl_value.cc:811
fl_value_get_type
G_MODULE_EXPORT FlValueType fl_value_get_type(FlValue *self)
Definition: fl_value.cc:466
fl_value_get_string
G_MODULE_EXPORT const gchar * fl_value_get_string(FlValue *self)
Definition: fl_value.cc:682
FlValue
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:42
FL_VALUE_TYPE_STRING
@ FL_VALUE_TYPE_STRING
Definition: fl_value.h:68
FL_VALUE_TYPE_MAP
@ FL_VALUE_TYPE_MAP
Definition: fl_value.h:74

References args, fl_method_error_response_new(), fl_method_success_response_new(), fl_value_get_string(), fl_value_get_type(), fl_value_lookup_string(), FL_VALUE_TYPE_MAP, FL_VALUE_TYPE_STRING, kBadArgumentsError, and kKindKey.

Referenced by method_call_cb().

## ◆ fl_mouse_cursor_channel_class_init()

static void fl_mouse_cursor_channel_class_init | ( | FlMouseCursorChannelClass * | klass | ) |
| static

Definition at line 78 of file fl_mouse_cursor_channel.cc.

79 {
80 G_OBJECT_CLASS(klass)->dispose = fl_mouse_cursor_channel_dispose;
81 }
fl_mouse_cursor_channel_dispose
static void fl_mouse_cursor_channel_dispose(GObject *object)
Definition: fl_mouse_cursor_channel.cc:70

References fl_mouse_cursor_channel_dispose().

## ◆ fl_mouse_cursor_channel_dispose()

static void fl_mouse_cursor_channel_dispose | ( | GObject * | object | ) |
| static

Definition at line 70 of file fl_mouse_cursor_channel.cc.

70 {
71 FlMouseCursorChannel* self = FL_MOUSE_CURSOR_CHANNEL(object);
72
73 g_clear_object(&self->channel);
74
75 G_OBJECT_CLASS(fl_mouse_cursor_channel_parent_class)->dispose(object);
76 }

Referenced by fl_mouse_cursor_channel_class_init().

## ◆ fl_mouse_cursor_channel_init()

static void fl_mouse_cursor_channel_init | ( | FlMouseCursorChannel * | self | ) |
| static

Definition at line 83 of file fl_mouse_cursor_channel.cc.

83 {}

## ◆ fl_mouse_cursor_channel_new()

FlMouseCursorChannel* fl_mouse_cursor_channel_new | ( | FlBinaryMessenger * | messenger,
|  | FlMouseCursorChannelVTable * | vtable,
|  | gpointer | user_data
| ) |  |

fl_mouse_cursor_channel_new: @messenger: an #FlBinaryMessenger. @vtable: callbacks for incoming method calls. @user_data: data to pass in callbacks.

Creates a new channel that implements SystemChannels.mouseCursor from the Flutter services library.

Returns: a new #FlMouseCursorChannel.

Definition at line 85 of file fl_mouse_cursor_channel.cc.

88 {
89 g_return_val_if_fail(FL_IS_BINARY_MESSENGER(messenger), nullptr);
90
91 FlMouseCursorChannel* self = FL_MOUSE_CURSOR_CHANNEL(
92 g_object_new(fl_mouse_cursor_channel_get_type(), nullptr));
93
94 self->vtable = vtable;
95 self->user_data = user_data;
96
97 g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
98 self->channel =
99 fl_method_channel_new(messenger, kChannelName, FL_METHOD_CODEC(codec));
100 fl_method_channel_set_method_call_handler(self->channel, method_call_cb, self,
101 nullptr);
102
103 return self;
104 }
user_data
G_BEGIN_DECLS G_MODULE_EXPORT FlValue gpointer user_data
Definition: fl_event_channel.h:90
fl_method_channel_new
G_MODULE_EXPORT FlMethodChannel * fl_method_channel_new(FlBinaryMessenger *messenger, const gchar *name, FlMethodCodec *codec)
Definition: fl_method_channel.cc:112
fl_method_channel_set_method_call_handler
G_MODULE_EXPORT void fl_method_channel_set_method_call_handler(FlMethodChannel *self, FlMethodChannelMethodCallHandler handler, gpointer user_data, GDestroyNotify destroy_notify)
Definition: fl_method_channel.cc:134
method_call_cb
static void method_call_cb(FlMethodChannel *channel, FlMethodCall *method_call, gpointer user_data)
Definition: fl_mouse_cursor_channel.cc:49
kChannelName
static constexpr char kChannelName[]
Definition: fl_mouse_cursor_channel.cc:12
fl_standard_method_codec_new
G_MODULE_EXPORT FlStandardMethodCodec * fl_standard_method_codec_new()
Definition: fl_standard_method_codec.cc:291

References fl_method_channel_new(), fl_method_channel_set_method_call_handler(), fl_standard_method_codec_new(), kChannelName, method_call_cb(), and user_data.

Referenced by fl_mouse_cursor_handler_new().

## ◆ method_call_cb()

static void method_call_cb | ( | FlMethodChannel * | channel,
|  | FlMethodCall * | method_call,
|  | gpointer | user_data
| ) |  |
| static

Definition at line 49 of file fl_mouse_cursor_channel.cc.

51 {
52 FlMouseCursorChannel* self = FL_MOUSE_CURSOR_CHANNEL(user_data);
53
54 const gchar* method = fl_method_call_get_name(method_call);
55 FlValue* args = fl_method_call_get_args(method_call);
56
57 g_autoptr(FlMethodResponse) response = nullptr;
58 if (strcmp(method, kActivateSystemCursorMethod) == 0) {
59 response = activate_system_cursor(self, args);
60 } else {
61 response = FL_METHOD_RESPONSE(fl_method_not_implemented_response_new());
62 }
63
64 g_autoptr(GError) error = nullptr;
65 if (!fl_method_call_respond(method_call, response, &error)) {
66 g_warning("Failed to send method call response: %s", error->message);
67 }
68 }
fl_method_call_respond
G_MODULE_EXPORT gboolean fl_method_call_respond(FlMethodCall *self, FlMethodResponse *response, GError **error)
Definition: fl_method_call.cc:77
fl_method_call_get_name
G_MODULE_EXPORT const gchar * fl_method_call_get_name(FlMethodCall *self)
Definition: fl_method_call.cc:67
fl_method_call_get_args
G_MODULE_EXPORT FlValue * fl_method_call_get_args(FlMethodCall *self)
Definition: fl_method_call.cc:72
method_call
G_BEGIN_DECLS G_MODULE_EXPORT FlMethodCall * method_call
Definition: fl_method_channel.h:120
fl_method_not_implemented_response_new
G_MODULE_EXPORT FlMethodNotImplementedResponse * fl_method_not_implemented_response_new()
Definition: fl_method_response.cc:179
kActivateSystemCursorMethod
static constexpr char kActivateSystemCursorMethod[]
Definition: fl_mouse_cursor_channel.cc:14
activate_system_cursor
static FlMethodResponse * activate_system_cursor(FlMouseCursorChannel *self, FlValue *args)
Definition: fl_mouse_cursor_channel.cc:30
error
const uint8_t uint32_t uint32_t GError ** error
Definition: fl_pixel_buffer_texture_test.cc:40

References activate_system_cursor(), args, error, fl_method_call_get_args(), fl_method_call_get_name(), fl_method_call_respond(), fl_method_not_implemented_response_new(), kActivateSystemCursorMethod, method_call, and user_data.

Referenced by fl_mouse_cursor_channel_new().

## Variable Documentation

## ◆ kActivateSystemCursorMethod

constexpr char kActivateSystemCursorMethod[] = "activateSystemCursor"
| staticconstexpr

Definition at line 14 of file fl_mouse_cursor_channel.cc.

Referenced by method_call_cb().

## ◆ kBadArgumentsError

constexpr char kBadArgumentsError[] = "Bad Arguments"
| staticconstexpr

Definition at line 13 of file fl_mouse_cursor_channel.cc.

Referenced by activate_system_cursor().

## ◆ kChannelName

constexpr char kChannelName[] = "flutter/mousecursor"
| staticconstexpr

Definition at line 12 of file fl_mouse_cursor_channel.cc.

Referenced by fl_mouse_cursor_channel_new().

## ◆ kKindKey

constexpr char kKindKey[] = "kind"
| staticconstexpr

Definition at line 15 of file fl_mouse_cursor_channel.cc.

Referenced by activate_system_cursor().