diff options
| author | 2024-06-25 16:29:18 +0000 | |
|---|---|---|
| committer | 2024-06-25 17:10:58 +0000 | |
| commit | d1307e7a101b68bb10fc51eb3fa56eb430848ffd (patch) | |
| tree | 426af24970e98d129f870d9dc7a9d67b3a9cdaaf | |
| parent | c96151685f50105d88be4475fc247ba55fbaa22b (diff) | |
Keep members that are weakly referenced from native code
When full optimization is enabled in system_server, members that are
write-only may be optimized away. This can impact downstream weak
reference lifecycle semantics. Annotate such a member in
LocalDisplayAdapter that is weakly referenced from native code.
Test: FULL_SYSTEM_OPTIMIZE_JAVA=true m + check member preserved
Bug: 349245577
Change-Id: I355ee0ff7009476d4b917fc8dd078922d1b2c15b
| -rw-r--r-- | services/core/java/com/android/server/display/LocalDisplayAdapter.java | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java index 22898a65c5de..ee63c08edee2 100644 --- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java +++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java @@ -45,6 +45,7 @@ import android.view.RoundedCorners; import android.view.SurfaceControl; import com.android.internal.R; +import com.android.internal.annotations.KeepForWeakReference; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.display.BrightnessSynchronizer; import com.android.internal.util.function.pooled.PooledLambda; @@ -1364,8 +1365,9 @@ final class LocalDisplayAdapter extends DisplayAdapter { } public static class Injector { - // Native callback. + // Ensure the callback is kept to preserve native weak reference lifecycle semantics. @SuppressWarnings("unused") + @KeepForWeakReference private ProxyDisplayEventReceiver mReceiver; public void setDisplayEventListenerLocked(Looper looper, DisplayEventListener listener) { mReceiver = new ProxyDisplayEventReceiver(looper, listener); |