Skip to content
This repository has been archived by the owner on Feb 22, 2023. It is now read-only.

[video_player] fixed detach from engine logic #2759

Merged
merged 1 commit into from
May 13, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions packages/video_player/video_player/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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).
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -251,187 +251,223 @@ public static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) {
binaryMessenger,
"dev.flutter.pigeon.VideoPlayerApi.initialize",
new StandardMessageCodec());
channel.setMessageHandler(
new BasicMessageChannel.MessageHandler<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
HashMap<String, HashMap> wrapped = new HashMap<String, HashMap>();
try {
api.initialize();
wrapped.put("result", null);
} catch (Exception exception) {
wrapped.put("error", wrapError(exception));
if (api != null) {
channel.setMessageHandler(
new BasicMessageChannel.MessageHandler<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object> channel =
new BasicMessageChannel<Object>(
binaryMessenger,
"dev.flutter.pigeon.VideoPlayerApi.create",
new StandardMessageCodec());
channel.setMessageHandler(
new BasicMessageChannel.MessageHandler<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
CreateMessage input = CreateMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
CreateMessage input = CreateMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object> channel =
new BasicMessageChannel<Object>(
binaryMessenger,
"dev.flutter.pigeon.VideoPlayerApi.dispose",
new StandardMessageCodec());
channel.setMessageHandler(
new BasicMessageChannel.MessageHandler<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
TextureMessage input = TextureMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
TextureMessage input = TextureMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object> channel =
new BasicMessageChannel<Object>(
binaryMessenger,
"dev.flutter.pigeon.VideoPlayerApi.setLooping",
new StandardMessageCodec());
channel.setMessageHandler(
new BasicMessageChannel.MessageHandler<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
LoopingMessage input = LoopingMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
LoopingMessage input = LoopingMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object> channel =
new BasicMessageChannel<Object>(
binaryMessenger,
"dev.flutter.pigeon.VideoPlayerApi.setVolume",
new StandardMessageCodec());
channel.setMessageHandler(
new BasicMessageChannel.MessageHandler<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
VolumeMessage input = VolumeMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
VolumeMessage input = VolumeMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object> channel =
new BasicMessageChannel<Object>(
binaryMessenger,
"dev.flutter.pigeon.VideoPlayerApi.play",
new StandardMessageCodec());
channel.setMessageHandler(
new BasicMessageChannel.MessageHandler<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
TextureMessage input = TextureMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
TextureMessage input = TextureMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object> channel =
new BasicMessageChannel<Object>(
binaryMessenger,
"dev.flutter.pigeon.VideoPlayerApi.position",
new StandardMessageCodec());
channel.setMessageHandler(
new BasicMessageChannel.MessageHandler<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
TextureMessage input = TextureMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
TextureMessage input = TextureMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object> channel =
new BasicMessageChannel<Object>(
binaryMessenger,
"dev.flutter.pigeon.VideoPlayerApi.seekTo",
new StandardMessageCodec());
channel.setMessageHandler(
new BasicMessageChannel.MessageHandler<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
PositionMessage input = PositionMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
PositionMessage input = PositionMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object> channel =
new BasicMessageChannel<Object>(
binaryMessenger,
"dev.flutter.pigeon.VideoPlayerApi.pause",
new StandardMessageCodec());
channel.setMessageHandler(
new BasicMessageChannel.MessageHandler<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
TextureMessage input = TextureMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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<Object>() {
public void onMessage(Object message, BasicMessageChannel.Reply<Object> reply) {
TextureMessage input = TextureMessage.fromMap((HashMap) message);
HashMap<String, HashMap> wrapped = new HashMap<String, 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);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,10 @@ - (void)detachFromEngineForRegistrar:(NSObject<FlutterPluginRegistrar>*)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
Expand Down
2 changes: 1 addition & 1 deletion packages/video_player/video_player/ios/Classes/messages.h
Original file line number Diff line number Diff line change
@@ -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 <Foundation/Foundation.h>
@protocol FlutterBinaryMessenger;
Expand Down
2 changes: 1 addition & 1 deletion packages/video_player/video_player/ios/Classes/messages.m
Original file line number Diff line number Diff line change
@@ -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 <Flutter/Flutter.h>
Expand Down
4 changes: 2 additions & 2 deletions packages/video_player/video_player/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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"
Expand Down