aboutsummaryrefslogtreecommitdiffstats
path: root/sway
diff options
context:
space:
mode:
authorLibravatar Alexander Orzechowski <alex@ozal.ski>2024-03-07 18:03:40 -0500
committerLibravatar Simon Ser <contact@emersion.fr>2024-03-09 11:47:42 +0100
commit2e951163c5a5f24fe9cf7ee348e56b09719a99a9 (patch)
tree4280fd944e8e77d0e5ee20eb54be2b45a094328b /sway
parentconfig/output: drop enabling flag (diff)
downloadsway-2e951163c5a5f24fe9cf7ee348e56b09719a99a9.tar.gz
sway-2e951163c5a5f24fe9cf7ee348e56b09719a99a9.tar.zst
sway-2e951163c5a5f24fe9cf7ee348e56b09719a99a9.zip
Force bilinear scaling when scaling down
Diffstat (limited to 'sway')
-rw-r--r--sway/desktop/output.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c
index 600423bc..b8f2d32d 100644
--- a/sway/desktop/output.c
+++ b/sway/desktop/output.c
@@ -183,7 +183,15 @@ static void send_frame_done_iterator(struct wlr_scene_buffer *buffer,
183 } 183 }
184} 184}
185 185
186static enum wlr_scale_filter_mode get_scale_filter(struct sway_output *output) { 186static enum wlr_scale_filter_mode get_scale_filter(struct sway_output *output,
187 struct wlr_scene_buffer *buffer) {
188 // if we are scaling down, we should always choose linear
189 if (buffer->dst_width > 0 && buffer->dst_height > 0 && (
190 buffer->dst_width < buffer->buffer_width ||
191 buffer->dst_height < buffer->buffer_height)) {
192 return WLR_SCALE_FILTER_BILINEAR;
193 }
194
187 switch (output->scale_filter) { 195 switch (output->scale_filter) {
188 case SCALE_FILTER_LINEAR: 196 case SCALE_FILTER_LINEAR:
189 return WLR_SCALE_FILTER_BILINEAR; 197 return WLR_SCALE_FILTER_BILINEAR;
@@ -212,7 +220,7 @@ static void output_configure_scene(struct sway_output *output,
212 // hack: don't call the scene setter because that will damage all outputs 220 // hack: don't call the scene setter because that will damage all outputs
213 // We don't want to damage outputs that aren't our current output that 221 // We don't want to damage outputs that aren't our current output that
214 // we're configuring 222 // we're configuring
215 buffer->filter_mode = get_scale_filter(output); 223 buffer->filter_mode = get_scale_filter(output, buffer);
216 224
217 wlr_scene_buffer_set_opacity(buffer, opacity); 225 wlr_scene_buffer_set_opacity(buffer, opacity);
218 } else if (node->type == WLR_SCENE_NODE_TREE) { 226 } else if (node->type == WLR_SCENE_NODE_TREE) {