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

Commit dfb59e8e authored by Santiago Etchebehere's avatar Santiago Etchebehere
Browse files

Fix crash extracting wallpaper color

When extracting background color, copy the bitmap first
if it's a Config.HARDWARE bitmap (and recycle immediately
after that).

Fixes: 136195242
Change-Id: I815230895b9b57daa730a94905a30e1901f90c0c
parent 752cc8ad
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -22,6 +22,7 @@ import android.content.Intent;
import android.content.res.ColorStateList;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.LayerDrawable;
@@ -568,7 +569,15 @@ public class ThemeFragment extends ToolbarFragment {
                }
                }
                view.findViewById(R.id.theme_preview_card_background).setBackground(background);
                view.findViewById(R.id.theme_preview_card_background).setBackground(background);
                if (mScrim == null && !mIsTranslucent) {
                if (mScrim == null && !mIsTranslucent) {
                    boolean shouldRecycle = false;
                    if (bitmap.getConfig() == Config.HARDWARE) {
                        bitmap = bitmap.copy(Config.ARGB_8888, false);
                        shouldRecycle = true;
                    }
                    int colorsHint = WallpaperColors.fromBitmap(bitmap).getColorHints();
                    int colorsHint = WallpaperColors.fromBitmap(bitmap).getColorHints();
                    if (shouldRecycle) {
                        bitmap.recycle();
                    }
                    TextView header = view.findViewById(R.id.theme_preview_card_header);
                    TextView header = view.findViewById(R.id.theme_preview_card_header);
                    if ((colorsHint & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0) {
                    if ((colorsHint & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0) {
                        int colorLight = res.getColor(R.color.text_color_light, null);
                        int colorLight = res.getColor(R.color.text_color_light, null);