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

Commit 817f3df8 authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

Use a transparent wall for live

parent b03f3d90
Loading
Loading
Loading
Loading
Loading
+30 −2
Original line number Diff line number Diff line
@@ -10,7 +10,12 @@ package foundation.e.bliss.blur
import android.annotation.SuppressLint
import android.app.WallpaperManager
import android.content.Context
import android.graphics.*
import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.ColorMatrix
import android.graphics.ColorMatrixColorFilter
import android.graphics.Paint
import android.util.DisplayMetrics
import android.view.WindowManager
import android.widget.Toast
@@ -58,6 +63,8 @@ class BlurWallpaperProvider(val context: Context) {

    private var updatePending = false

    private var isLiveWallpaper = false

    init {
        isEnabled = getEnabledStatus()
        updateAsync()
@@ -69,6 +76,10 @@ class BlurWallpaperProvider(val context: Context) {
        Executors.THREAD_POOL_EXECUTOR.execute(mUpdateRunnable)
    }

    fun setLiveWallpaper(isLive: Boolean) {
        isLiveWallpaper = isLive
    }

    @SuppressLint("MissingPermission")
    private fun updateWallpaper() {
        if (applyTask != null) {
@@ -93,7 +104,12 @@ class BlurWallpaperProvider(val context: Context) {

        var wallpaper =
            try {
                mWallpaperManager.drawable.toBitmap()
                val wall = mWallpaperManager.drawable.toBitmap()
                if (isLiveWallpaper) {
                    createTransparentBitmap(wall.width, wall.height)
                } else {
                    wall
                }
            } catch (e: Exception) {
                runOnMainThread {
                    val msg = "Failed: ${e.message}"
@@ -138,6 +154,18 @@ class BlurWallpaperProvider(val context: Context) {
        }
    }

    private fun createTransparentBitmap(width: Int, height: Int): Bitmap {
        val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
        val canvas = Canvas(bitmap)
        val paint =
            Paint().apply {
                color = Color.argb(0, 255, 255, 255) // White with transparency
                isAntiAlias = true
            }
        canvas.drawRect(0f, 0f, width.toFloat(), height.toFloat(), paint)
        return bitmap
    }

    private fun notifyWallpaperChanged() {
        mListeners.forEach(Listener::onWallpaperChanged)
    }
+8 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ public class WallpaperOffsetInterpolator {

    private boolean mRegistered = false;
    private IBinder mWindowToken;
    private boolean mWallpaperIsLiveWallpaper;
    private static boolean mWallpaperIsLiveWallpaper;

    private boolean mLockedToDefaultPage;
    private int mNumScreens;
@@ -214,11 +214,17 @@ public class WallpaperOffsetInterpolator {
            // Updating the boolean on a background thread is fine as the assignments are atomic
            mWallpaperIsLiveWallpaper = WallpaperManager.getInstance(mWorkspace.getContext())
                    .getWallpaperInfo() != null;
            setIsLiveWallpaper();
            BlurWallpaperProvider.Companion.getInstanceNoCreate().updateAsync();
            updateOffset();
        });
    }

    public static void setIsLiveWallpaper() {
        BlurWallpaperProvider.Companion.getInstanceNoCreate().setLiveWallpaper(
                mWallpaperIsLiveWallpaper);
    }

    private static final int MSG_START_ANIMATION = 1;
    private static final int MSG_UPDATE_OFFSET = 2;
    private static final int MSG_APPLY_OFFSET = 3;
@@ -307,6 +313,7 @@ public class WallpaperOffsetInterpolator {
        private void setOffsetSafely(IBinder token) {
            try {
                mWM.setWallpaperOffsets(token, mCurrentOffset, 0.5f);
                setIsLiveWallpaper();
                BlurWallpaperProvider.Companion.getInstanceNoCreate()
                        .setWallpaperOffset(mCurrentOffset);
            } catch (IllegalArgumentException e) {