diff options
Diffstat (limited to 'desktop/modules/sound')
| -rw-r--r-- | desktop/modules/sound/Osd.qml | 33 | ||||
| -rw-r--r-- | desktop/modules/sound/README.md | 5 |
2 files changed, 7 insertions, 31 deletions
diff --git a/desktop/modules/sound/Osd.qml b/desktop/modules/sound/Osd.qml index f60f5ce..e66d559 100644 --- a/desktop/modules/sound/Osd.qml +++ b/desktop/modules/sound/Osd.qml @@ -186,9 +186,10 @@ Scope { color: Qt.alpha(Theme.base, 0.82) } - // Frost on the scrim, faked: a faint top-down sheen and fixed - // grain. The art is opaque, so the compositor's frosting - // cannot show here without costing the scrim its legibility. + // Frost on the scrim, faked: a faint top-down sheen. The art is + // opaque, so the compositor's frosting cannot show here + // without costing the scrim its legibility. No grain: see + // createImageData in AGENTS.md. Rectangle { anchors.fill: parent radius: bgMask.radius @@ -197,32 +198,6 @@ Scope { GradientStop { position: 0.6; color: "transparent" } } } - - // ponytail: grain painted once with Canvas; a ShaderEffect - // would animate or scale better but needs a compiled .qsb. - Canvas { - anchors.fill: parent - layer.enabled: true - layer.effect: MultiEffect { - maskEnabled: true - maskSource: bgMask - maskThresholdMin: 0.5 - maskSpreadAtMin: 1.0 - } - onPaint: { - if (width <= 0 || height <= 0) return; - const ctx = getContext("2d"); - const img = ctx.createImageData(width, height); - for (let i = 0; i < img.data.length; i += 4) { - const v = Math.random() * 255; - img.data[i] = v; - img.data[i + 1] = v; - img.data[i + 2] = v; - img.data[i + 3] = 14; - } - ctx.putImageData(img, 0, 0); - } - } } HoverHandler { diff --git a/desktop/modules/sound/README.md b/desktop/modules/sound/README.md index c3ada08..88aba11 100644 --- a/desktop/modules/sound/README.md +++ b/desktop/modules/sound/README.md @@ -60,8 +60,9 @@ When the track has art, it also fills the whole panel as a blurred background under a dark scrim (`Theme.base` at 0.82), and the thumbnail stays sharp in the row. The palette is dark, so the scrim is what keeps text legible on a light cover; blur alone did not. The art is opaque, so it hides the -compositor's frosting while it shows, so a faint sheen and grain fake it on -the scrim. Without art the panel is unchanged. +compositor's frosting while it shows, so a faint sheen fakes it on the +scrim. It once had Canvas grain too, removed because `createImageData` +underflows Qt's GC counter (AGENTS.md). Without art the panel is unchanged. A new cover crossfades in once it has decoded, so a slow art server never fades through black. When the track has no art, or its cover fails to load, |
