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();