From 02822078252ee7cdc33616cbba304e599648123c Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sun, 10 Sep 2023 19:48:33 +0200 Subject: [PATCH] update global callbacks on event sink change; update event subscription unconditionally --- .../ffmpegkit/flutter/FFmpegKitFlutterPlugin.java | 1 + .../lib/src/ffmpeg_kit_flutter_initializer.dart | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/flutter/flutter/android/src/main/java/com/arthenica/ffmpegkit/flutter/FFmpegKitFlutterPlugin.java b/flutter/flutter/android/src/main/java/com/arthenica/ffmpegkit/flutter/FFmpegKitFlutterPlugin.java index cf06f57..7711a3c 100644 --- a/flutter/flutter/android/src/main/java/com/arthenica/ffmpegkit/flutter/FFmpegKitFlutterPlugin.java +++ b/flutter/flutter/android/src/main/java/com/arthenica/ffmpegkit/flutter/FFmpegKitFlutterPlugin.java @@ -222,6 +222,7 @@ public class FFmpegKitFlutterPlugin implements FlutterPlugin, ActivityAware, Met @Override public void onListen(final Object o, final EventChannel.EventSink eventSink) { this.eventSink = eventSink; + registerGlobalCallbacks(); Log.d(LIBRARY_NAME, String.format("FFmpegKitFlutterPlugin %s started listening to events on %s.", this, eventSink)); } diff --git a/flutter/flutter/lib/src/ffmpeg_kit_flutter_initializer.dart b/flutter/flutter/lib/src/ffmpeg_kit_flutter_initializer.dart index 6c54e21..714a8e5 100644 --- a/flutter/flutter/lib/src/ffmpeg_kit_flutter_initializer.dart +++ b/flutter/flutter/lib/src/ffmpeg_kit_flutter_initializer.dart @@ -17,6 +17,7 @@ * along with FFmpegKit. If not, see . */ +import 'dart:async'; import 'dart:io'; import 'package:ffmpeg_kit_flutter_platform_interface/ffmpeg_kit_flutter_platform_interface.dart'; @@ -47,12 +48,14 @@ class FFmpegKitInitializer { static FFmpegKitInitializer _instance = new FFmpegKitInitializer(); static bool _initialized = false; + StreamSubscription? _eventSubscription; static Future initialize() async { if (!_initialized) { _initialized = true; await _instance._initialize(); } + _instance._updateEventSubscription(); return _initialized; } @@ -308,8 +311,6 @@ class FFmpegKitInitializer { Future _initialize() async { print("Loading ffmpeg-kit-flutter."); - _eventChannel.receiveBroadcastStream().listen(_onEvent, onError: _onError); - final logLevel = await _getLogLevel(); if (logLevel != null) { FFmpegKitConfig.setLogLevel(logLevel); @@ -324,4 +325,10 @@ class FFmpegKitInitializer { final fullVersion = "$platform-$packageName-$arch-$version$isLTSPostfix"; print("Loaded ffmpeg-kit-flutter-$fullVersion."); } + + void _updateEventSubscription() { + _eventSubscription?.cancel(); + _eventSubscription = _eventChannel.receiveBroadcastStream().listen(_onEvent, + onError: _onError); + } }