diff --git a/sway/ipc-json.c b/sway/ipc-json.c index 7d3091dd6..dc3fbc2f7 100644 --- a/sway/ipc-json.c +++ b/sway/ipc-json.c @@ -85,6 +85,19 @@ static const char *ipc_json_output_transform_description(enum wl_output_transfor return NULL; } +static const char *ipc_json_output_adaptive_sync_status_description( + enum wlr_output_adaptive_sync_status status) { + switch (status) { + case WLR_OUTPUT_ADAPTIVE_SYNC_DISABLED: + return "disabled"; + case WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED: + return "enabled"; + case WLR_OUTPUT_ADAPTIVE_SYNC_UNKNOWN: + return "unknown"; + } + return NULL; +} + #if HAVE_XWAYLAND static const char *ipc_json_xwindow_type_description(struct sway_view *view) { struct wlr_xwayland_surface *surface = view->wlr_xwayland_surface; @@ -219,6 +232,11 @@ static void ipc_json_describe_output(struct sway_output *output, json_object_object_add(object, "transform", json_object_new_string( ipc_json_output_transform_description(wlr_output->transform))); + const char *adaptive_sync_status = + ipc_json_output_adaptive_sync_status_description( + wlr_output->adaptive_sync_status); + json_object_object_add(object, "adaptive_sync_status", + json_object_new_string(adaptive_sync_status)); struct sway_workspace *ws = output_get_active_workspace(output); if (!sway_assert(ws, "Expected output to have a workspace")) { diff --git a/swaymsg/main.c b/swaymsg/main.c index b9a8189c6..f9d3515aa 100644 --- a/swaymsg/main.c +++ b/swaymsg/main.c @@ -190,7 +190,7 @@ static void pretty_print_output(json_object *o) { json_object_object_get_ex(o, "active", &active); json_object_object_get_ex(o, "current_workspace", &ws); json_object *make, *model, *serial, *scale, *scale_filter, *subpixel, - *transform, *max_render_time; + *transform, *max_render_time, *adaptive_sync_status; json_object_object_get_ex(o, "make", &make); json_object_object_get_ex(o, "model", &model); json_object_object_get_ex(o, "serial", &serial); @@ -199,6 +199,7 @@ static void pretty_print_output(json_object *o) { json_object_object_get_ex(o, "subpixel_hinting", &subpixel); json_object_object_get_ex(o, "transform", &transform); json_object_object_get_ex(o, "max_render_time", &max_render_time); + json_object_object_get_ex(o, "adaptive_sync_status", &adaptive_sync_status); json_object *x, *y; json_object_object_get_ex(rect, "x", &x); json_object_object_get_ex(rect, "y", &y); @@ -219,8 +220,7 @@ static void pretty_print_output(json_object *o) { " Scale filter: %s\n" " Subpixel hinting: %s\n" " Transform: %s\n" - " Workspace: %s\n" - " Max render time: ", + " Workspace: %s\n", json_object_get_string(name), json_object_get_string(make), json_object_get_string(model), @@ -236,8 +236,13 @@ static void pretty_print_output(json_object *o) { json_object_get_string(transform), json_object_get_string(ws) ); + int max_render_time_int = json_object_get_int(max_render_time); + printf(" Max render time: "); printf(max_render_time_int == 0 ? "off\n" : "%d ms\n", max_render_time_int); + + printf(" Adaptive sync: %s\n", + json_object_get_string(adaptive_sync_status)); } else { printf( "Output %s '%s %s %s' (inactive)\n",