Skip to content

Commit 8640405

Browse files
authored
Merge pull request #57 from GetStream/fix/fix-concurency-issues
Fix concurency issuse on local tracks
2 parents 4cd8606 + 617a655 commit 8640405

File tree

6 files changed

+16
-16
lines changed

6 files changed

+16
-16
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11

22
# Changelog
33

4+
[2.2.3] - 2025-12-22
5+
* [Android] Fixed concurrency issues in local tracks access that could cause a crash.
6+
47
[2.2.2] - 2025-12-19
58
* [Android] Added support for screen sharing audio on Android by mixing the microphone audio with recorded screen audio.
69

android/src/main/java/io/getstream/webrtc/flutter/MethodCallHandlerImpl.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -111,13 +111,13 @@
111111
public class MethodCallHandlerImpl implements MethodCallHandler, StateProvider {
112112
static public final String TAG = "FlutterWebRTCPlugin";
113113

114-
private final Map<String, PeerConnectionObserver> mPeerConnectionObservers = new HashMap<>();
114+
private final ConcurrentHashMap<String, PeerConnectionObserver> mPeerConnectionObservers = new ConcurrentHashMap<>();
115115
private final BinaryMessenger messenger;
116116
private final Context context;
117117
private final TextureRegistry textures;
118118
private PeerConnectionFactory mFactory;
119-
private final Map<String, MediaStream> localStreams = new HashMap<>();
120-
private final Map<String, LocalTrack> localTracks = new HashMap<>();
119+
private final ConcurrentHashMap<String, MediaStream> localStreams = new ConcurrentHashMap<>();
120+
private final ConcurrentHashMap<String, LocalTrack> localTracks = new ConcurrentHashMap<>();
121121
private final LongSparseArray<FlutterRTCVideoRenderer> renders = new LongSparseArray<>();
122122

123123
public RecordSamplesReadyCallbackAdapter recordSamplesReadyCallbackAdapter;
@@ -149,8 +149,8 @@ public class MethodCallHandlerImpl implements MethodCallHandler, StateProvider {
149149
public AudioProcessingFactoryProvider audioProcessingFactoryProvider;
150150

151151
private ConstraintsMap initializedAndroidAudioConfiguration;
152-
private final Map<String, Double> trackVolumeCache = new ConcurrentHashMap<>();
153-
private final Map<String, Double> pausedTrackVolumes = new ConcurrentHashMap<>();
152+
private final ConcurrentHashMap<String, Double> trackVolumeCache = new ConcurrentHashMap<>();
153+
private final ConcurrentHashMap<String, Double> pausedTrackVolumes = new ConcurrentHashMap<>();
154154
private volatile boolean isAudioPlayoutPaused = false;
155155

156156
public static class LogSink implements Loggable {
@@ -209,16 +209,13 @@ void dispose() {
209209
* tracks.
210210
*/
211211
private boolean isMicrophoneMuted() {
212-
synchronized (localTracks) {
213-
for (LocalTrack track : localTracks.values()) {
214-
if (track instanceof LocalAudioTrack) {
215-
if (track.enabled()) {
216-
return false;
217-
}
212+
for (LocalTrack track : localTracks.values()) {
213+
if (track instanceof LocalAudioTrack) {
214+
if (track.enabled()) {
215+
return false;
218216
}
219217
}
220218
}
221-
222219
return true;
223220
}
224221

ios/stream_webrtc_flutter.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44
Pod::Spec.new do |s|
55
s.name = 'stream_webrtc_flutter'
6-
s.version = '2.2.2'
6+
s.version = '2.2.3'
77
s.summary = 'Flutter WebRTC plugin for iOS.'
88
s.description = <<-DESC
99
A new flutter plugin project.

lib/stream_webrtc_flutter.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@ export 'src/native/rtc_video_platform_view_controller.dart';
2525
export 'src/native/rtc_video_platform_view.dart';
2626

2727
const String androidWebRTCVersion = '137.0.1';
28-
const String iosWebRTCVersion = '137.0.43';
28+
const String iosWebRTCVersion = '137.0.54';

macos/stream_webrtc_flutter.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44
Pod::Spec.new do |s|
55
s.name = 'stream_webrtc_flutter'
6-
s.version = '2.2.2'
6+
s.version = '2.2.3'
77
s.summary = 'Flutter WebRTC plugin for macOS.'
88
s.description = <<-DESC
99
A new flutter plugin project.

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: stream_webrtc_flutter
22
description: Flutter WebRTC plugin for iOS/Android/Destkop/Web, based on GoogleWebRTC.
3-
version: 2.2.2
3+
version: 2.2.3
44
homepage: https://github.com/GetStream/webrtc-flutter
55
environment:
66
sdk: ">=3.6.0 <4.0.0"

0 commit comments

Comments
 (0)