8
8
#include " flutter/shell/platform/linux/fl_engine_private.h"
9
9
#include " flutter/shell/platform/linux/fl_method_codec_private.h"
10
10
#include " flutter/shell/platform/linux/public/flutter_linux/fl_engine.h"
11
+ #include " flutter/shell/platform/linux/public/flutter_linux/fl_method_channel.h"
11
12
#include " flutter/shell/platform/linux/public/flutter_linux/fl_method_codec.h"
12
13
#include " flutter/shell/platform/linux/public/flutter_linux/fl_standard_method_codec.h"
13
14
@@ -318,6 +319,28 @@ static GBytes* send_on_channel_finish(FlBinaryMessenger* messenger,
318
319
return fl_engine_send_platform_message_finish (engine, r, error);
319
320
}
320
321
322
+ // Completes method call and returns TRUE if the call was successful.
323
+ static gboolean finish_method (GObject* object,
324
+ GAsyncResult* result,
325
+ GError** error) {
326
+ g_autoptr (FlMethodResponse) response = fl_method_channel_invoke_method_finish (
327
+ FL_METHOD_CHANNEL (object), result, error);
328
+ if (response == nullptr ) {
329
+ return FALSE ;
330
+ }
331
+ return fl_method_response_get_result (response, error) != nullptr ;
332
+ }
333
+
334
+ // Called when a response is received for the resize channel message.
335
+ static void resize_channel_response_cb (GObject* object,
336
+ GAsyncResult* result,
337
+ gpointer user_data) {
338
+ g_autoptr (GError) error = nullptr ;
339
+ if (!finish_method (object, result, &error)) {
340
+ g_warning (" Failed to resize channel: %s" , error->message );
341
+ }
342
+ }
343
+
321
344
static void resize_channel (FlBinaryMessenger* messenger,
322
345
const gchar* channel,
323
346
int64_t new_size) {
@@ -328,7 +351,18 @@ static void resize_channel(FlBinaryMessenger* messenger,
328
351
g_autoptr (GBytes) message = fl_method_codec_encode_method_call (
329
352
FL_METHOD_CODEC (codec), kResizeMethod , args, nullptr );
330
353
fl_binary_messenger_send_on_channel (messenger, kControlChannelName , message,
331
- nullptr , nullptr , nullptr );
354
+ nullptr , resize_channel_response_cb,
355
+ nullptr );
356
+ }
357
+
358
+ // Called when a response is received for the allow channel overflow message.
359
+ static void set_allow_channel_overflowl_response_cb (GObject* object,
360
+ GAsyncResult* result,
361
+ gpointer user_data) {
362
+ g_autoptr (GError) error = nullptr ;
363
+ if (!finish_method (object, result, &error)) {
364
+ g_warning (" Failed to set allow channel overflow: %s" , error->message );
365
+ }
332
366
}
333
367
334
368
static void set_allow_channel_overflow (FlBinaryMessenger* messenger,
@@ -340,8 +374,9 @@ static void set_allow_channel_overflow(FlBinaryMessenger* messenger,
340
374
fl_value_append_take (args, fl_value_new_bool (allowed));
341
375
g_autoptr (GBytes) message = fl_method_codec_encode_method_call (
342
376
FL_METHOD_CODEC (codec), kOverflowMethod , args, nullptr );
343
- fl_binary_messenger_send_on_channel (messenger, kControlChannelName , message,
344
- nullptr , nullptr , nullptr );
377
+ fl_binary_messenger_send_on_channel (
378
+ messenger, kControlChannelName , message, nullptr ,
379
+ set_allow_channel_overflowl_response_cb, nullptr );
345
380
}
346
381
347
382
static void fl_binary_messenger_impl_class_init (
0 commit comments