Skip to content

Commit 5df61e0

Browse files
authored
feat: release 6.1.1-sp.4116.b.3 (#1179)
* fix: Fix VideoViewController state not correct when the AgoraVideoView is reused * fix: Fix AgoraVideoView not showing correctly when reusing the same VideoViewController (#1169) * fix: Fix AgoraVideoView not show correctly when resued the same VideoViewController * ++
1 parent 4c97a0f commit 5df61e0

File tree

6 files changed

+666
-149
lines changed

6 files changed

+666
-149
lines changed

ci/rendering_test_ios.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ pushd ${MY_PATH}/../test_shard/rendering_test
99

1010
flutter packages get
1111

12-
flutter drive --driver=test_driver/integration_test.dart --target=integration_test/agora_video_view_render_test.dart --dart-define=TEST_APP_ID="${TEST_APP_ID}"
12+
flutter drive --driver=test_driver/integration_test.dart --target=integration_test/agora_video_view_render_test.dart --dart-define=TEST_APP_ID="${TEST_APP_ID}" --verbose
1313

14-
flutter drive --driver=test_driver/integration_test.dart --target=integration_test/agora_video_view_smoke_test.dart --dart-define=TEST_APP_ID="${TEST_APP_ID}"
14+
flutter drive --driver=test_driver/integration_test.dart --target=integration_test/agora_video_view_smoke_test.dart --dart-define=TEST_APP_ID="${TEST_APP_ID}" --verbose
1515

1616
popd

lib/src/impl/agora_video_view_impl.dart

+5-7
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ class _AgoraRtcRenderPlatformViewState extends State<AgoraRtcRenderPlatformView>
125125
if (!oldWidget.controller.isSame(widget.controller)) {
126126
await oldWidget.controller.disposeRender();
127127
await _setupVideo();
128+
} else {
129+
_controller(widget.controller).updateController(oldWidget.controller);
128130
}
129131
}
130132

@@ -238,13 +240,9 @@ class _AgoraRtcRenderTextureState extends State<AgoraRtcRenderTexture>
238240

239241
Future<void> _didUpdateWidget(
240242
covariant AgoraRtcRenderTexture oldWidget) async {
241-
if (!oldWidget.controller.isSame(widget.controller)) {
242-
await oldWidget.controller.dispose();
243-
if (!mounted) return;
244-
_initialize();
245-
} else {
246-
widget.controller.setTextureId(oldWidget.controller.getTextureId());
247-
}
243+
// For flutter texture rendering, only update the texture id and other state, and the
244+
// Flutter framework will handle the rest.
245+
_controller(widget.controller).updateController(oldWidget.controller);
248246
}
249247

250248
@override

lib/src/impl/video_view_controller_impl.dart

+8-3
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,13 @@ mixin VideoViewControllerBaseMixin implements VideoViewControllerBase {
6767
@override
6868
int getTextureId() => _textureId;
6969

70-
@override
71-
void setTextureId(int textureId) {
72-
_textureId = textureId;
70+
@internal
71+
void updateController(VideoViewControllerBase oldController) {
72+
assert(oldController is VideoViewControllerBaseMixin);
73+
final oldControllerMixin = oldController as VideoViewControllerBaseMixin;
74+
_textureId = oldControllerMixin.getTextureId();
75+
_isCreatedRender = oldControllerMixin._isCreatedRender;
76+
_isDisposeRender = oldControllerMixin._isDisposeRender;
7377
}
7478

7579
@override
@@ -190,6 +194,7 @@ mixin VideoViewControllerBaseMixin implements VideoViewControllerBase {
190194
await setupNativeViewInternal(nativeViewPtr);
191195

192196
_isCreatedRender = true;
197+
_isDisposeRender = false;
193198
}
194199

195200
@internal

lib/src/render/video_view_controller.dart

-3
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ abstract class VideoViewControllerBase {
2323
/// Whether to use Android SurfaceView to render video:true: Use Android SurfaceView to render video.false: Do not use Android SurfaceView to render video.Android SurfaceView applies to Android platform only.
2424
bool get useAndroidSurfaceView;
2525

26-
@internal
27-
void setTextureId(int textureId);
28-
2926
@internal
3027
int getTextureId();
3128

pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: agora_rtc_engine
22
description: >-
33
Flutter plugin of Agora RTC SDK, allow you to simply integrate Agora Video
44
Calling or Live Video Streaming to your app with just a few lines of code.
5-
version: 6.1.1-sp.4116.b.2
5+
version: 6.1.1-sp.4116.b.3
66
homepage: https://www.agora.io
77
repository: https://github.com/AgoraIO-Extensions/Agora-Flutter-SDK/tree/main
88
environment:

0 commit comments

Comments
 (0)