[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