Add a way to retrieve a Region as a SharedBuffer

Change-Id: Ia53cb905fbc88f899521658545f990fb9217b1e1
diff --git a/libs/ui/Region.cpp b/libs/ui/Region.cpp
index cdc2894..94fb1d5 100644
--- a/libs/ui/Region.cpp
+++ b/libs/ui/Region.cpp
@@ -606,6 +606,18 @@
     return b;
 }
 
+SharedBuffer const* Region::getSharedBuffer(size_t* count) const {
+    // We can get to the SharedBuffer of a Vector<Rect> because Rect has
+    // a trivial destructor.
+    SharedBuffer const* sb = SharedBuffer::bufferFromData(mStorage.array());
+    if (count) {
+        size_t numRects = isRect() ? 1 : mStorage.size() - 1;
+        count[0] = numRects;
+    }
+    sb->acquire();
+    return sb;
+}
+
 // ----------------------------------------------------------------------------
 
 void Region::dump(String8& out, const char* what, uint32_t flags) const