summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/graphics/DragPreviewProvider.java
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2019-01-10 18:05:15 -0800
committerWinson Chung <winsonc@google.com>2019-01-10 18:05:15 -0800
commit0d5ca096a03104d75f231175bd54a991adc27b09 (patch)
treebc0053d94c9c79c131f97ced9724f793ba1b5297 /src/com/android/launcher3/graphics/DragPreviewProvider.java
parentc049c80e411b59d5e20cb6d9f82b98ee04f14a8c (diff)
downloadandroid_packages_apps_Trebuchet-0d5ca096a03104d75f231175bd54a991adc27b09.tar.gz
android_packages_apps_Trebuchet-0d5ca096a03104d75f231175bd54a991adc27b09.tar.bz2
android_packages_apps_Trebuchet-0d5ca096a03104d75f231175bd54a991adc27b09.zip
Fix crash when rendering pending widget preview
- The pending widget disabled icon drawable is created from the icon backed by a hw bitmap, and when a user long presses the widget, we attempt to draw the drawable using a canvas backed by a software bitmap. Bug: 112324288 Test: Pick up a pending app widget Change-Id: Ied49112a2b03d54691f6db7c65e9267c8bd8e91f
Diffstat (limited to 'src/com/android/launcher3/graphics/DragPreviewProvider.java')
-rw-r--r--src/com/android/launcher3/graphics/DragPreviewProvider.java13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/com/android/launcher3/graphics/DragPreviewProvider.java b/src/com/android/launcher3/graphics/DragPreviewProvider.java
index 75d3425e2..7eb4015bf 100644
--- a/src/com/android/launcher3/graphics/DragPreviewProvider.java
+++ b/src/com/android/launcher3/graphics/DragPreviewProvider.java
@@ -36,6 +36,7 @@ import com.android.launcher3.folder.FolderIcon;
import com.android.launcher3.icons.BitmapRenderer;
import com.android.launcher3.util.UiThreadHelper;
import com.android.launcher3.widget.LauncherAppWidgetHostView;
+import com.android.launcher3.widget.PendingAppWidgetHostView;
import java.nio.ByteBuffer;
@@ -131,9 +132,15 @@ public class DragPreviewProvider {
width = (int) (mView.getWidth() * scale);
height = (int) (mView.getHeight() * scale);
- // Use software renderer for widgets as we know that they already work
- return BitmapRenderer.createSoftwareBitmap(width + blurSizeOutline,
- height + blurSizeOutline, (c) -> drawDragView(c, scale));
+ if (mView instanceof PendingAppWidgetHostView) {
+ // Use hardware renderer as the icon for the pending app widget may be a hw bitmap
+ return BitmapRenderer.createHardwareBitmap(width + blurSizeOutline,
+ height + blurSizeOutline, (c) -> drawDragView(c, scale));
+ } else {
+ // Use software renderer for widgets as we know that they already work
+ return BitmapRenderer.createSoftwareBitmap(width + blurSizeOutline,
+ height + blurSizeOutline, (c) -> drawDragView(c, scale));
+ }
}
return BitmapRenderer.createHardwareBitmap(width + blurSizeOutline,