summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shane <shanewong@google.com> 2023-12-19 16:51:55 +0000
committer Shane <shanewong@google.com> 2023-12-19 18:56:51 +0000
commit4863ac4c4b47af2f05e6faa7d66bb5e838146f35 (patch)
tree821b743c7a220b11d50eefec7c32b7095284c1b4
parent779bb8efb555f65582d880486d3c2ecbf8bf9b35 (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.java40
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);
}
}