Skip to content

Commit 298f47b

Browse files
committed
fix: Cover art wall memory usage issue on Windows
1 parent b750765 commit 298f47b

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

lib/screens/cover_wall/widgets/gradient_container.dart

+9-5
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class GradientContainer extends StatefulWidget {
5151
}
5252

5353
class GradientContainerState extends State<GradientContainer> {
54-
late Future<ui.FragmentProgram> _shaderProgram;
54+
late Future<(ui.FragmentProgram, FragmentShader)> _shaderProgram;
5555
late Timer _timer;
5656
double _time = 0.0;
5757
Offset _mousePosition = Offset.zero;
@@ -74,9 +74,13 @@ class GradientContainerState extends State<GradientContainer> {
7474
WidgetsBinding.instance.pointerRouter.addGlobalRoute(_updateMousePosition);
7575
}
7676

77-
Future<ui.FragmentProgram> _loadShader() async {
77+
Future<(ui.FragmentProgram, FragmentShader)> _loadShader() async {
7878
try {
79-
return await ui.FragmentProgram.fromAsset('lib/shaders/gradient.frag');
79+
final fragmentProgram =
80+
await ui.FragmentProgram.fromAsset('lib/shaders/gradient.frag');
81+
final fragmentShader = fragmentProgram.fragmentShader();
82+
83+
return (fragmentProgram, fragmentShader);
8084
} catch (e) {
8185
rethrow;
8286
}
@@ -104,7 +108,7 @@ class GradientContainerState extends State<GradientContainer> {
104108

105109
@override
106110
Widget build(BuildContext context) {
107-
return FutureBuilder<ui.FragmentProgram>(
111+
return FutureBuilder<(ui.FragmentProgram, FragmentShader)>(
108112
future: _shaderProgram,
109113
builder: (context, snapshot) {
110114
if (!snapshot.hasData) {
@@ -114,10 +118,10 @@ class GradientContainerState extends State<GradientContainer> {
114118
final isDark = FluentTheme.of(context).brightness.isDark;
115119

116120
final shader = snapshot.data!;
121+
final fragmentShader = shader.$2;
117122

118123
return AnimatedSampler(
119124
(ui.Image image, Size size, Canvas canvas) {
120-
final fragmentShader = shader.fragmentShader();
121125
fragmentShader
122126
..setImageSampler(0, image)
123127
// resolution

0 commit comments

Comments
 (0)