Disable clipping where unnecessary

This change prevents the renderer from using a stencil buffer
to render rotated CellLayouts.

Change-Id: I0414f59ed45502323ab588820ceb4a5e3ec17140
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index 7818da4..23d1d61 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -181,6 +181,11 @@
         // A ViewGroup usually does not draw, but CellLayout needs to draw a rectangle to show
         // the user where a dragged item will land when dropped.
         setWillNotDraw(false);
+        // CellLayout guarantees its children are not laid out outside of its bounds,
+        // child clipping is thus unnecessary and disabling it offers better performance
+        // when we rotate the whole layout
+        setClipChildren(false);
+        setClipToPadding(false);
         mLauncher = (Launcher) context;
 
         TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CellLayout, defStyle, 0);
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 529f425..20bcca7 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -409,6 +409,8 @@
         LauncherApplication app = (LauncherApplication)context.getApplicationContext();
         mIconCache = app.getIconCache();
         setWillNotDraw(false);
+        setClipChildren(false);
+        setClipToPadding(false);
         setChildrenDrawnWithCacheEnabled(true);
 
         final Resources res = getResources();