From cfe2ebcd4298e898f9b3099dfb7b72433a839ae8 Mon Sep 17 00:00:00 2001 From: Roger Olsson Date: Thu, 12 Apr 2018 10:08:01 +0200 Subject: Avoid crash when widget previews have no intrinsic size Intrinsic size for widget preview drawable checked. Needed since some drawables, like color drawables, do not have any intrinsic size. Bug: 78452220 Test: manual, see Bug info. Change-Id: I815353773e38b1fce2fe19962f07c1727e1b0768 --- src/com/android/launcher3/WidgetPreviewLoader.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher3/WidgetPreviewLoader.java b/src/com/android/launcher3/WidgetPreviewLoader.java index a65ea9b10..e8c1361fe 100644 --- a/src/com/android/launcher3/WidgetPreviewLoader.java +++ b/src/com/android/launcher3/WidgetPreviewLoader.java @@ -340,7 +340,8 @@ public class WidgetPreviewLoader { int previewWidth; int previewHeight; - if (widgetPreviewExists) { + if (widgetPreviewExists && drawable.getIntrinsicWidth() > 0 + && drawable.getIntrinsicHeight() > 0) { previewWidth = drawable.getIntrinsicWidth(); previewHeight = drawable.getIntrinsicHeight(); } else { @@ -360,8 +361,8 @@ public class WidgetPreviewLoader { scale = maxPreviewWidth / (float) (previewWidth); } if (scale != 1f) { - previewWidth = (int) (scale * previewWidth); - previewHeight = (int) (scale * previewHeight); + previewWidth = Math.max((int)(scale * previewWidth), 1); + previewHeight = Math.max((int)(scale * previewHeight), 1); } // If a bitmap is passed in, we use it; otherwise, we create a bitmap of the right size -- cgit v1.2.3