added caching for mica effect, improving startup time
This commit is contained in:
parent
2be877179d
commit
2edbc243d0
2 changed files with 31 additions and 8 deletions
|
@ -622,7 +622,10 @@ export class BrowserWindow {
|
||||||
const wpBase64: string = await readFileSync(wpPath, 'base64')
|
const wpBase64: string = await readFileSync(wpPath, 'base64')
|
||||||
// add the data:image properties
|
// add the data:image properties
|
||||||
const wpData: string = `data:image/png;base64,${wpBase64}`
|
const wpData: string = `data:image/png;base64,${wpBase64}`
|
||||||
event.returnValue = wpData;
|
event.returnValue = {
|
||||||
|
path: wpPath,
|
||||||
|
data: wpData
|
||||||
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
ipcMain.handle("reinstall-widevine-cdm", () => {
|
ipcMain.handle("reinstall-widevine-cdm", () => {
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
|
import { CiderCache } from "./cidercache.js"
|
||||||
|
|
||||||
async function spawnMica() {
|
async function spawnMica() {
|
||||||
if(typeof window.micaSpawned !== "undefined") {
|
if (typeof window.micaSpawned !== "undefined") {
|
||||||
return
|
return
|
||||||
}else{
|
} else {
|
||||||
window.micaSpawned = true
|
window.micaSpawned = true
|
||||||
}
|
}
|
||||||
const micaDiv = document.createElement('div');
|
const micaDiv = document.createElement('div');
|
||||||
|
@ -19,20 +21,38 @@ async function spawnMica() {
|
||||||
let lastScreenWidth;
|
let lastScreenWidth;
|
||||||
let lastScreenHeight;
|
let lastScreenHeight;
|
||||||
|
|
||||||
|
let regen = true
|
||||||
let imgSrc = await ipcRenderer.sendSync("get-wallpaper")
|
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 canvas = document.createElement('canvas');
|
||||||
let ctx = canvas.getContext('2d');
|
let ctx = canvas.getContext('2d');
|
||||||
let img = new Image();
|
let img = new Image();
|
||||||
img.src = imgSrc;
|
img.src = imgSrc.data;
|
||||||
img.onload = function () {
|
img.onload = function () {
|
||||||
canvas.width = img.width;
|
canvas.width = img.width;
|
||||||
canvas.height = img.height;
|
canvas.height = img.height;
|
||||||
ctx.drawImage(img, 0, 0);
|
ctx.drawImage(img, 0, 0);
|
||||||
|
if (regen) {
|
||||||
for (let i = 0; i < blurIterations; i++) {
|
for (let i = 0; i < blurIterations; i++) {
|
||||||
StackBlur.canvasRGB(canvas, 0, 0, img.width, img.height, 128);
|
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);
|
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);
|
document.body.appendChild(micaDiv);
|
||||||
// on animation finished set animation to unset
|
// on animation finished set animation to unset
|
||||||
micaDiv.addEventListener('animationend', function () {
|
micaDiv.addEventListener('animationend', function () {
|
||||||
|
@ -84,4 +104,4 @@ async function spawnMica() {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
export {spawnMica}
|
export { spawnMica }
|
Loading…
Add table
Add a link
Reference in a new issue