Skip to content

Commit

Permalink
fix: Cover art wall memory usage issue on Windows
Browse files Browse the repository at this point in the history
  • Loading branch information
Losses committed Nov 26, 2024
1 parent b750765 commit 298f47b
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions lib/screens/cover_wall/widgets/gradient_container.dart
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class GradientContainer extends StatefulWidget {
}

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

Future<ui.FragmentProgram> _loadShader() async {
Future<(ui.FragmentProgram, FragmentShader)> _loadShader() async {
try {
return await ui.FragmentProgram.fromAsset('lib/shaders/gradient.frag');
final fragmentProgram =
await ui.FragmentProgram.fromAsset('lib/shaders/gradient.frag');
final fragmentShader = fragmentProgram.fragmentShader();

return (fragmentProgram, fragmentShader);
} catch (e) {
rethrow;
}
Expand Down Expand Up @@ -104,7 +108,7 @@ class GradientContainerState extends State<GradientContainer> {

@override
Widget build(BuildContext context) {
return FutureBuilder<ui.FragmentProgram>(
return FutureBuilder<(ui.FragmentProgram, FragmentShader)>(
future: _shaderProgram,
builder: (context, snapshot) {
if (!snapshot.hasData) {
Expand All @@ -114,10 +118,10 @@ class GradientContainerState extends State<GradientContainer> {
final isDark = FluentTheme.of(context).brightness.isDark;

final shader = snapshot.data!;
final fragmentShader = shader.$2;

return AnimatedSampler(
(ui.Image image, Size size, Canvas canvas) {
final fragmentShader = shader.fragmentShader();
fragmentShader
..setImageSampler(0, image)
// resolution
Expand Down

0 comments on commit 298f47b

Please sign in to comment.