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

Commit e2d034c9 authored by Mathias Agopian's avatar Mathias Agopian
Browse files

wallpaper: don't erase the background, just to repaint over it. saves 1.7 ms on some hardware

parent cc934763
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.internal.service.wallpaper;
import android.app.WallpaperManager;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.Region.Op;
import android.graphics.drawable.Drawable;
import android.os.HandlerThread;
import android.os.Process;
@@ -134,14 +135,18 @@ public class ImageWallpaper extends WallpaperService {
                    final int dh = frame.height();
                    final int bw = mBackground.getIntrinsicWidth();
                    final int bh = mBackground.getIntrinsicHeight();
                    final int availw = bw-dw;
                    final int availh = bh-dh;
                    int xPixels = availw > 0
                            ? -(int)(availw*mXOffset+.5f) : -(availw/2);
                    int yPixels = availh > 0
                            ? -(int)(availh*mYOffset+.5f) : -(availh/2);
                    final int availw = dw-bw;
                    final int availh = dh-bh;
                    int xPixels = availw < 0 ? (int)(availw*mXOffset+.5f) : (availw/2);
                    int yPixels = availh < 0 ? (int)(availh*mYOffset+.5f) : (availh/2);

                    c.translate(xPixels, yPixels);
                    if (availw<0 || availh<0) {
                        c.save(Canvas.CLIP_SAVE_FLAG);
                        c.clipRect(0, 0, bw, bh, Op.DIFFERENCE);
                        c.drawColor(0xff000000);
                        c.restore();
                    }
                    background.draw(c);
                }
                sh.unlockCanvasAndPost(c);