From c3e8ffe22f8a0fd7baa5903e431ae2659983cec7 Mon Sep 17 00:00:00 2001 From: project-repo Date: Tue, 25 Apr 2023 19:25:05 +0200 Subject: [PATCH] Add functionality for turning outputs off --- output.c | 6 ++++++ output.h | 7 ++++++- parse.c | 7 ++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/output.c b/output.c index 506f5bd..fc04cf7 100644 --- a/output.c +++ b/output.c @@ -258,6 +258,12 @@ output_apply_config(struct cg_server *server, struct cg_output *output, struct cg_output_config *config) { struct wlr_output *wlr_output = output->wlr_output; + if(config->status == OUTPUT_OFF) { + wlr_output_enable(wlr_output, false); + wlr_output_commit(wlr_output); + return; + } + if(output->wlr_output->enabled) { wlr_output_layout_remove(server->output_layout, wlr_output); } diff --git a/output.h b/output.h index 90cd615..7ee5b31 100644 --- a/output.h +++ b/output.h @@ -36,7 +36,12 @@ struct cg_output_priorities { struct wl_list link; }; -enum output_status { OUTPUT_ENABLE, OUTPUT_DISABLE, OUTPUT_DEFAULT }; +enum output_status { + OUTPUT_ENABLE, + OUTPUT_DISABLE, + OUTPUT_DEFAULT, + OUTPUT_OFF +}; struct cg_output_config { enum output_status status; diff --git a/parse.c b/parse.c index 68767c6..ef3637c 100644 --- a/parse.c +++ b/parse.c @@ -545,6 +545,10 @@ parse_output_config_keyword(char *key_str, enum output_status *status) { *status = OUTPUT_ENABLE; } else if(strcmp(key_str, "disable") == 0) { *status = OUTPUT_DISABLE; + } else if(strcmp(key_str, "off") == 0) { + *status = OUTPUT_OFF; + } else if(strcmp(key_str, "on") == 0) { + *status = OUTPUT_ENABLE; } else { return -1; } @@ -579,7 +583,8 @@ parse_output_config(char **saveptr, char **errstr) { name); goto error; } - if(cfg->status == OUTPUT_ENABLE || cfg->status == OUTPUT_DISABLE) { + if(cfg->status == OUTPUT_ENABLE || cfg->status == OUTPUT_DISABLE || + cfg->status == OUTPUT_OFF) { cfg->output_name = strdup(name); return cfg; }