summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChet Haase <chet@google.com>2013-06-10 22:28:58 -0700
committerChet Haase <chet@google.com>2013-09-09 08:39:35 -0700
commit183e2a351daa8071be69eacb514b9405193a7a35 (patch)
tree31c40934d5d108a6db5f516ac8a3fb3bf1d79e37
parent9b40bdf64420bf1585ccadd36d0a7d38f3c77865 (diff)
downloadframeworks_base-183e2a351daa8071be69eacb514b9405193a7a35.zip
frameworks_base-183e2a351daa8071be69eacb514b9405193a7a35.tar.gz
frameworks_base-183e2a351daa8071be69eacb514b9405193a7a35.tar.bz2
Propagate pivot values of 0 to native layer
Logic in pivotXY setters noops when the new value equals the previous value. However, the initial value is "0" even though we actually use a value of the view's midpoint by default. If an app sets a new value of 0, we don't send it down to the native layer because it's the same as the initial value, even though we're actually using a midpoint value instead. This causes a conflict between the matrix used for invalidations (which use the actual values the app set) and the matrix used for rendering (which uses the default midpoint values). The fix is to make sure we send down the initial value, even when it equals the default value, by checking to see whether this is the first time we're setting the pivot. Issue #9337635 Clipping and bad rendering of view corners when y pivot is set Change-Id: I4aa20c4a3c9a866ca17df3e067232b832d0ef504
-rw-r--r--core/java/android/view/View.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 8616aba..650d698 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -9546,9 +9546,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
public void setPivotX(float pivotX) {
ensureTransformationInfo();
- mPrivateFlags |= PFLAG_PIVOT_EXPLICITLY_SET;
final TransformationInfo info = mTransformationInfo;
- if (info.mPivotX != pivotX) {
+ boolean pivotSet = (mPrivateFlags & PFLAG_PIVOT_EXPLICITLY_SET) ==
+ PFLAG_PIVOT_EXPLICITLY_SET;
+ if (info.mPivotX != pivotX || !pivotSet) {
+ mPrivateFlags |= PFLAG_PIVOT_EXPLICITLY_SET;
invalidateViewProperty(true, false);
info.mPivotX = pivotX;
info.mMatrixDirty = true;
@@ -9596,9 +9598,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
public void setPivotY(float pivotY) {
ensureTransformationInfo();
- mPrivateFlags |= PFLAG_PIVOT_EXPLICITLY_SET;
final TransformationInfo info = mTransformationInfo;
- if (info.mPivotY != pivotY) {
+ boolean pivotSet = (mPrivateFlags & PFLAG_PIVOT_EXPLICITLY_SET) ==
+ PFLAG_PIVOT_EXPLICITLY_SET;
+ if (info.mPivotY != pivotY || !pivotSet) {
+ mPrivateFlags |= PFLAG_PIVOT_EXPLICITLY_SET;
invalidateViewProperty(true, false);
info.mPivotY = pivotY;
info.mMatrixDirty = true;