[PATCH weston] shell: Bypass fullscreen scaling if surface width and height match output

Kristian Høgsberg hoegsberg at gmail.com
Thu Feb 14 10:41:09 PST 2013


On Tue, Feb 12, 2013 at 11:53:47AM +0000, Rob Bradford wrote:
> From: Rob Bradford <rob at linux.intel.com>
> 
> If our surface has width and height set to the same dimensions as the output
> then we can bypassing the scale factor calculation and addition of the
> transformation.
> 
> The use case that led to this optimisation is the playback of video using
> gstreamer-vaapi with the "scale" method. The video is the same dimensions as
> the output (1080p.)
> ---
>  src/shell.c | 7 +++++++
>  1 file changed, 7 insertions(+)

Thanks, that looks good.

Kristian

> diff --git a/src/shell.c b/src/shell.c
> index 368fa5b..19ccdfd 100644
> --- a/src/shell.c
> +++ b/src/shell.c
> @@ -1672,6 +1672,13 @@ shell_configure_fullscreen(struct shell_surface *shsurf)
>  			center_on_output(surface, shsurf->fullscreen_output);
>  		break;
>  	case WL_SHELL_SURFACE_FULLSCREEN_METHOD_SCALE:
> +		/* 1:1 mapping between surface and output dimensions */
> +		if (output->width == surface->geometry.width &&
> +		    output->height == surface->geometry.height) {
> +			weston_surface_set_position(surface, output->x, output->y);
> +			break;
> +		}
> +
>  		matrix = &shsurf->fullscreen.transform.matrix;
>  		weston_matrix_init(matrix);
>  
> -- 
> 1.8.1
> 
> _______________________________________________
> 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