Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03c345ad authored by Aleksandar Kiridzic's avatar Aleksandar Kiridzic Committed by Aleksandar Kiridžić
Browse files

TTS: Fix binders leak due to a circular dependency

A circular dependency was found which keeps binders alive
even after shutdown:
[client]
SystemConnection -->
SystemConnection#ITextToSpeechSession -->
[server]
TextToSpeechSessionConnection -->
TextToSpeechSessionConnection#ITextToSpeechSessionCallback -->
[client]
SystemConnection -->
...

Anulling SystemConnection#ITextToSpeechSession and
TextToSpeechSessionConnection#ITextToSpeechSessionCallback
on disconnection should make it available for garbage collection
since then no intra-process references would remain.

Fix confirmed with ahat.

Bug: 233615470
Test: atest
Change-Id: I7c9d25b7306d9ce68098c5a6ba0e65711daa3c25
parent 32338521
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2422,6 +2422,7 @@ public class TextToSpeech {
                    @Override
                    public void onDisconnected() {
                        onServiceDisconnected(/* componentName= */ null);
                        mSession = null;
                    }

                    @Override
+2 −1
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ final class TextToSpeechManagerPerUserService extends
            ServiceConnector.Impl<ITextToSpeechService> {

        private final String mEngine;
        private final ITextToSpeechSessionCallback mCallback;
        private ITextToSpeechSessionCallback mCallback;
        private final DeathRecipient mUnbindOnDeathHandler;

        static void start(Context context, @UserIdInt int userId, String engine,
@@ -156,6 +156,7 @@ final class TextToSpeechManagerPerUserService extends
                } catch (NoSuchElementException ex) {
                    Slog.d(TAG, "The death recipient was not linked.");
                }
                mCallback = null;
            }
        }