css: Inherit device scale in _gtk_css_image_get_surface

To handle hidpi support we need to make sure we don't
downscale scaled css images.

Note: If cairo_surface_create_similar starts doing this
by itself we need to back this out.
This commit is contained in:
Alexander Larsson 2013-08-05 16:11:18 +02:00
parent 8c7a8e9314
commit 499cef1bb0

View File

@ -389,16 +389,30 @@ _gtk_css_image_get_surface (GtkCssImage *image,
{
cairo_surface_t *result;
cairo_t *cr;
double sx, sy;
g_return_val_if_fail (GTK_IS_CSS_IMAGE (image), NULL);
g_return_val_if_fail (surface_width > 0, NULL);
g_return_val_if_fail (surface_height > 0, NULL);
if (target)
result = cairo_surface_create_similar (target,
CAIRO_CONTENT_COLOR_ALPHA,
surface_width,
surface_height);
{
#ifdef HAVE_CAIRO_SURFACE_SET_DEVICE_SCALE
cairo_surface_get_device_scale (target, &sx, &sy);
#else
sx = sy = 1;
#endif
result = cairo_surface_create_similar (target,
CAIRO_CONTENT_COLOR_ALPHA,
surface_width*sx,
surface_height*sy);
#ifdef HAVE_CAIRO_SURFACE_SET_DEVICE_SCALE
cairo_surface_set_device_scale (result, sx, sy);
#endif
}
else
result = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
surface_width,