diff options
author | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2015-12-17 12:31:56 +0000 |
---|---|---|
committer | Pekka Paalanen <pekka.paalanen@collabora.co.uk> | 2015-12-18 17:45:30 +0200 |
commit | ba9dca054e906b0dd14410a537247c1e54d3f510 (patch) | |
tree | 29135d559b661028698a868bb3619b226f0b4ea6 /clients | |
parent | 1c2201b543416838e4a14df61e2230049f6b0983 (diff) | |
download | weston-ba9dca054e906b0dd14410a537247c1e54d3f510.tar.gz |
weston-info: display output scale
Fall back to not showing anything as before if we don't have a
compositor with wl_output new enough (version 2 or newer).
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Diffstat (limited to 'clients')
-rw-r--r-- | clients/weston-info.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/clients/weston-info.c b/clients/weston-info.c index f22781c2..49d64fef 100644 --- a/clients/weston-info.c +++ b/clients/weston-info.c @@ -63,8 +63,11 @@ struct output_info { struct wl_output *output; + int32_t version; + struct { int32_t x, y; + int32_t scale; int32_t physical_width, physical_height; enum wl_output_subpixel subpixel; enum wl_output_transform output_transform; @@ -233,8 +236,12 @@ print_output_info(void *data) break; } - printf("\tx: %d, y: %d,\n", + printf("\tx: %d, y: %d,", output->geometry.x, output->geometry.y); + if (output->version >= 2) + printf(" scale: %d,", output->geometry.scale); + printf("\n"); + printf("\tphysical_width: %d mm, physical_height: %d mm,\n", output->geometry.physical_width, output->geometry.physical_height); @@ -519,9 +526,28 @@ output_handle_mode(void *data, struct wl_output *wl_output, wl_list_insert(output->modes.prev, &mode->link); } +static void +output_handle_done(void *data, struct wl_output *wl_output) +{ + /* don't bother waiting for this; there's no good reason a + * compositor will wait more than one roundtrip before sending + * these initial events. */ +} + +static void +output_handle_scale(void *data, struct wl_output *wl_output, + int32_t scale) +{ + struct output_info *output = data; + + output->geometry.scale = scale; +} + static const struct wl_output_listener output_listener = { output_handle_geometry, output_handle_mode, + output_handle_done, + output_handle_scale, }; static void @@ -552,10 +578,12 @@ add_output_info(struct weston_info *info, uint32_t id, uint32_t version) output->global.print = print_output_info; output->global.destroy = destroy_output_info; + output->version = MIN(version, 2); + output->geometry.scale = 1; wl_list_init(&output->modes); output->output = wl_registry_bind(info->registry, id, - &wl_output_interface, 1); + &wl_output_interface, output->version); wl_output_add_listener(output->output, &output_listener, output); |