Skip to content

Commit

Permalink
config: Batch input/output configuration on load
Browse files Browse the repository at this point in the history
We batch modesets and input configuration performed during config reload
but commit for every command during the intial config load. There is no
need to perform commits during the initial config load as outputs have
not yet been created, but swaybg spawn should still be batched.

At the same time, replace direct calls to apply output configuration
with request_modeset to properly handle the modeset timer.
  • Loading branch information
kennylevinsen authored and Nefsen402 committed Sep 21, 2024
1 parent b73f54a commit cdff4f7
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 16 deletions.
2 changes: 1 addition & 1 deletion sway/commands/input.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ struct cmd_results *cmd_input(int argc, char **argv) {
return res;
}

if (!config->reloading) {
if (!config->reading) {
input_manager_apply_input_config(ic);
}
} else {
Expand Down
21 changes: 10 additions & 11 deletions sway/commands/output.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,17 +107,16 @@ struct cmd_results *cmd_output(int argc, char **argv) {

store_output_config(output);

// If reloading, the output configs will be applied after reading the
// entire config and before the deferred commands so that an auto generated
// workspace name is not given to re-enabled outputs.
if (!config->reloading && !config->validating) {
apply_stored_output_configs();
if (background) {
if (!spawn_swaybg()) {
return cmd_results_new(CMD_FAILURE,
"Failed to apply background configuration");
}
}
if (config->reading) {
// When reading the config file, we wait till the end to do a single
// modeset and swaybg spawn.
return cmd_results_new(CMD_SUCCESS, NULL);
}
request_modeset();

if (background && !spawn_swaybg()) {
return cmd_results_new(CMD_FAILURE,
"Failed to apply background configuration");
}

return cmd_results_new(CMD_SUCCESS, NULL);
Expand Down
10 changes: 6 additions & 4 deletions sway/config.c
Original file line number Diff line number Diff line change
Expand Up @@ -516,7 +516,7 @@ bool load_main_config(const char *file, bool is_active, bool validating) {
// Only really necessary if not explicitly `font` is set in the config.
config_update_font_height();

if (is_active && !validating) {
if (!validating) {
input_manager_verify_fallback_seat();

for (int i = 0; i < config->input_configs->length; i++) {
Expand All @@ -533,12 +533,14 @@ bool load_main_config(const char *file, bool is_active, bool validating) {
}
sway_switch_retrigger_bindings_for_all();

apply_stored_output_configs();
spawn_swaybg();

config->reloading = false;
if (config->swaynag_config_errors.client != NULL) {
swaynag_show(&config->swaynag_config_errors);
if (is_active) {
request_modeset();
if (config->swaynag_config_errors.client != NULL) {
swaynag_show(&config->swaynag_config_errors);
}
}
}

Expand Down

0 comments on commit cdff4f7

Please sign in to comment.