Prevent nesting of ContextThemeWrapper

brightness_mirror_container sets android:theme, causing the inflating
context to be wrapped in a ContextThemeWrapper every time it's
reinflated (because we used the old view context).

Instead, use the context of the parent for reinflation (same context
every time), so we only have one layer or theming.

Fixes: 200054259
Test: manual, dump heap after triggering reinflate many times
Change-Id: I0af5648bfc8b20dc53cb0a9064eb7b93d1f10941
This commit is contained in:
Fabian Kozynski
2021-09-17 10:10:10 -04:00
parent fcf06e22b7
commit 04a442e536

View File

@@ -149,7 +149,7 @@ public class BrightnessMirrorController
private void reinflate() {
int index = mStatusBarWindow.indexOfChild(mBrightnessMirror);
mStatusBarWindow.removeView(mBrightnessMirror);
mBrightnessMirror = (FrameLayout) LayoutInflater.from(mBrightnessMirror.getContext())
mBrightnessMirror = (FrameLayout) LayoutInflater.from(mStatusBarWindow.getContext())
.inflate(R.layout.brightness_mirror_container, mStatusBarWindow, false);
mToggleSliderController = setMirrorLayout();
mStatusBarWindow.addView(mBrightnessMirror, index);