@@ -42,6 +42,13 @@ public class Gala.BlurManager : Object {
4242 window. notify[" mutter-hints" ]. connect ((obj, pspec) = > parse_mutter_hints ((Meta . Window ) obj));
4343 parse_mutter_hints (window);
4444 });
45+
46+ unowned var monitor_manager = wm. get_display (). get_context (). get_backend (). get_monitor_manager ();
47+ monitor_manager. monitors_changed. connect (() = > {
48+ foreach (unowned var window in blurred_windows. get_keys ()) {
49+ blurred_windows[window]. blur_effect. monitor_scale = window. display. get_monitor_scale (window. get_monitor ());
50+ }
51+ });
4552 }
4653
4754 /**
@@ -54,25 +61,30 @@ public class Gala.BlurManager : Object {
5461 return ;
5562 }
5663
57- var buffer_rect = window. get_buffer_rect ();
58- var frame_rect = window. get_frame_rect ();
59- var left_shadow_size = frame_rect. x - buffer_rect. x;
60- var right_shadow_size = buffer_rect. width - frame_rect. width - left_shadow_size;
61- var top_shadow_size = frame_rect. y - buffer_rect. y;
62- var bottom_shadow_size = buffer_rect. height - frame_rect. height - top_shadow_size;
63-
6464 var blur_data = blurred_windows[window];
6565 if (blur_data == null ) {
66- var blur_effect = new BackgroundBlurEffect (BLUR_RADIUS , (int ) clip_radius, 1.0f );
66+ var blur_effect = new BackgroundBlurEffect (
67+ BLUR_RADIUS ,
68+ (int ) clip_radius,
69+ window. display. get_monitor_scale (window. get_monitor ())
70+ );
6771
6872 window_actor. add_effect (blur_effect);
6973
7074 blur_data = { blur_effect, left, right, top, bottom, clip_radius };
7175 blurred_windows[window] = blur_data;
7276
77+ // TODO: We can require users of blur API to calculate shadow_size themselves and remove connecting to this
7378 window. size_changed. connect (on_size_changed);
7479 }
7580
81+ var buffer_rect = window. get_buffer_rect ();
82+ var frame_rect = window. get_frame_rect ();
83+ var left_shadow_size = frame_rect. x - buffer_rect. x;
84+ var right_shadow_size = buffer_rect. width - frame_rect. width - left_shadow_size;
85+ var top_shadow_size = frame_rect. y - buffer_rect. y;
86+ var bottom_shadow_size = buffer_rect. height - frame_rect. height - top_shadow_size;
87+
7688 blur_data. blur_effect. left = left_shadow_size + left;
7789 blur_data. blur_effect. right = right_shadow_size + right;
7890 blur_data. blur_effect. top = top_shadow_size + top;
0 commit comments