aboutsummaryrefslogtreecommitdiff
path: root/sway/config
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2018-09-05 09:33:27 -0400
committerGitHub <noreply@github.com>2018-09-05 09:33:27 -0400
commit610eb946171f782165a20614b2d3318b89273990 (patch)
tree05eec1df1ef48e05b23d273d31143ad32e7632d2 /sway/config
parentaa2bf98e0442f9bf41a852c2fafee5b0897010a2 (diff)
parentdbf4aa3e33bdee53876c6893b15ac3f224818e7c (diff)
Merge pull request #2540 from RyanDwyer/typesafety
Implement type safe arguments and demote sway_container
Diffstat (limited to 'sway/config')
-rw-r--r--sway/config/bar.c14
-rw-r--r--sway/config/output.c47
2 files changed, 22 insertions, 39 deletions
diff --git a/sway/config/bar.c b/sway/config/bar.c
index ae9383d6..f83b37d1 100644
--- a/sway/config/bar.c
+++ b/sway/config/bar.c
@@ -12,6 +12,7 @@
#include <strings.h>
#include <signal.h>
#include "sway/config.h"
+#include "sway/output.h"
#include "stringop.h"
#include "list.h"
#include "log.h"
@@ -218,17 +219,6 @@ void invoke_swaybar(struct bar_config *bar) {
close(filedes[1]);
}
-static bool active_output(const char *name) {
- struct sway_container *cont = NULL;
- for (int i = 0; i < root_container.children->length; ++i) {
- cont = root_container.children->items[i];
- if (cont->type == C_OUTPUT && strcasecmp(name, cont->name) == 0) {
- return true;
- }
- }
- return false;
-}
-
void load_swaybars() {
for (int i = 0; i < config->bars->length; ++i) {
struct bar_config *bar = config->bars->items[i];
@@ -236,7 +226,7 @@ void load_swaybars() {
if (bar->outputs) {
for (int j = 0; j < bar->outputs->length; ++j) {
char *o = bar->outputs->items[j];
- if (!strcmp(o, "*") || active_output(o)) {
+ if (!strcmp(o, "*") || output_by_name(o)) {
apply = true;
break;
}
diff --git a/sway/config/output.c b/sway/config/output.c
index 65f09258..aa53fc46 100644
--- a/sway/config/output.c
+++ b/sway/config/output.c
@@ -174,21 +174,16 @@ void terminate_swaybg(pid_t pid) {
}
}
-void apply_output_config(struct output_config *oc, struct sway_container *output) {
- assert(output->type == C_OUTPUT);
-
- struct wlr_output_layout *output_layout =
- root_container.sway_root->output_layout;
- struct wlr_output *wlr_output = output->sway_output->wlr_output;
+void apply_output_config(struct output_config *oc, struct sway_output *output) {
+ struct wlr_output *wlr_output = output->wlr_output;
if (oc && oc->enabled == 0) {
- if (output->sway_output->bg_pid != 0) {
- terminate_swaybg(output->sway_output->bg_pid);
- output->sway_output->bg_pid = 0;
+ if (output->bg_pid != 0) {
+ terminate_swaybg(output->bg_pid);
+ output->bg_pid = 0;
}
- output_begin_destroy(output);
- wlr_output_layout_remove(root_container.sway_root->output_layout,
- wlr_output);
+ output_disable(output);
+ wlr_output_layout_remove(root->output_layout, wlr_output);
return;
}
@@ -213,21 +208,21 @@ void apply_output_config(struct output_config *oc, struct sway_container *output
// Find position for it
if (oc && (oc->x != -1 || oc->y != -1)) {
wlr_log(WLR_DEBUG, "Set %s position to %d, %d", oc->name, oc->x, oc->y);
- wlr_output_layout_add(output_layout, wlr_output, oc->x, oc->y);
+ wlr_output_layout_add(root->output_layout, wlr_output, oc->x, oc->y);
} else {
- wlr_output_layout_add_auto(output_layout, wlr_output);
+ wlr_output_layout_add_auto(root->output_layout, wlr_output);
}
int output_i;
- for (output_i = 0; output_i < root_container.children->length; ++output_i) {
- if (root_container.children->items[output_i] == output) {
+ for (output_i = 0; output_i < root->outputs->length; ++output_i) {
+ if (root->outputs->items[output_i] == output) {
break;
}
}
if (oc && oc->background) {
- if (output->sway_output->bg_pid != 0) {
- terminate_swaybg(output->sway_output->bg_pid);
+ if (output->bg_pid != 0) {
+ terminate_swaybg(output->bg_pid);
}
wlr_log(WLR_DEBUG, "Setting background for output %d to %s",
@@ -249,8 +244,8 @@ void apply_output_config(struct output_config *oc, struct sway_container *output
wlr_log(WLR_DEBUG, "-> %s", command);
char *const cmd[] = { "sh", "-c", command, NULL };
- output->sway_output->bg_pid = fork();
- if (output->sway_output->bg_pid == 0) {
+ output->bg_pid = fork();
+ if (output->bg_pid == 0) {
execvp(cmd[0], cmd);
} else {
free(command);
@@ -293,12 +288,11 @@ void apply_output_config_to_outputs(struct output_config *oc) {
bool wildcard = strcmp(oc->name, "*") == 0;
char id[128];
struct sway_output *sway_output;
- wl_list_for_each(sway_output,
- &root_container.sway_root->all_outputs, link) {
+ wl_list_for_each(sway_output, &root->all_outputs, link) {
char *name = sway_output->wlr_output->name;
output_get_identifier(id, sizeof(id), sway_output);
if (wildcard || !strcmp(name, oc->name) || !strcmp(id, oc->name)) {
- if (!sway_output->swayc) {
+ if (!sway_output->enabled) {
if (!oc->enabled) {
if (!wildcard) {
break;
@@ -306,7 +300,7 @@ void apply_output_config_to_outputs(struct output_config *oc) {
continue;
}
- output_enable(sway_output);
+ output_enable(sway_output, oc);
}
struct output_config *current = oc;
@@ -316,7 +310,7 @@ void apply_output_config_to_outputs(struct output_config *oc) {
current = tmp;
}
}
- apply_output_config(current, sway_output->swayc);
+ apply_output_config(current, sway_output);
if (!wildcard) {
// Stop looking if the output config isn't applicable to all
@@ -354,8 +348,7 @@ static void default_output_config(struct output_config *oc,
void create_default_output_configs(void) {
struct sway_output *sway_output;
- wl_list_for_each(sway_output,
- &root_container.sway_root->all_outputs, link) {
+ wl_list_for_each(sway_output, &root->all_outputs, link) {
char *name = sway_output->wlr_output->name;
struct output_config *oc = new_output_config(name);
default_output_config(oc, sway_output->wlr_output);