added check for background layer in render_layer iterator

This commit is contained in:
William McKinnon 2023-05-19 13:17:59 -04:00
parent 7f78901153
commit 7d2e2bf832
2 changed files with 4 additions and 5 deletions

View file

@ -201,7 +201,8 @@ void output_layer_for_each_toplevel_surface(struct sway_output *output,
layer_surface->layer_surface; layer_surface->layer_surface;
struct render_data *data = user_data; struct render_data *data = user_data;
data->deco_data.blur = layer_surface->has_blur; data->deco_data.blur = layer_surface->layer != ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND ?
layer_surface->has_blur : false;
data->deco_data.shadow = layer_surface->has_shadow; data->deco_data.shadow = layer_surface->has_shadow;
data->deco_data.corner_radius = layer_surface->corner_radius; data->deco_data.corner_radius = layer_surface->corner_radius;

View file

@ -23,7 +23,6 @@
#include "sway/desktop/fx_renderer/fx_renderer.h" #include "sway/desktop/fx_renderer/fx_renderer.h"
#include "sway/input/input-manager.h" #include "sway/input/input-manager.h"
#include "sway/input/seat.h" #include "sway/input/seat.h"
#include "sway/layers.h"
#include "sway/output.h" #include "sway/output.h"
#include "sway/server.h" #include "sway/server.h"
#include "sway/tree/arrange.h" #include "sway/tree/arrange.h"
@ -784,8 +783,7 @@ static void render_saved_view(struct sway_view *view, struct sway_output *output
enum wl_output_transform transform = wlr_output_transform_invert(saved_buf->transform); enum wl_output_transform transform = wlr_output_transform_invert(saved_buf->transform);
wlr_matrix_project_box(matrix, &proj_box, transform, 0, wlr_output->transform_matrix); wlr_matrix_project_box(matrix, &proj_box, transform, 0, wlr_output->transform_matrix);
struct sway_container *con = view->container; struct sway_container_state state = view->container->current;
struct sway_container_state state = con->current;
dst_box.x = state.x - output->lx; dst_box.x = state.x - output->lx;
dst_box.y = state.y - output->ly; dst_box.y = state.y - output->ly;
dst_box.width = state.width; dst_box.width = state.width;
@ -814,7 +812,7 @@ static void render_saved_view(struct sway_view *view, struct sway_output *output
wlr_box_transform(&monitor_box, &monitor_box, wlr_box_transform(&monitor_box, &monitor_box,
wlr_output_transform_invert(wlr_output->transform), monitor_box.width, monitor_box.height); wlr_output_transform_invert(wlr_output->transform), monitor_box.width, monitor_box.height);
struct wlr_fbox src_box = wlr_fbox_from_wlr_box(&monitor_box); struct wlr_fbox src_box = wlr_fbox_from_wlr_box(&monitor_box);
bool should_optimize_blur = !container_is_floating(con); bool should_optimize_blur = !container_is_floating(view->container) || config->blur_xray;
render_blur(should_optimize_blur, output, damage, &src_box, &dst_box, &opaque_region, render_blur(should_optimize_blur, output, damage, &src_box, &dst_box, &opaque_region,
saved_buf->width, saved_buf->height, 1, deco_data.corner_radius, deco_data.has_titlebar); saved_buf->width, saved_buf->height, 1, deco_data.corner_radius, deco_data.has_titlebar);