From bb46352c37f4779bd3b87168bc6b04f41ccfd123 Mon Sep 17 00:00:00 2001 From: Simon Schneegans Date: Mon, 5 Jun 2023 05:27:18 +0200 Subject: [PATCH] :beetle: Attempt to fix #344 --- src/Shader.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Shader.js b/src/Shader.js index 2e94c3b..6127b7d 100644 --- a/src/Shader.js +++ b/src/Shader.js @@ -180,7 +180,16 @@ var Shader = GObject.registerClass( // We use this vfunc to trigger the update as it allows calling this.get_pipeline() in // the handler. This could still be null if called from the updateAnimation() above. vfunc_paint_target(...params) { - this.emit('update-animation', this._progress); + + // Starting with GNOME 44.2, the alpha channel is not written to by default. We need + // to undo this. It is a pity that we have to do this here, as it is not really + // required to be done each frame. But it's the only place where we can do it. + // https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2650 + if (utils.shellVersionIsAtLeast(44, 2)) { + this.get_pipeline().set_blend( + 'RGBA = ADD (SRC_COLOR * (SRC_COLOR[A]), DST_COLOR * (1-SRC_COLOR[A]))'); + } + this.set_uniform_float(this._uProgress, 1, [this._progress]); super.vfunc_paint_target(...params); }