Fix audio visualizer exception (#1008)
Fix `MissingPluginException` when stopping audio visualizer.
This commit is contained in:
1
.changes/fix-audio-visualizer-missing-plugin-exception
Normal file
1
.changes/fix-audio-visualizer-missing-plugin-exception
Normal file
@@ -0,0 +1 @@
|
||||
patch type="fixed" "MissingPluginException when stopping audio visualizer on Android/iOS"
|
||||
@@ -53,11 +53,13 @@ class AudioVisualizerNative extends AudioVisualizer {
|
||||
return;
|
||||
}
|
||||
|
||||
await Native.stopVisualizer(mediaStreamTrack.id!, visualizerId: visualizerId);
|
||||
|
||||
// Cancel subscription before native stop, otherwise the native
|
||||
// StreamHandler is already removed and cancel throws MissingPluginException.
|
||||
await _streamSubscription?.cancel();
|
||||
_streamSubscription = null;
|
||||
_eventChannel = null;
|
||||
|
||||
await Native.stopVisualizer(mediaStreamTrack.id!, visualizerId: visualizerId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -201,6 +201,7 @@ public class LiveKitPlugin: NSObject, FlutterPlugin {
|
||||
}
|
||||
|
||||
for processors in audioProcessors.values {
|
||||
processors.visualizers[visualizerId]?.stop()
|
||||
processors.visualizers.removeValue(forKey: visualizerId)
|
||||
}
|
||||
|
||||
|
||||
@@ -69,8 +69,13 @@ public class Visualizer: NSObject, RTCAudioRenderer, FlutterStreamHandler {
|
||||
channel?.setStreamHandler(self)
|
||||
}
|
||||
|
||||
deinit {
|
||||
public func stop() {
|
||||
_track?.remove(audioRenderer: self)
|
||||
channel?.setStreamHandler(nil)
|
||||
}
|
||||
|
||||
deinit {
|
||||
stop()
|
||||
}
|
||||
|
||||
public func render(pcmBuffer: AVAudioPCMBuffer) {
|
||||
|
||||
Reference in New Issue
Block a user