am fe6f45c8: Merge change 8098 into donut

Merge commit 'fe6f45c81463d2d28e11ac6083f2653e1286c5ef'

* commit 'fe6f45c81463d2d28e11ac6083f2653e1286c5ef':
  cast is floor. Use round instead.
diff --git a/core/java/android/content/res/CompatibilityInfo.java b/core/java/android/content/res/CompatibilityInfo.java
index 6e34cc8..2805bd5 100644
--- a/core/java/android/content/res/CompatibilityInfo.java
+++ b/core/java/android/content/res/CompatibilityInfo.java
@@ -342,8 +342,8 @@
     public static void updateCompatibleScreenFrame(DisplayMetrics dm, int orientation,
             Rect outRect) {
         int width = dm.widthPixels;
-        int portraitHeight = (int) (DEFAULT_PORTRAIT_HEIGHT * dm.density);
-        int portraitWidth = (int) (DEFAULT_PORTRAIT_WIDTH * dm.density);
+        int portraitHeight = (int) (DEFAULT_PORTRAIT_HEIGHT * dm.density + 0.5f);
+        int portraitWidth = (int) (DEFAULT_PORTRAIT_WIDTH * dm.density + 0.5f);
         if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
             int xOffset = (width - portraitHeight) / 2 ;
             outRect.set(xOffset, 0, xOffset + portraitHeight, portraitWidth);
diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java
index bfab49d..38d99b3 100644
--- a/core/java/android/util/DisplayMetrics.java
+++ b/core/java/android/util/DisplayMetrics.java
@@ -136,15 +136,19 @@
                 int defaultHeight;
                 switch (orientation) {
                     case Configuration.ORIENTATION_LANDSCAPE: {
-                        defaultWidth = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_HEIGHT * density);
-                        defaultHeight = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_WIDTH * density);
+                        defaultWidth = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_HEIGHT * density +
+                                0.5f);
+                        defaultHeight = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_WIDTH * density +
+                                0.5f);
                         break;
                     }
                     case Configuration.ORIENTATION_PORTRAIT:
                     case Configuration.ORIENTATION_SQUARE:
                     default: {
-                        defaultWidth = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_WIDTH * density);
-                        defaultHeight = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_HEIGHT * density);
+                        defaultWidth = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_WIDTH * density +
+                                0.5f);
+                        defaultHeight = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_HEIGHT * density +
+                                0.5f);
                         break;
                     }
                     case Configuration.ORIENTATION_UNDEFINED: {
@@ -172,8 +176,8 @@
             scaledDensity *= invertedRatio;
             xdpi *= invertedRatio;
             ydpi *= invertedRatio;
-            widthPixels *= invertedRatio;
-            heightPixels *= invertedRatio;
+            widthPixels = (int) (widthPixels * invertedRatio + 0.5f);
+            heightPixels = (int) (heightPixels * invertedRatio + 0.5f);
         }
     }
 
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index 25bbb6a..a814586 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -310,8 +310,8 @@
         // Use original size if the app specified the size of the view,
         // and let the flinger to scale up.
         if (mRequestedWidth <= 0 && mTranslator != null) {
-            myWidth *= appScale;
-            myHeight *= appScale;
+            myWidth = (int) (myWidth * appScale + 0.5f);
+            myHeight = (int) (myHeight * appScale + 0.5f);
             mScaled = true;
         } else {
             mScaled = false;
diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java
index 2acf790..48dbb77 100644
--- a/core/java/android/view/ViewRoot.java
+++ b/core/java/android/view/ViewRoot.java
@@ -914,7 +914,8 @@
             mHeight = frame.height();
 
             if (initialized) {
-                mGlCanvas.setViewport((int) (mWidth * appScale), (int) (mHeight * appScale));
+                mGlCanvas.setViewport((int) (mWidth * appScale + 0.5f),
+                        (int) (mHeight * appScale + 0.5f));
             }
 
             boolean focusChangedDueToTouchMode = ensureTouchModeLocally(
@@ -1244,7 +1245,7 @@
 
         if (fullRedrawNeeded) {
             mAttachInfo.mIgnoreDirtyState = true;
-            dirty.union(0, 0, (int) (mWidth * appScale), (int) (mHeight * appScale));
+            dirty.union(0, 0, (int) (mWidth * appScale + 0.5f), (int) (mHeight * appScale + 0.5f));
         }
 
         if (DEBUG_ORIENTATION || DEBUG_DRAW) {
@@ -1774,7 +1775,8 @@
                             if (mGlCanvas != null) {
                                 float appScale = mAttachInfo.mApplicationScale;
                                 mGlCanvas.setViewport(
-                                        (int) (mWidth * appScale), (int) (mHeight * appScale));
+                                        (int) (mWidth * appScale + 0.5f),
+                                        (int) (mHeight * appScale + 0.5f));
                             }
                         }
                     }
@@ -2419,8 +2421,8 @@
         }
         int relayoutResult = sWindowSession.relayout(
                 mWindow, params,
-                (int) (mView.mMeasuredWidth * appScale),
-                (int) (mView.mMeasuredHeight * appScale),
+                (int) (mView.mMeasuredWidth * appScale + 0.5f),
+                (int) (mView.mMeasuredHeight * appScale + 0.5f),
                 viewVisibility, insetsPending, mWinFrame,
                 mPendingContentInsets, mPendingVisibleInsets, mSurface);
         if (restore) {
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 6a26a31..c0be9e8 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -991,13 +991,13 @@
          * @hide
          */
         public void scale(float scale) {
-            x *= scale;
-            y *= scale;
+            x = (int) (x * scale + 0.5f);
+            y = (int) (y * scale + 0.5f);
             if (width > 0) {
-                width *= scale;
+                width = (int) (width * scale + 0.5f);
             }
             if (height > 0) {
-                height *= scale;
+                height = (int) (height * scale + 0.5f);
             }
         }
 
diff --git a/graphics/java/android/graphics/Rect.java b/graphics/java/android/graphics/Rect.java
index 50ab566..42a14ce 100644
--- a/graphics/java/android/graphics/Rect.java
+++ b/graphics/java/android/graphics/Rect.java
@@ -552,10 +552,10 @@
      */
     public void scale(float scale) {
         if (scale != 1.0f) {
-            left *= scale;
-            top *= scale;
-            right *= scale;
-            bottom*= scale;
+            left = (int) (left * scale + 0.5f);
+            top = (int) (top * scale + 0.5f);
+            right = (int) (right * scale + 0.5f);
+            bottom = (int) (bottom * scale + 0.5f);
         }
     }
 }