diff options
author | Winson Chung <winsonc@google.com> | 2019-01-10 18:05:15 -0800 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2019-01-10 18:05:15 -0800 |
commit | 0d5ca096a03104d75f231175bd54a991adc27b09 (patch) | |
tree | bc0053d94c9c79c131f97ced9724f793ba1b5297 /src/com/android/launcher3/graphics/DragPreviewProvider.java | |
parent | c049c80e411b59d5e20cb6d9f82b98ee04f14a8c (diff) | |
download | android_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.java | 13 |
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, |