aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sway/config.h1
-rw-r--r--sway/desktop/output.c14
-rw-r--r--sway/main.c1
3 files changed, 11 insertions, 5 deletions
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();