diff --git a/include/sway/config.h b/include/sway/config.h index 71721393..013853c8 100644 --- a/include/sway/config.h +++ b/include/sway/config.h @@ -705,6 +705,7 @@ struct output_config *find_output_config(struct sway_output *output); void free_output_config(struct output_config *oc); void request_modeset(void); +void force_modeset(void); bool spawn_swaybg(void); diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 8682cc65..5c2332ce 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -408,6 +408,14 @@ void request_modeset(void) { } } +void force_modeset(void) { + if (server.delayed_modeset != NULL) { + wl_event_source_remove(server.delayed_modeset); + server.delayed_modeset = NULL; + } + apply_stored_output_configs(); +} + static void begin_destroy(struct sway_output *output) { if (output->enabled) { output_disable(output); @@ -493,12 +501,8 @@ static void handle_request_state(struct wl_listener *listener, void *data) { // We do not expect or support any other changes here assert(committed == 0); store_output_config(oc); - apply_stored_output_configs(); - if (server.delayed_modeset != NULL) { - wl_event_source_remove(server.delayed_modeset); - server.delayed_modeset = NULL; - } + force_modeset(); } static unsigned int last_headless_num = 0; diff --git a/sway/main.c b/sway/main.c index 1c4939aa..165ccc09 100644 --- a/sway/main.c +++ b/sway/main.c @@ -361,6 +361,7 @@ int main(int argc, char **argv) { } config->active = true; + force_modeset(); load_swaybars(); run_deferred_commands(); run_deferred_bindings();