Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e833f238 authored by Winson's avatar Winson Committed by android-build-merger
Browse files

Fix edge case crash with invalid bitmap dimensions. am: f9e79e04

am: 616a2a15

* commit '616a2a15':
  Fix edge case crash with invalid bitmap dimensions.

Change-Id: I88f2e65efcaf10588985a76c30964ff87b614575
parents bb0bd465 616a2a15
Loading
Loading
Loading
Loading
+19 −8
Original line number Diff line number Diff line
@@ -306,8 +306,11 @@ public class RecentsTransitionHelper {
                mTmpTransform.fillIn(taskView);
                stackLayout.transformToScreenCoordinates(mTmpTransform,
                        null /* windowOverrideRect */);
                specs.add(composeAnimationSpec(stackView, taskView, mTmpTransform,
                        true /* addHeaderBitmap */));
                AppTransitionAnimationSpec spec = composeAnimationSpec(stackView, taskView,
                        mTmpTransform, true /* addHeaderBitmap */);
                if (spec != null) {
                    specs.add(spec);
                }
            }
            return specs;
        }
@@ -329,8 +332,11 @@ public class RecentsTransitionHelper {
                    mTmpTransform.fillIn(taskView);
                    stackLayout.transformToScreenCoordinates(mTmpTransform,
                            null /* windowOverrideRect */);
                    specs.add(composeAnimationSpec(stackView, tv, mTmpTransform,
                            true /* addHeaderBitmap */));
                    AppTransitionAnimationSpec spec = composeAnimationSpec(stackView, tv,
                            mTmpTransform, true /* addHeaderBitmap */);
                    if (spec != null) {
                        specs.add(spec);
                    }
                }
            }
        }
@@ -376,11 +382,13 @@ public class RecentsTransitionHelper {
    private static Bitmap composeHeaderBitmap(TaskView taskView,
            TaskViewTransform transform) {
        float scale = transform.scale;
        int fromHeaderWidth = (int) (transform.rect.width());
        int fromHeaderHeight = (int) (taskView.mHeaderView.getMeasuredHeight() * scale);
        Bitmap b = Bitmap.createBitmap(fromHeaderWidth, fromHeaderHeight,
                Bitmap.Config.ARGB_8888);
        int headerWidth = (int) (transform.rect.width());
        int headerHeight = (int) (taskView.mHeaderView.getMeasuredHeight() * scale);
        if (headerWidth == 0 || headerHeight == 0) {
            return null;
        }

        Bitmap b = Bitmap.createBitmap(headerWidth, headerHeight, Bitmap.Config.ARGB_8888);
        if (RecentsDebugFlags.Static.EnableTransitionThumbnailDebugMode) {
            b.eraseColor(0xFFff0000);
        } else {
@@ -400,6 +408,9 @@ public class RecentsTransitionHelper {
        Bitmap b = null;
        if (addHeaderBitmap) {
            b = composeHeaderBitmap(taskView, transform);
            if (b == null) {
                return null;
            }
        }

        Rect taskRect = new Rect();