mirror of
https://github.com/swaywm/sway.git
synced 2024-11-25 09:21:28 +00:00
Force bilinear scaling when scaling down
This commit is contained in:
parent
23389ebd1f
commit
2e951163c5
|
@ -183,7 +183,15 @@ static void send_frame_done_iterator(struct wlr_scene_buffer *buffer,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum wlr_scale_filter_mode get_scale_filter(struct sway_output *output) {
|
static enum wlr_scale_filter_mode get_scale_filter(struct sway_output *output,
|
||||||
|
struct wlr_scene_buffer *buffer) {
|
||||||
|
// if we are scaling down, we should always choose linear
|
||||||
|
if (buffer->dst_width > 0 && buffer->dst_height > 0 && (
|
||||||
|
buffer->dst_width < buffer->buffer_width ||
|
||||||
|
buffer->dst_height < buffer->buffer_height)) {
|
||||||
|
return WLR_SCALE_FILTER_BILINEAR;
|
||||||
|
}
|
||||||
|
|
||||||
switch (output->scale_filter) {
|
switch (output->scale_filter) {
|
||||||
case SCALE_FILTER_LINEAR:
|
case SCALE_FILTER_LINEAR:
|
||||||
return WLR_SCALE_FILTER_BILINEAR;
|
return WLR_SCALE_FILTER_BILINEAR;
|
||||||
|
@ -212,7 +220,7 @@ static void output_configure_scene(struct sway_output *output,
|
||||||
// hack: don't call the scene setter because that will damage all outputs
|
// hack: don't call the scene setter because that will damage all outputs
|
||||||
// We don't want to damage outputs that aren't our current output that
|
// We don't want to damage outputs that aren't our current output that
|
||||||
// we're configuring
|
// we're configuring
|
||||||
buffer->filter_mode = get_scale_filter(output);
|
buffer->filter_mode = get_scale_filter(output, buffer);
|
||||||
|
|
||||||
wlr_scene_buffer_set_opacity(buffer, opacity);
|
wlr_scene_buffer_set_opacity(buffer, opacity);
|
||||||
} else if (node->type == WLR_SCENE_NODE_TREE) {
|
} else if (node->type == WLR_SCENE_NODE_TREE) {
|
||||||
|
|
Loading…
Reference in a new issue