diff options
| author | 2023-12-19 16:51:55 +0000 | |
|---|---|---|
| committer | 2023-12-19 18:56:51 +0000 | |
| commit | 4863ac4c4b47af2f05e6faa7d66bb5e838146f35 (patch) | |
| tree | 821b743c7a220b11d50eefec7c32b7095284c1b4 | |
| parent | 779bb8efb555f65582d880486d3c2ecbf8bf9b35 (diff) | |
Replace getVisibity and getAlpha function in getSizePercentage
1. Replace the getVisibity and getAlpha functions with the logic directly
to avoid NullPointerException.
2. Move the flag to cover the entire getSizePercentage function
Bug: 316852908
Test: atest ViewTest & atest ViewRootImplTest
Change-Id: I979302ce9830027d8d0e5d9e47820584f9ba1ef8
| -rw-r--r-- | core/java/android/view/View.java | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index cbafd1cfc0cd..e4b709e66fbc 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -33056,7 +33056,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } private float getSizePercentage() { - if (mResources == null || getVisibility() != VISIBLE) { + float alpha = mTransformationInfo != null ? mTransformationInfo.mAlpha : 1; + int visibility = mViewFlags & VISIBILITY_MASK; + + if (mResources == null || alpha == 0 || visibility != VISIBLE) { return 0; } @@ -33081,25 +33084,26 @@ public class View implements Drawable.Callback, KeyEvent.Callback, private void votePreferredFrameRate() { // use toolkitSetFrameRate flag to gate the change - ViewRootImpl viewRootImpl = getViewRootImpl(); - float sizePercentage = getSizePercentage(); - int frameRateCateogry = calculateFrameRateCategory(sizePercentage); - if (sToolkitSetFrameRateReadOnlyFlagValue && viewRootImpl != null - && sizePercentage > 0) { - if (mPreferredFrameRate < 0) { - if (mPreferredFrameRate == REQUESTED_FRAME_RATE_CATEGORY_NO_PREFERENCE) { - frameRateCateogry = FRAME_RATE_CATEGORY_NO_PREFERENCE; - } else if (mPreferredFrameRate == REQUESTED_FRAME_RATE_CATEGORY_LOW) { - frameRateCateogry = FRAME_RATE_CATEGORY_LOW; - } else if (mPreferredFrameRate == REQUESTED_FRAME_RATE_CATEGORY_NORMAL) { - frameRateCateogry = FRAME_RATE_CATEGORY_NORMAL; - } else if (mPreferredFrameRate == REQUESTED_FRAME_RATE_CATEGORY_HIGH) { - frameRateCateogry = FRAME_RATE_CATEGORY_HIGH; + if (sToolkitSetFrameRateReadOnlyFlagValue) { + ViewRootImpl viewRootImpl = getViewRootImpl(); + float sizePercentage = getSizePercentage(); + int frameRateCateogry = calculateFrameRateCategory(sizePercentage); + if (viewRootImpl != null && sizePercentage > 0) { + if (mPreferredFrameRate < 0) { + if (mPreferredFrameRate == REQUESTED_FRAME_RATE_CATEGORY_NO_PREFERENCE) { + frameRateCateogry = FRAME_RATE_CATEGORY_NO_PREFERENCE; + } else if (mPreferredFrameRate == REQUESTED_FRAME_RATE_CATEGORY_LOW) { + frameRateCateogry = FRAME_RATE_CATEGORY_LOW; + } else if (mPreferredFrameRate == REQUESTED_FRAME_RATE_CATEGORY_NORMAL) { + frameRateCateogry = FRAME_RATE_CATEGORY_NORMAL; + } else if (mPreferredFrameRate == REQUESTED_FRAME_RATE_CATEGORY_HIGH) { + frameRateCateogry = FRAME_RATE_CATEGORY_HIGH; + } + } else { + viewRootImpl.votePreferredFrameRate(mPreferredFrameRate); } - } else { - viewRootImpl.votePreferredFrameRate(mPreferredFrameRate); + viewRootImpl.votePreferredFrameRateCategory(frameRateCateogry); } - viewRootImpl.votePreferredFrameRateCategory(frameRateCateogry); } } |