summaryrefslogtreecommitdiff
path: root/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/shader_uniforms.js
diff options
context:
space:
mode:
authorNippy <nippy@Nippy-Mac-mini.local>2026-10-09 17:23:53 +0200
committerNippy <nippy@Nippy-Mac-mini.local>2026-10-09 17:23:53 +0200
commit9d5be1660d8f74038ebed3d74fdbc809e43787ae (patch)
tree4cb46c3765be87ca4c5219f2f714425d7dfddb56 /raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/shader_uniforms.js
parentdeb4b8a9c407832c35100a643bd7a592589c9679 (diff)
downloadRaveOS-PKGBUILD-9d5be1660d8f74038ebed3d74fdbc809e43787ae.tar.gz
RaveOS-PKGBUILD-9d5be1660d8f74038ebed3d74fdbc809e43787ae.zip
gnome fix
Diffstat (limited to 'raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/shader_uniforms.js')
-rw-r--r--raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/shader_uniforms.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/shader_uniforms.js b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/shader_uniforms.js
new file mode 100644
index 0000000..a82b261
--- /dev/null
+++ b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/shader_uniforms.js
@@ -0,0 +1,61 @@
+import GObject from 'gi://GObject';
+
+const INTEGRAL_UNIFORMS = new Set([
+ 'corners_bottom',
+ 'corners_top',
+ 'divider',
+ 'dir',
+ 'downsampling_mode',
+ 'factor',
+ 'iterations',
+ 'mode',
+ 'operation',
+ 'prefer_closer_pixels',
+ 'straight_corners',
+ 'use_base_pixel',
+]);
+
+export function set_uniform(effect, name, value) {
+ if (!effect._bms_uniforms)
+ effect._bms_uniforms = new Map();
+
+ effect._bms_uniforms.set(name, value);
+ effect._bms_uniforms_dirty = true;
+ effect.queue_repaint();
+}
+
+export function mark_dirty(effect) {
+ if (effect._bms_uniforms)
+ effect._bms_uniforms_dirty = true;
+}
+
+export function upload_uniforms(effect) {
+ if (!effect._bms_uniforms_dirty || !effect._bms_uniforms || !effect.get_actor())
+ return;
+
+ for (const [name, value] of effect._bms_uniforms) {
+ try {
+ effect.set_uniform_value(name, get_shader_value(name, value));
+ } catch (e) {
+ if (!effect._bms_uniform_warning_shown) {
+ effect._bms_uniform_warning_shown = true;
+ console.warn(`[Blur my Shell] shader uniform upload failed for ${effect.constructor.name}`, e);
+ }
+ }
+ }
+
+ effect._bms_uniforms_dirty = false;
+}
+
+function get_shader_value(name, value) {
+ if (typeof value !== 'number')
+ return value;
+
+ if (INTEGRAL_UNIFORMS.has(name))
+ return Math.trunc(value);
+
+ const float_value = new GObject.Value();
+ float_value.init(GObject.TYPE_FLOAT);
+ float_value.set_float(value);
+ return float_value;
+}