De-duplicate IPC output descriptions

This commit is contained in:
Simon Ser 2022-05-26 21:14:34 +02:00 committed by Simon Zeni
parent 42b61ab27a
commit f0d57da315
1 changed files with 32 additions and 30 deletions

View File

@ -245,20 +245,42 @@ static json_object *ipc_json_create_node(int id, const char* type, char *name,
static void ipc_json_describe_output(struct sway_output *output, static void ipc_json_describe_output(struct sway_output *output,
json_object *object) { json_object *object) {
struct wlr_output *wlr_output = output->wlr_output; struct wlr_output *wlr_output = output->wlr_output;
json_object_object_add(object, "active", json_object_new_boolean(true));
json_object_object_add(object, "dpms",
json_object_new_boolean(wlr_output->enabled));
json_object_object_add(object, "primary", json_object_new_boolean(false)); json_object_object_add(object, "primary", json_object_new_boolean(false));
json_object_object_add(object, "layout", json_object_new_string("output"));
json_object_object_add(object, "orientation",
json_object_new_string(
ipc_json_orientation_description(L_NONE)));
json_object_object_add(object, "make", json_object_object_add(object, "make",
json_object_new_string(wlr_output->make)); json_object_new_string(wlr_output->make));
json_object_object_add(object, "model", json_object_object_add(object, "model",
json_object_new_string(wlr_output->model)); json_object_new_string(wlr_output->model));
json_object_object_add(object, "serial", json_object_object_add(object, "serial",
json_object_new_string(wlr_output->serial)); json_object_new_string(wlr_output->serial));
json_object *modes_array = json_object_new_array();
struct wlr_output_mode *mode;
wl_list_for_each(mode, &wlr_output->modes, link) {
json_object *mode_object = json_object_new_object();
json_object_object_add(mode_object, "width",
json_object_new_int(mode->width));
json_object_object_add(mode_object, "height",
json_object_new_int(mode->height));
json_object_object_add(mode_object, "refresh",
json_object_new_int(mode->refresh));
json_object_array_add(modes_array, mode_object);
}
json_object_object_add(object, "modes", modes_array);
}
static void ipc_json_describe_enabled_output(struct sway_output *output,
json_object *object) {
ipc_json_describe_output(output, object);
struct wlr_output *wlr_output = output->wlr_output;
json_object_object_add(object, "active", json_object_new_boolean(true));
json_object_object_add(object, "dpms",
json_object_new_boolean(wlr_output->enabled));
json_object_object_add(object, "layout", json_object_new_string("output"));
json_object_object_add(object, "orientation",
json_object_new_string(
ipc_json_orientation_description(L_NONE)));
json_object_object_add(object, "scale", json_object_object_add(object, "scale",
json_object_new_double(wlr_output->scale)); json_object_new_double(wlr_output->scale));
json_object_object_add(object, "scale_filter", json_object_object_add(object, "scale_filter",
@ -325,33 +347,13 @@ json_object *ipc_json_describe_disabled_output(struct sway_output *output) {
json_object *object = json_object_new_object(); json_object *object = json_object_new_object();
ipc_json_describe_output(output, object);
json_object_object_add(object, "type", json_object_new_string("output")); json_object_object_add(object, "type", json_object_new_string("output"));
json_object_object_add(object, "name", json_object_object_add(object, "name",
json_object_new_string(wlr_output->name)); json_object_new_string(wlr_output->name));
json_object_object_add(object, "active", json_object_new_boolean(false)); json_object_object_add(object, "active", json_object_new_boolean(false));
json_object_object_add(object, "dpms", json_object_new_boolean(false)); json_object_object_add(object, "dpms", json_object_new_boolean(false));
json_object_object_add(object, "primary", json_object_new_boolean(false));
json_object_object_add(object, "make",
json_object_new_string(wlr_output->make));
json_object_object_add(object, "model",
json_object_new_string(wlr_output->model));
json_object_object_add(object, "serial",
json_object_new_string(wlr_output->serial));
json_object *modes_array = json_object_new_array();
struct wlr_output_mode *mode;
wl_list_for_each(mode, &wlr_output->modes, link) {
json_object *mode_object = json_object_new_object();
json_object_object_add(mode_object, "width",
json_object_new_int(mode->width));
json_object_object_add(mode_object, "height",
json_object_new_int(mode->height));
json_object_object_add(mode_object, "refresh",
json_object_new_int(mode->refresh));
json_object_array_add(modes_array, mode_object);
}
json_object_object_add(object, "modes", modes_array);
json_object_object_add(object, "current_workspace", NULL); json_object_object_add(object, "current_workspace", NULL);
@ -706,7 +708,7 @@ json_object *ipc_json_describe_node(struct sway_node *node) {
case N_ROOT: case N_ROOT:
break; break;
case N_OUTPUT: case N_OUTPUT:
ipc_json_describe_output(node->sway_output, object); ipc_json_describe_enabled_output(node->sway_output, object);
break; break;
case N_CONTAINER: case N_CONTAINER:
ipc_json_describe_container(node->sway_container, object); ipc_json_describe_container(node->sway_container, object);