[PATCH] desktop-shell: Fix black edges on scaled desktop pattern

Bill Spitzak spitzak at gmail.com
Thu May 8 20:00:35 PDT 2014


Filter sampling outside the source image can leak black into the edges 
of the
desktop image. This is most easily seen by scaling the default tiled image
with this weston.ini:

	# no background-image and no background-color
	background-type=scale-crop
---
  clients/desktop-shell.c |    2 ++
  1 file changed, 2 insertions(+)

diff --git a/clients/desktop-shell.c b/clients/desktop-shell.c
index 4880888..e121cc7 100644
--- a/clients/desktop-shell.c
+++ b/clients/desktop-shell.c
@@ -724,6 +724,7 @@ background_draw(struct widget *widget, void *data)
  		case BACKGROUND_SCALE:
  			cairo_matrix_init_scale(&matrix, sx, sy);
  			cairo_pattern_set_matrix(pattern, &matrix);
+			cairo_pattern_set_extend(pattern, CAIRO_EXTEND_PAD);
  			break;
  		case BACKGROUND_SCALE_CROP:
  			s = (sx < sy) ? sx : sy;
@@ -733,6 +734,7 @@ background_draw(struct widget *widget, void *data)
  			cairo_matrix_init_translate(&matrix, tx, ty);
  			cairo_matrix_scale(&matrix, s, s);
  			cairo_pattern_set_matrix(pattern, &matrix);
+			cairo_pattern_set_extend(pattern, CAIRO_EXTEND_PAD);
  			break;
  		case BACKGROUND_TILE:
  			cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REPEAT);
-- 
1.7.9.5



More information about the wayland-devel mailing list