diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 600423bcf..f9819cdf9 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -644,6 +644,12 @@ void handle_output_power_manager_set_mode(struct wl_listener *listener, oc->power = 1; break; } - oc = store_output_config(oc); - apply_output_config(oc, output); + + struct output_config *current = find_output_config(output); + if (!current) { + current = new_output_config(oc->name); + merge_output_config(current, oc); + } + apply_output_config(current, output); + free_output_config(current); }