feat: 为窗口移动/尺寸调整添加可配置的刷新率节流

This commit is contained in:
2026-06-23 04:27:34 +08:00
parent 74b30a5d4b
commit 29e0f1e2dc
8 changed files with 40 additions and 0 deletions

View File

@@ -167,6 +167,7 @@ bool config_defaults_build(
api->set_default_mode(builder, default_mode);
api->set_initial_mode(builder, default_mode);
api->set_border_config(builder, 2, "#1c2022", "#606060");
api->set_interaction_fps(builder, 30);
zdwm_bar_config_t bar_config = {
.height = 28,

View File

@@ -2,6 +2,7 @@
#include <dlfcn.h>
#include <stddef.h>
#include <stdint.h>
#include <zdwm/bar.h>
#include <zdwm/config.h>
@@ -28,6 +29,7 @@ struct zdwm_config_builder_t {
size_t workspace_capacity;
size_t output_count;
border_config_t border;
uint32_t fps;
binding_table_t *binding_table;
listeners_t listeners;
zdwm_bar_config_t bar;
@@ -200,6 +202,13 @@ static void runtime_config_set_border_config(
color_parse(focused, &builder->border.focused_color);
}
static void runtime_config_set_interaction_fps(
zdwm_config_builder_t *builder,
uint32_t fps
) {
builder->fps = fps;
}
static void runtime_config_subscribe_current_output(
zdwm_config_builder_t *builder,
zdwm_current_output_id_listener *fn,
@@ -300,6 +309,7 @@ static bool config_builder_finish(
if (!layout_registry_move(&builder->layouts, &out->layouts)) return false;
if (!rules_move(&builder->rules, &out->rules)) return false;
out->border = builder->border;
out->fps = builder->fps;
out->binding_table = builder->binding_table;
out->workspaces = builder->workspaces;
out->workspace_count = builder->workspace_count;
@@ -343,6 +353,8 @@ static bool runtime_config_build(
.set_initial_mode = runtime_config_set_initial_mode,
.set_border_config = runtime_config_set_border_config,
.set_interaction_fps = runtime_config_set_interaction_fps,
.subscribe_current_output = runtime_config_subscribe_current_output,
.subscribe_initial_workspace_list =
runtime_config_subscribe_initial_workspace_list,

View File

@@ -1,6 +1,7 @@
#pragma once
#include <stddef.h>
#include <stdint.h>
#include <zdwm/bar.h>
#include <zdwm/types.h>
@@ -20,6 +21,7 @@ typedef struct runtime_init_desc_t {
layout_registry_t layouts;
rules_t rules;
border_config_t border;
uint32_t fps;
workspace_desc_t *workspaces;
size_t workspace_count;
void *config_module_handle;