Merge "Stupid fixed point math. Bug #5423215"
diff --git a/libs/hwui/FontRenderer.cpp b/libs/hwui/FontRenderer.cpp
index dd05e61..a077cbc5 100644
--- a/libs/hwui/FontRenderer.cpp
+++ b/libs/hwui/FontRenderer.cpp
@@ -185,7 +185,7 @@
         return;
     }
 
-    SkFixed penX = SkIntToFixed(x);
+    float penX = x;
     int penY = y;
     int glyphsLeft = 1;
     if (numGlyphs > 0) {
@@ -193,7 +193,7 @@
     }
 
     SkFixed prevRsbDelta = 0;
-    penX += SK_Fixed1 / 2;
+    penX += 0.5f;
 
     text += start;
 
@@ -206,25 +206,25 @@
         }
 
         CachedGlyphInfo* cachedGlyph = getCachedGlyph(paint, glyph);
-        penX += SkAutoKern_AdjustF(prevRsbDelta, cachedGlyph->mLsbDelta);
+        penX += SkFixedToFloat(SkAutoKern_AdjustF(prevRsbDelta, cachedGlyph->mLsbDelta));
         prevRsbDelta = cachedGlyph->mRsbDelta;
 
         // If it's still not valid, we couldn't cache it, so we shouldn't draw garbage
         if (cachedGlyph->mIsValid) {
             switch(mode) {
             case FRAMEBUFFER:
-                drawCachedGlyph(cachedGlyph, SkFixedFloor(penX), penY);
+                drawCachedGlyph(cachedGlyph, (int) floorf(penX), penY);
                 break;
             case BITMAP:
-                drawCachedGlyph(cachedGlyph, SkFixedFloor(penX), penY, bitmap, bitmapW, bitmapH);
+                drawCachedGlyph(cachedGlyph, (int) floorf(penX), penY, bitmap, bitmapW, bitmapH);
                 break;
             case MEASURE:
-                measureCachedGlyph(cachedGlyph, SkFixedFloor(penX), penY, bounds);
+                measureCachedGlyph(cachedGlyph, (int) floorf(penX), penY, bounds);
                 break;
             }
         }
 
-        penX += cachedGlyph->mAdvanceX;
+        penX += SkFixedToFloat(cachedGlyph->mAdvanceX);
 
         // If we were given a specific number of glyphs, decrement
         if (numGlyphs > 0) {