[PATCH] x11-backend: Add a --scale option
Bryce W. Harrington
b.harrington at samsung.com
Mon Mar 10 19:22:13 PDT 2014
LGTM
Reviewed-by: Bryce Harrington <b.harrington at samsung.com>
On Fri, Mar 07, 2014 at 03:29:14PM -0600, Jason Ekstrand wrote:
> From: Jason Ekstrand <jason at jlekstrand.net>
>
> ---
> man/weston.man | 4 ++++
> src/compositor-x11.c | 11 +++++++----
> 2 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/man/weston.man b/man/weston.man
> index f2d1b4c..fd1c7a5 100644
> --- a/man/weston.man
> +++ b/man/weston.man
> @@ -186,6 +186,10 @@ X windows to emulate the same number of outputs.
> Make the default size of each X window
> .IR W x H " pixels."
> .TP
> +.B \-\-scale\fR=\fIN\fR
> +Give all outputs a scale factor of
> +.I N.
> +.TP
> .B \-\-use\-pixman
> Use the pixman renderer. By default weston will try to use EGL and
> GLES2 for rendering. Passing this option will make weston use the
> diff --git a/src/compositor-x11.c b/src/compositor-x11.c
> index 6b5eb64..bb4ac9f 100644
> --- a/src/compositor-x11.c
> +++ b/src/compositor-x11.c
> @@ -56,6 +56,7 @@
>
> static int option_width;
> static int option_height;
> +static int option_scale;
> static int option_count;
>
> struct x11_compositor {
> @@ -602,8 +603,8 @@ x11_output_wait_for_map(struct x11_compositor *c, struct x11_output *output)
> if (configure_notify->width % output->scale != 0 ||
> configure_notify->height % output->scale != 0)
> weston_log("Resolution is not a multiple of screen size, rounding\n");
> - output->mode.width = configure_notify->width / output->scale;
> - output->mode.height = configure_notify->height / output->scale;
> + output->mode.width = configure_notify->width;
> + output->mode.height = configure_notify->height;
> configured = 1;
> break;
> }
> @@ -1478,7 +1479,7 @@ x11_compositor_create(struct wl_display *display,
> struct weston_config_section *section;
> xcb_screen_iterator_t s;
> int i, x = 0, output_count = 0;
> - int width, height, count, scale;
> + int width, height, scale, count;
> const char *section_name;
> char *name, *t, *mode;
> uint32_t transform;
> @@ -1534,6 +1535,7 @@ x11_compositor_create(struct wl_display *display,
>
> width = option_width ? option_width : 1024;
> height = option_height ? option_height : 640;
> + scale = option_scale ? option_scale : 1;
> count = option_count ? option_count : 1;
>
> section = NULL;
> @@ -1586,7 +1588,7 @@ x11_compositor_create(struct wl_display *display,
> for (i = output_count; i < count; i++) {
> output = x11_compositor_create_output(c, x, 0, width, height,
> fullscreen, no_input, NULL,
> - WL_OUTPUT_TRANSFORM_NORMAL, 1);
> + WL_OUTPUT_TRANSFORM_NORMAL, scale);
> if (output == NULL)
> goto err_x11_input;
> x = pixman_region32_extents(&output->base.region)->x2;
> @@ -1623,6 +1625,7 @@ backend_init(struct wl_display *display, int *argc, char *argv[],
> const struct weston_option x11_options[] = {
> { WESTON_OPTION_INTEGER, "width", 0, &option_width },
> { WESTON_OPTION_INTEGER, "height", 0, &option_height },
> + { WESTON_OPTION_INTEGER, "scale", 0, &option_scale },
> { WESTON_OPTION_BOOLEAN, "fullscreen", 'f', &fullscreen },
> { WESTON_OPTION_INTEGER, "output-count", 0, &option_count },
> { WESTON_OPTION_BOOLEAN, "no-input", 0, &no_input },
> --
> 1.8.5.3
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list