From 5ae688eefb3a4f4eefa3af47dcca942e859a20f0 Mon Sep 17 00:00:00 2001 From: DreamMaoMao <2523610504@qq.com> Date: Thu, 10 Apr 2025 11:27:39 +0800 Subject: [PATCH] opt:Reduce unnecessary buffer scale --- maomao.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/maomao.c b/maomao.c index 4d0f24d..d57c839 100644 --- a/maomao.c +++ b/maomao.c @@ -4455,6 +4455,14 @@ void scene_buffer_apply_size(struct wlr_scene_buffer *buffer, int sx, int sy, return; } + if(scale_data->height_scale == 1 && scale_data->width_scale < 1) { + return; + } + + if(scale_data->height_scale < 1 && scale_data->width_scale == 1) { + return; + } + struct wlr_scene_surface *scene_surface = wlr_scene_surface_try_from_buffer(buffer); if(scene_surface == NULL) return; @@ -4464,8 +4472,8 @@ void scene_buffer_apply_size(struct wlr_scene_buffer *buffer, int sx, int sy, uint32_t surface_width = surface->current.width; uint32_t surface_height = surface->current.height; - surface_width *= scale_data->width_scale; - surface_height *= scale_data->height_scale; + surface_width = scale_data->width_scale < 1 ? surface_width : scale_data->width_scale * surface_width; + surface_height = scale_data->height_scale < 1 ? surface_height : scale_data->height_scale * surface_height; if (surface_width > scale_data->width && wlr_subsurface_try_from_wlr_surface(surface) == NULL) { surface_width = scale_data->width;