Send WebView the current transform and whether we're drawing a layer.
Bug #3275491

These can be used by WebView to correctly apply alpha and geometric
transforms.

Change-Id: I2ecd4376d68df886dead3c9240317de33f56828f
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index d265804..d9d7d23 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -26,6 +26,8 @@
 #include <utils/Log.h>
 #include <utils/StopWatch.h>
 
+#include <private/hwui/DrawGlInfo.h>
+
 #include <ui/Rect.h>
 
 #include "OpenGLRenderer.h"
@@ -227,30 +229,18 @@
     }
 #endif
 
-    struct {
-        // Input: current clip rect
-        int clipLeft;
-        int clipTop;
-        int clipRight;
-        int clipBottom;
+    DrawGlInfo info;
+    info.clipLeft = clip.left;
+    info.clipTop = clip.top;
+    info.clipRight = clip.right;
+    info.clipBottom = clip.bottom;
+    info.isLayer = hasLayer();
+    getSnapshot()->transform->copyTo(&info.transform[0]);
 
-        // Output: dirty region to redraw
-        float dirtyLeft;
-        float dirtyTop;
-        float dirtyRight;
-        float dirtyBottom;
-    } constraints;
-
-    constraints.clipLeft = clip.left;
-    constraints.clipTop = clip.top;
-    constraints.clipRight = clip.right;
-    constraints.clipBottom = clip.bottom;
-
-    status_t result = (*functor)(0, &constraints);
+    status_t result = (*functor)(0, &info);
 
     if (result != 0) {
-        Rect localDirty(constraints.dirtyLeft, constraints.dirtyTop,
-                constraints.dirtyRight, constraints.dirtyBottom);
+        Rect localDirty(info.dirtyLeft, info.dirtyTop, info.dirtyRight, info.dirtyBottom);
         dirty.unionWith(localDirty);
     }