aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Simon Ser <contact@emersion.fr>2022-05-26 21:14:34 +0200
committerLibravatar Simon Zeni <simon@bl4ckb0ne.ca>2022-05-26 15:42:56 -0400
commitf0d57da315ecbc44a444f76a7a8cde4045009453 (patch)
tree0ce377fa8959da913caef5497ab6e1362c1d8373
parentPolish the language in README.zh-CN.md & sync with English one (diff)
downloadsway-f0d57da315ecbc44a444f76a7a8cde4045009453.tar.gz
sway-f0d57da315ecbc44a444f76a7a8cde4045009453.tar.zst
sway-f0d57da315ecbc44a444f76a7a8cde4045009453.zip
De-duplicate IPC output descriptions
-rw-r--r--sway/ipc-json.c62
1 files changed, 32 insertions, 30 deletions
diff --git a/sway/ipc-json.c b/sway/ipc-json.c
index 8357ae04..06121d62 100644
--- a/sway/ipc-json.c
+++ b/sway/ipc-json.c
@@ -245,20 +245,42 @@ static json_object *ipc_json_create_node(int id, const char* type, char *name,
245static void ipc_json_describe_output(struct sway_output *output, 245static void ipc_json_describe_output(struct sway_output *output,
246 json_object *object) { 246 json_object *object) {
247 struct wlr_output *wlr_output = output->wlr_output; 247 struct wlr_output *wlr_output = output->wlr_output;
248 json_object_object_add(object, "active", json_object_new_boolean(true)); 248
249 json_object_object_add(object, "dpms",
250 json_object_new_boolean(wlr_output->enabled));
251 json_object_object_add(object, "primary", json_object_new_boolean(false)); 249 json_object_object_add(object, "primary", json_object_new_boolean(false));
252 json_object_object_add(object, "layout", json_object_new_string("output"));
253 json_object_object_add(object, "orientation",
254 json_object_new_string(
255 ipc_json_orientation_description(L_NONE)));
256 json_object_object_add(object, "make", 250 json_object_object_add(object, "make",
257 json_object_new_string(wlr_output->make)); 251 json_object_new_string(wlr_output->make));
258 json_object_object_add(object, "model", 252 json_object_object_add(object, "model",
259 json_object_new_string(wlr_output->model)); 253 json_object_new_string(wlr_output->model));
260 json_object_object_add(object, "serial", 254 json_object_object_add(object, "serial",
261 json_object_new_string(wlr_output->serial)); 255 json_object_new_string(wlr_output->serial));
256
257 json_object *modes_array = json_object_new_array();
258 struct wlr_output_mode *mode;
259 wl_list_for_each(mode, &wlr_output->modes, link) {
260 json_object *mode_object = json_object_new_object();
261 json_object_object_add(mode_object, "width",
262 json_object_new_int(mode->width));
263 json_object_object_add(mode_object, "height",
264 json_object_new_int(mode->height));
265 json_object_object_add(mode_object, "refresh",
266 json_object_new_int(mode->refresh));
267 json_object_array_add(modes_array, mode_object);
268 }
269 json_object_object_add(object, "modes", modes_array);
270}
271
272static void ipc_json_describe_enabled_output(struct sway_output *output,
273 json_object *object) {
274 ipc_json_describe_output(output, object);
275
276 struct wlr_output *wlr_output = output->wlr_output;
277 json_object_object_add(object, "active", json_object_new_boolean(true));
278 json_object_object_add(object, "dpms",
279 json_object_new_boolean(wlr_output->enabled));
280 json_object_object_add(object, "layout", json_object_new_string("output"));
281 json_object_object_add(object, "orientation",
282 json_object_new_string(
283 ipc_json_orientation_description(L_NONE)));
262 json_object_object_add(object, "scale", 284 json_object_object_add(object, "scale",
263 json_object_new_double(wlr_output->scale)); 285 json_object_new_double(wlr_output->scale));
264 json_object_object_add(object, "scale_filter", 286 json_object_object_add(object, "scale_filter",
@@ -325,33 +347,13 @@ json_object *ipc_json_describe_disabled_output(struct sway_output *output) {
325 347
326 json_object *object = json_object_new_object(); 348 json_object *object = json_object_new_object();
327 349
350 ipc_json_describe_output(output, object);
351
328 json_object_object_add(object, "type", json_object_new_string("output")); 352 json_object_object_add(object, "type", json_object_new_string("output"));
329 json_object_object_add(object, "name", 353 json_object_object_add(object, "name",
330 json_object_new_string(wlr_output->name)); 354 json_object_new_string(wlr_output->name));
331 json_object_object_add(object, "active", json_object_new_boolean(false)); 355 json_object_object_add(object, "active", json_object_new_boolean(false));
332 json_object_object_add(object, "dpms", json_object_new_boolean(false)); 356 json_object_object_add(object, "dpms", json_object_new_boolean(false));
333 json_object_object_add(object, "primary", json_object_new_boolean(false));
334 json_object_object_add(object, "make",
335 json_object_new_string(wlr_output->make));
336 json_object_object_add(object, "model",
337 json_object_new_string(wlr_output->model));
338 json_object_object_add(object, "serial",
339 json_object_new_string(wlr_output->serial));
340
341 json_object *modes_array = json_object_new_array();
342 struct wlr_output_mode *mode;
343 wl_list_for_each(mode, &wlr_output->modes, link) {
344 json_object *mode_object = json_object_new_object();
345 json_object_object_add(mode_object, "width",
346 json_object_new_int(mode->width));
347 json_object_object_add(mode_object, "height",
348 json_object_new_int(mode->height));
349 json_object_object_add(mode_object, "refresh",
350 json_object_new_int(mode->refresh));
351 json_object_array_add(modes_array, mode_object);
352 }
353
354 json_object_object_add(object, "modes", modes_array);
355 357
356 json_object_object_add(object, "current_workspace", NULL); 358 json_object_object_add(object, "current_workspace", NULL);
357 359
@@ -706,7 +708,7 @@ json_object *ipc_json_describe_node(struct sway_node *node) {
706 case N_ROOT: 708 case N_ROOT:
707 break; 709 break;
708 case N_OUTPUT: 710 case N_OUTPUT:
709 ipc_json_describe_output(node->sway_output, object); 711 ipc_json_describe_enabled_output(node->sway_output, object);
710 break; 712 break;
711 case N_CONTAINER: 713 case N_CONTAINER:
712 ipc_json_describe_container(node->sway_container, object); 714 ipc_json_describe_container(node->sway_container, object);