@@ -201,8 +201,6 @@ impl MappedLayer {
201201 fx_buffers : Option < EffectsFramebufffersUserData > ,
202202 push : & mut dyn FnMut ( LayerSurfaceRenderElement < R > ) ,
203203 ) {
204- let mut gles_elems: Option < Vec < LayerSurfaceRenderElement < GlesRenderer > > > = None ;
205-
206204 let scale = Scale :: from ( self . scale ) ;
207205 let alpha = self . rules . opacity . unwrap_or ( 1. ) . clamp ( 0. , 1. ) ;
208206 let location = location + self . bob_offset ( ) ;
@@ -236,23 +234,26 @@ impl MappedLayer {
236234 & mut |elem| push ( elem. into ( ) ) ,
237235 ) ;
238236
239- gles_elems = Some ( render_elements_from_surface_tree (
240- renderer. as_gles_renderer ( ) ,
241- surface,
242- buf_pos. to_physical_precise_round ( scale) ,
243- scale,
244- alpha,
245- Kind :: ScanoutCandidate ,
246- ) ) ;
247-
248237 if self . blur_config . on
238+ && ( !self . blur_config . blur_when_keyboard_focused
239+ || self . blur_config . blur_when_keyboard_focused
240+ && self . surface . can_receive_keyboard_focus ( ) )
249241 /* && matches!(self.surface.layer(), Layer::Top | Layer::Overlay) */
250242 {
251243 if let Some ( fx_buffers) = fx_buffers {
252244 let fx_buffers_rc = fx_buffers;
253245 let fx_buffers = fx_buffers_rc. borrow ( ) ;
254246
255- // debug!("render layer blur {:?}", self.rules.blur);
247+ let gles_elems: Option < Vec < LayerSurfaceRenderElement < GlesRenderer > > > =
248+ Some ( render_elements_from_surface_tree (
249+ renderer. as_gles_renderer ( ) ,
250+ surface,
251+ buf_pos. to_physical_precise_round ( scale) ,
252+ scale,
253+ alpha,
254+ Kind :: ScanoutCandidate ,
255+ ) ) ;
256+
256257 // TODO: respect sync point?
257258 let alpha_tex = gles_elems
258259 . and_then ( |gles_elems| {
@@ -328,8 +329,6 @@ impl MappedLayer {
328329
329330 let size = popup. geometry ( ) . size . to_f64 ( ) ;
330331
331- let mut gles_elems: Option < Vec < LayerSurfaceRenderElement < GlesRenderer > > > = None ;
332-
333332 {
334333 push_elements_from_surface_tree (
335334 renderer,
@@ -342,18 +341,20 @@ impl MappedLayer {
342341 ) ;
343342 }
344343
345- gles_elems = Some ( render_elements_from_surface_tree (
346- renderer. as_gles_renderer ( ) ,
347- popup. wl_surface ( ) ,
348- ( buf_pos + offset. to_f64 ( ) ) . to_physical_precise_round ( scale) ,
349- scale,
350- alpha,
351- Kind :: ScanoutCandidate ,
352- ) ) ;
353-
354344 if self . blur_config . on {
355345 if let Some ( fx_buffers_rc) = fx_buffers. as_ref ( ) {
356346 let fx_buffers = fx_buffers_rc. borrow ( ) ;
347+
348+ let gles_elems: Option < Vec < LayerSurfaceRenderElement < GlesRenderer > > > =
349+ Some ( render_elements_from_surface_tree (
350+ renderer. as_gles_renderer ( ) ,
351+ popup. wl_surface ( ) ,
352+ ( buf_pos + offset. to_f64 ( ) ) . to_physical_precise_round ( scale) ,
353+ scale,
354+ alpha,
355+ Kind :: ScanoutCandidate ,
356+ ) ) ;
357+
357358 let alpha_tex = gles_elems
358359 . and_then ( |gles_elems| {
359360 let transform = fx_buffers. transform ( ) ;
0 commit comments