summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Bradford <rob@linux.intel.com>2013-02-12 11:53:47 +0000
committerKristian Høgsberg <krh@bitplanet.net>2013-02-14 16:06:02 -0500
commitfd5654baae575bb9dab60641b3d547368ab1c267 (patch)
treed13824f265cde4f6a8cdb0458e64a9356a9b46e0
parent9fc4c3c98b1cb49566365bdbd3c69d356b353b64 (diff)
downloadweston-fd5654baae575bb9dab60641b3d547368ab1c267.tar.gz
shell: Bypass fullscreen scaling if surface width and height match output
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.)
-rw-r--r--src/shell.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/shell.c b/src/shell.c
index f8cee0ec..831b1256 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);