added caching for mica effect, improving startup time

This commit is contained in:
booploops 2022-04-10 00:23:35 -07:00
parent 2be877179d
commit 2edbc243d0
2 changed files with 31 additions and 8 deletions

View file

@ -622,7 +622,10 @@ export class BrowserWindow {
const wpBase64: string = await readFileSync(wpPath, 'base64')
// add the data:image properties
const wpData: string = `data:image/png;base64,${wpBase64}`
event.returnValue = wpData;
event.returnValue = {
path: wpPath,
data: wpData
};
})
ipcMain.handle("reinstall-widevine-cdm", () => {

View file

@ -1,3 +1,5 @@
import { CiderCache } from "./cidercache.js"
async function spawnMica() {
if (typeof window.micaSpawned !== "undefined") {
return
@ -19,20 +21,38 @@ async function spawnMica() {
let lastScreenWidth;
let lastScreenHeight;
let regen = true
let imgSrc = await ipcRenderer.sendSync("get-wallpaper")
let micaCache = await CiderCache.getCache("mica-cache")
if (!micaCache) {
micaCache = {
path: "",
data: ""
}
}
if (micaCache.path == imgSrc.path) {
regen = false
imgSrc = micaCache
}
let canvas = document.createElement('canvas');
let ctx = canvas.getContext('2d');
let img = new Image();
img.src = imgSrc;
img.src = imgSrc.data;
img.onload = function () {
canvas.width = img.width;
canvas.height = img.height;
ctx.drawImage(img, 0, 0);
if (regen) {
for (let i = 0; i < blurIterations; i++) {
StackBlur.canvasRGB(canvas, 0, 0, img.width, img.height, 128);
}
micaCache.path = imgSrc.path
micaCache.data = canvas.toDataURL()
CiderCache.putCache("mica-cache", micaCache)
}
let imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
micaDiv.style.backgroundImage = `url(${canvas.toDataURL()})`;
micaDiv.style.backgroundImage = `url(${micaCache.data})`;
document.body.appendChild(micaDiv);
// on animation finished set animation to unset
micaDiv.addEventListener('animationend', function () {