v2.27.1 - #984
Open
davidliu wants to merge 1 commit into
Open
Conversation
Contributor
|
Diffuse output: Base AAR cache miss. Please run the build job on main to generate the base AAR. |
github-actions
Bot
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
July 27, 2026 14:05
b2018d4 to
5715988
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
July 27, 2026 16:24
5715988 to
8d6a43d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
client-sdk-android@2.27.1
Patch Changes
Add SDK size documentation to README explaining multi-architecture native libraries and how to measure actual size impact - #981 (@xianshijing-lk)
Fix
ScreenAudioCapturercrashing the audio thread when itsMediaProjectionis revoked (for example via the system "stop sharing" chip) before the first microphone buffer arrives.initAudioRecordnow returns false when theAudioRecordcannot be created instead of throwing inside WebRTC's audio record thread, where an unhandled exception kills the process; onlystartRecording()was guarded before.AudioRecord.readfailures are also handled now: the return value was ignored, so once the projection died the buffer's stale contents (the last captured frame) were mixed into the microphone track on every callback, an audible loop until the callback was detached. On a read error the capturer releases itsAudioRecordand degrades to mic-only audio. - #982 (@adrian-niculescu)releaseAudioResourcesis also safe to call whileinitAudioRecordis still running. It runs on the app's thread while init runs on the audio record thread, and it used to observe a nullaudioRecordand do nothing, so the recorder that init went on to publish stayed running until finalization. Leaked recorders hold the playback capture input open, and later capture attempts fail once enough of them accumulate.Fix
ScreenCaptureServicestaying bound when screen share setup is cancelled.ScreenCaptureConnectionrecorded a binding only onceonServiceConnectedarrived, so a coroutine cancelled beforeconnect()returned left theServiceConnectionregistered, andBIND_AUTO_CREATEkept the service alive for the lifetime of the context.LocalParticipant.setScreenShareEnabledawaits the bind internally and abandons the track it just created if cancelled, so nothing reachedstop()on that path. A cancelled connect now releases the binding itself once no caller is left waiting on it, andstop()unbinds on the same wider condition. Callers stay tracked untilconnect()actually returns, so a cancellation landing after the service connected but before the caller resumed releases the binding too. This also covers the documented case wherebindServiceleaves a connection registered while reporting failure or throwing. - #983 (@adrian-niculescu)Two paths that could leave
connect()suspended forever are fixed as well.stop()racing a connect no longer strands the caller, since requesting the bind and registering the waiter now happen under one lock, and a failedbindServiceno longer leaves the state claiming a bind is in flight for the next caller to wait on.