mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2024-11-16 03:32:36 +08:00
feat: reduce gpu usage when hidden
This commit is contained in:
parent
18a6bfd73a
commit
0be4b1222d
|
@ -1,5 +1,7 @@
|
|||
import { useEffect, useRef } from "react";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import { useTheme } from "@mui/material";
|
||||
import { listen } from "@tauri-apps/api/event";
|
||||
import { appWindow } from "@tauri-apps/api/window";
|
||||
|
||||
const maxPoint = 30;
|
||||
|
||||
|
@ -70,7 +72,28 @@ const TrafficGraph = (props: Props) => {
|
|||
};
|
||||
}, []);
|
||||
|
||||
// reduce the GPU usage when hidden
|
||||
const [enablePaint, setEnablePaint] = useState(true);
|
||||
useEffect(() => {
|
||||
appWindow.isVisible().then(setEnablePaint);
|
||||
|
||||
const unlistenBlur = listen("tauri://blur", async () => {
|
||||
setEnablePaint(await appWindow.isVisible());
|
||||
});
|
||||
|
||||
const unlistenFocus = listen("tauri://focus", async () => {
|
||||
setEnablePaint(await appWindow.isVisible());
|
||||
});
|
||||
|
||||
return () => {
|
||||
unlistenBlur.then((fn) => fn());
|
||||
unlistenFocus.then((fn) => fn());
|
||||
};
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
if (!enablePaint) return;
|
||||
|
||||
let raf = 0;
|
||||
const canvas = canvasRef.current!;
|
||||
|
||||
|
@ -193,7 +216,7 @@ const TrafficGraph = (props: Props) => {
|
|||
return () => {
|
||||
cancelAnimationFrame(raf);
|
||||
};
|
||||
}, [palette]);
|
||||
}, [enablePaint, palette]);
|
||||
|
||||
return <canvas ref={canvasRef} style={{ width: "100%", height: "100%" }} />;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue
Block a user