diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md index 128d05b065d6..3d22a81d20ce 100644 --- a/packages/video_player/video_player/CHANGELOG.md +++ b/packages/video_player/video_player/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.10.11 + +* iOS: Fixed crash when detaching from a dying engine. +* Android: Fixed exception when detaching from any engine. + ## 0.10.10 * Migrated to [pigeon](https://pub.dev/packages/pigeon). diff --git a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java index 894fb0bde71a..7bba51b21f98 100644 --- a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java +++ b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v0.1.0-experimental.10), do not edit directly. +// Autogenerated from Pigeon (v0.1.0-experimental.11), do not edit directly. // See also: https://pub.dev/packages/pigeon package io.flutter.plugins.videoplayer; @@ -251,19 +251,23 @@ public static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.initialize", new StandardMessageCodec()); - channel.setMessageHandler( - new BasicMessageChannel.MessageHandler() { - public void onMessage(Object message, BasicMessageChannel.Reply reply) { - HashMap wrapped = new HashMap(); - try { - api.initialize(); - wrapped.put("result", null); - } catch (Exception exception) { - wrapped.put("error", wrapError(exception)); + if (api != null) { + channel.setMessageHandler( + new BasicMessageChannel.MessageHandler() { + public void onMessage(Object message, BasicMessageChannel.Reply reply) { + HashMap wrapped = new HashMap(); + try { + api.initialize(); + wrapped.put("result", null); + } catch (Exception exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); } - reply.reply(wrapped); - } - }); + }); + } else { + channel.setMessageHandler(null); + } } { BasicMessageChannel channel = @@ -271,20 +275,24 @@ public void onMessage(Object message, BasicMessageChannel.Reply reply) { binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.create", new StandardMessageCodec()); - channel.setMessageHandler( - new BasicMessageChannel.MessageHandler() { - public void onMessage(Object message, BasicMessageChannel.Reply reply) { - CreateMessage input = CreateMessage.fromMap((HashMap) message); - HashMap wrapped = new HashMap(); - try { - TextureMessage output = api.create(input); - wrapped.put("result", output.toMap()); - } catch (Exception exception) { - wrapped.put("error", wrapError(exception)); + if (api != null) { + channel.setMessageHandler( + new BasicMessageChannel.MessageHandler() { + public void onMessage(Object message, BasicMessageChannel.Reply reply) { + CreateMessage input = CreateMessage.fromMap((HashMap) message); + HashMap wrapped = new HashMap(); + try { + TextureMessage output = api.create(input); + wrapped.put("result", output.toMap()); + } catch (Exception exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); } - reply.reply(wrapped); - } - }); + }); + } else { + channel.setMessageHandler(null); + } } { BasicMessageChannel channel = @@ -292,20 +300,24 @@ public void onMessage(Object message, BasicMessageChannel.Reply reply) { binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.dispose", new StandardMessageCodec()); - channel.setMessageHandler( - new BasicMessageChannel.MessageHandler() { - public void onMessage(Object message, BasicMessageChannel.Reply reply) { - TextureMessage input = TextureMessage.fromMap((HashMap) message); - HashMap wrapped = new HashMap(); - try { - api.dispose(input); - wrapped.put("result", null); - } catch (Exception exception) { - wrapped.put("error", wrapError(exception)); + if (api != null) { + channel.setMessageHandler( + new BasicMessageChannel.MessageHandler() { + public void onMessage(Object message, BasicMessageChannel.Reply reply) { + TextureMessage input = TextureMessage.fromMap((HashMap) message); + HashMap wrapped = new HashMap(); + try { + api.dispose(input); + wrapped.put("result", null); + } catch (Exception exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); } - reply.reply(wrapped); - } - }); + }); + } else { + channel.setMessageHandler(null); + } } { BasicMessageChannel channel = @@ -313,20 +325,24 @@ public void onMessage(Object message, BasicMessageChannel.Reply reply) { binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.setLooping", new StandardMessageCodec()); - channel.setMessageHandler( - new BasicMessageChannel.MessageHandler() { - public void onMessage(Object message, BasicMessageChannel.Reply reply) { - LoopingMessage input = LoopingMessage.fromMap((HashMap) message); - HashMap wrapped = new HashMap(); - try { - api.setLooping(input); - wrapped.put("result", null); - } catch (Exception exception) { - wrapped.put("error", wrapError(exception)); + if (api != null) { + channel.setMessageHandler( + new BasicMessageChannel.MessageHandler() { + public void onMessage(Object message, BasicMessageChannel.Reply reply) { + LoopingMessage input = LoopingMessage.fromMap((HashMap) message); + HashMap wrapped = new HashMap(); + try { + api.setLooping(input); + wrapped.put("result", null); + } catch (Exception exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); } - reply.reply(wrapped); - } - }); + }); + } else { + channel.setMessageHandler(null); + } } { BasicMessageChannel channel = @@ -334,20 +350,24 @@ public void onMessage(Object message, BasicMessageChannel.Reply reply) { binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.setVolume", new StandardMessageCodec()); - channel.setMessageHandler( - new BasicMessageChannel.MessageHandler() { - public void onMessage(Object message, BasicMessageChannel.Reply reply) { - VolumeMessage input = VolumeMessage.fromMap((HashMap) message); - HashMap wrapped = new HashMap(); - try { - api.setVolume(input); - wrapped.put("result", null); - } catch (Exception exception) { - wrapped.put("error", wrapError(exception)); + if (api != null) { + channel.setMessageHandler( + new BasicMessageChannel.MessageHandler() { + public void onMessage(Object message, BasicMessageChannel.Reply reply) { + VolumeMessage input = VolumeMessage.fromMap((HashMap) message); + HashMap wrapped = new HashMap(); + try { + api.setVolume(input); + wrapped.put("result", null); + } catch (Exception exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); } - reply.reply(wrapped); - } - }); + }); + } else { + channel.setMessageHandler(null); + } } { BasicMessageChannel channel = @@ -355,20 +375,24 @@ public void onMessage(Object message, BasicMessageChannel.Reply reply) { binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.play", new StandardMessageCodec()); - channel.setMessageHandler( - new BasicMessageChannel.MessageHandler() { - public void onMessage(Object message, BasicMessageChannel.Reply reply) { - TextureMessage input = TextureMessage.fromMap((HashMap) message); - HashMap wrapped = new HashMap(); - try { - api.play(input); - wrapped.put("result", null); - } catch (Exception exception) { - wrapped.put("error", wrapError(exception)); + if (api != null) { + channel.setMessageHandler( + new BasicMessageChannel.MessageHandler() { + public void onMessage(Object message, BasicMessageChannel.Reply reply) { + TextureMessage input = TextureMessage.fromMap((HashMap) message); + HashMap wrapped = new HashMap(); + try { + api.play(input); + wrapped.put("result", null); + } catch (Exception exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); } - reply.reply(wrapped); - } - }); + }); + } else { + channel.setMessageHandler(null); + } } { BasicMessageChannel channel = @@ -376,20 +400,24 @@ public void onMessage(Object message, BasicMessageChannel.Reply reply) { binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.position", new StandardMessageCodec()); - channel.setMessageHandler( - new BasicMessageChannel.MessageHandler() { - public void onMessage(Object message, BasicMessageChannel.Reply reply) { - TextureMessage input = TextureMessage.fromMap((HashMap) message); - HashMap wrapped = new HashMap(); - try { - PositionMessage output = api.position(input); - wrapped.put("result", output.toMap()); - } catch (Exception exception) { - wrapped.put("error", wrapError(exception)); + if (api != null) { + channel.setMessageHandler( + new BasicMessageChannel.MessageHandler() { + public void onMessage(Object message, BasicMessageChannel.Reply reply) { + TextureMessage input = TextureMessage.fromMap((HashMap) message); + HashMap wrapped = new HashMap(); + try { + PositionMessage output = api.position(input); + wrapped.put("result", output.toMap()); + } catch (Exception exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); } - reply.reply(wrapped); - } - }); + }); + } else { + channel.setMessageHandler(null); + } } { BasicMessageChannel channel = @@ -397,20 +425,24 @@ public void onMessage(Object message, BasicMessageChannel.Reply reply) { binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.seekTo", new StandardMessageCodec()); - channel.setMessageHandler( - new BasicMessageChannel.MessageHandler() { - public void onMessage(Object message, BasicMessageChannel.Reply reply) { - PositionMessage input = PositionMessage.fromMap((HashMap) message); - HashMap wrapped = new HashMap(); - try { - api.seekTo(input); - wrapped.put("result", null); - } catch (Exception exception) { - wrapped.put("error", wrapError(exception)); + if (api != null) { + channel.setMessageHandler( + new BasicMessageChannel.MessageHandler() { + public void onMessage(Object message, BasicMessageChannel.Reply reply) { + PositionMessage input = PositionMessage.fromMap((HashMap) message); + HashMap wrapped = new HashMap(); + try { + api.seekTo(input); + wrapped.put("result", null); + } catch (Exception exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); } - reply.reply(wrapped); - } - }); + }); + } else { + channel.setMessageHandler(null); + } } { BasicMessageChannel channel = @@ -418,20 +450,24 @@ public void onMessage(Object message, BasicMessageChannel.Reply reply) { binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.pause", new StandardMessageCodec()); - channel.setMessageHandler( - new BasicMessageChannel.MessageHandler() { - public void onMessage(Object message, BasicMessageChannel.Reply reply) { - TextureMessage input = TextureMessage.fromMap((HashMap) message); - HashMap wrapped = new HashMap(); - try { - api.pause(input); - wrapped.put("result", null); - } catch (Exception exception) { - wrapped.put("error", wrapError(exception)); + if (api != null) { + channel.setMessageHandler( + new BasicMessageChannel.MessageHandler() { + public void onMessage(Object message, BasicMessageChannel.Reply reply) { + TextureMessage input = TextureMessage.fromMap((HashMap) message); + HashMap wrapped = new HashMap(); + try { + api.pause(input); + wrapped.put("result", null); + } catch (Exception exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); } - reply.reply(wrapped); - } - }); + }); + } else { + channel.setMessageHandler(null); + } } } } diff --git a/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m b/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m index 0917e8ef303b..7dbc1b0bfd11 100644 --- a/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m +++ b/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m @@ -451,7 +451,10 @@ - (void)detachFromEngineForRegistrar:(NSObject*)registra [player disposeSansEventChannel]; } [_players removeAllObjects]; - FLTVideoPlayerApiSetup(registrar.messenger, nil); + // TODO(57151): This should be commented out when 57151's fix lands on stable. + // This is the correct behavior we never did it in the past and the engine + // doesn't currently support it. + // FLTVideoPlayerApiSetup(registrar.messenger, nil); } - (FLTTextureMessage*)onPlayerSetup:(FLTVideoPlayer*)player diff --git a/packages/video_player/video_player/ios/Classes/messages.h b/packages/video_player/video_player/ios/Classes/messages.h index d9b7081bb640..3c89b1f203d1 100644 --- a/packages/video_player/video_player/ios/Classes/messages.h +++ b/packages/video_player/video_player/ios/Classes/messages.h @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v0.1.0-experimental.10), do not edit directly. +// Autogenerated from Pigeon (v0.1.0-experimental.11), do not edit directly. // See also: https://pub.dev/packages/pigeon #import @protocol FlutterBinaryMessenger; diff --git a/packages/video_player/video_player/ios/Classes/messages.m b/packages/video_player/video_player/ios/Classes/messages.m index 3c51a8381591..3694a11622dc 100644 --- a/packages/video_player/video_player/ios/Classes/messages.m +++ b/packages/video_player/video_player/ios/Classes/messages.m @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v0.1.0-experimental.10), do not edit directly. +// Autogenerated from Pigeon (v0.1.0-experimental.11), do not edit directly. // See also: https://pub.dev/packages/pigeon #import "messages.h" #import diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml index d99e6380cb5f..2a4a5b0e9900 100644 --- a/packages/video_player/video_player/pubspec.yaml +++ b/packages/video_player/video_player/pubspec.yaml @@ -4,7 +4,7 @@ description: Flutter plugin for displaying inline video with other Flutter # 0.10.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.10.10 +version: 0.10.11 homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player flutter: @@ -35,7 +35,7 @@ dev_dependencies: flutter_test: sdk: flutter pedantic: ^1.8.0 - pigeon: 0.1.0-experimental.10 + pigeon: 0.1.0-experimental.11 environment: sdk: ">=2.1.0 <3.0.0"