aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar emersion <contact@emersion.fr>2018-06-09 12:09:16 +0100
committerLibravatar GitHub <noreply@github.com>2018-06-09 12:09:16 +0100
commit21d98d5bfb19491f8fd486a2eddc8efe9fb3de6c (patch)
treea1ae7547bda8a32ad383585e1d2fedb063b0f69b
parentMerge pull request #2115 from RedSoxFan/restore-workspaces (diff)
parentFix compilation errors related to disabled outputs (diff)
downloadsway-21d98d5bfb19491f8fd486a2eddc8efe9fb3de6c.tar.gz
sway-21d98d5bfb19491f8fd486a2eddc8efe9fb3de6c.tar.zst
sway-21d98d5bfb19491f8fd486a2eddc8efe9fb3de6c.zip
Merge pull request #2123 from emersion/fix-disabled-outputs
Fix compilation errors related to disabled outputs
-rw-r--r--sway/desktop/output.c23
-rw-r--r--sway/ipc-json.c7
2 files changed, 17 insertions, 13 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c
index 3142bdb4..bd1d760d 100644
--- a/sway/desktop/output.c
+++ b/sway/desktop/output.c
@@ -1169,12 +1169,10 @@ static void handle_destroy(struct wl_listener *listener, void *data) {
1169 container_destroy(output->swayc); 1169 container_destroy(output->swayc);
1170 } 1170 }
1171 1171
1172 if (&output->link) { 1172 wl_list_remove(&output->link);
1173 wl_list_remove(&output->link); 1173 wl_list_remove(&output->destroy.link);
1174 wl_list_remove(&output->destroy.link); 1174 output->wlr_output->data = NULL;
1175 output->wlr_output = NULL; 1175 free(output);
1176 free(output);
1177 }
1178} 1176}
1179 1177
1180static void handle_mode(struct wl_listener *listener, void *data) { 1178static void handle_mode(struct wl_listener *listener, void *data) {
@@ -1212,10 +1210,13 @@ void handle_new_output(struct wl_listener *listener, void *data) {
1212 output->wlr_output = wlr_output; 1210 output->wlr_output = wlr_output;
1213 wlr_output->data = output; 1211 wlr_output->data = output;
1214 output->server = server; 1212 output->server = server;
1215 wl_list_insert(&root_container.sway_root->outputs, &output->link);
1216
1217 output->damage = wlr_output_damage_create(wlr_output); 1213 output->damage = wlr_output_damage_create(wlr_output);
1218 1214
1215 wl_signal_add(&wlr_output->events.destroy, &output->destroy);
1216 output->destroy.notify = handle_destroy;
1217
1218 wl_list_insert(&root_container.sway_root->outputs, &output->link);
1219
1219 if (!wl_list_empty(&wlr_output->modes)) { 1220 if (!wl_list_empty(&wlr_output->modes)) {
1220 struct wlr_output_mode *mode = 1221 struct wlr_output_mode *mode =
1221 wl_container_of(wlr_output->modes.prev, mode, link); 1222 wl_container_of(wlr_output->modes.prev, mode, link);
@@ -1228,6 +1229,10 @@ void handle_new_output(struct wl_listener *listener, void *data) {
1228void output_enable(struct sway_output *output) { 1229void output_enable(struct sway_output *output) {
1229 struct wlr_output *wlr_output = output->wlr_output; 1230 struct wlr_output *wlr_output = output->wlr_output;
1230 1231
1232 if (!sway_assert(output->swayc == NULL, "output is already enabled")) {
1233 return;
1234 }
1235
1231 output->swayc = output_create(output); 1236 output->swayc = output_create(output);
1232 if (!output->swayc) { 1237 if (!output->swayc) {
1233 // Output is disabled 1238 // Output is disabled
@@ -1241,8 +1246,6 @@ void output_enable(struct sway_output *output) {
1241 1246
1242 input_manager_configure_xcursor(input_manager); 1247 input_manager_configure_xcursor(input_manager);
1243 1248
1244 wl_signal_add(&wlr_output->events.destroy, &output->destroy);
1245 output->destroy.notify = handle_destroy;
1246 wl_signal_add(&wlr_output->events.mode, &output->mode); 1249 wl_signal_add(&wlr_output->events.mode, &output->mode);
1247 output->mode.notify = handle_mode; 1250 output->mode.notify = handle_mode;
1248 wl_signal_add(&wlr_output->events.transform, &output->transform); 1251 wl_signal_add(&wlr_output->events.transform, &output->transform);
diff --git a/sway/ipc-json.c b/sway/ipc-json.c
index 5d402d1b..b9289e25 100644
--- a/sway/ipc-json.c
+++ b/sway/ipc-json.c
@@ -83,7 +83,8 @@ static const char *ipc_json_get_output_transform(enum wl_output_transform transf
83 return NULL; 83 return NULL;
84} 84}
85 85
86static void ipc_json_describe_output(struct sway_container *container, json_object *object) { 86static void ipc_json_describe_output(struct sway_container *container,
87 json_object *object) {
87 struct wlr_output *wlr_output = container->sway_output->wlr_output; 88 struct wlr_output *wlr_output = container->sway_output->wlr_output;
88 json_object_object_add(object, "type", 89 json_object_object_add(object, "type",
89 json_object_new_string("output")); 90 json_object_new_string("output"));
@@ -141,12 +142,12 @@ static void ipc_json_describe_output(struct sway_container *container, json_obje
141 142
142json_object *ipc_json_describe_disabled_output(struct sway_output *output) { 143json_object *ipc_json_describe_disabled_output(struct sway_output *output) {
143 struct wlr_output *wlr_output = output->wlr_output; 144 struct wlr_output *wlr_output = output->wlr_output;
144 145
145 json_object *object = json_object_new_object(); 146 json_object *object = json_object_new_object();
146 147
147 json_object_object_add(object, "type", json_object_new_string("output")); 148 json_object_object_add(object, "type", json_object_new_string("output"));
148 json_object_object_add(object, "name", 149 json_object_object_add(object, "name",
149 wlr_output->name ? json_object_new_string(wlr_output->name) : NULL); 150 json_object_new_string(wlr_output->name));
150 json_object_object_add(object, "active", json_object_new_boolean(false)); 151 json_object_object_add(object, "active", json_object_new_boolean(false));
151 json_object_object_add(object, "make", 152 json_object_object_add(object, "make",
152 json_object_new_string(wlr_output->make)); 153 json_object_new_string(wlr_output->make));