summaryrefslogtreecommitdiff
path: root/gtk/gtkcssshadowvalue.c
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2014-09-02 11:21:02 -0700
committerJasper St. Pierre <jstpierre@mecheye.net>2014-09-02 11:26:55 -0700
commite6a0378289909a5ac6f7824560147565eb01737e (patch)
tree68e2d7fd34edb3565a1ec66588445aae1513d043 /gtk/gtkcssshadowvalue.c
parent0acad8436693faed46d2357d707ff01f103cb57a (diff)
downloadgtk+-e6a0378289909a5ac6f7824560147565eb01737e.tar.gz
gtkcssshadowvalue: Use cairo_surface_create_similar_image
Calling this on an Xlib surface allows us to keep this in SHM memory, giving it a potential speedup so we don't have to copy it to SHM memory for the Composite when we mask later.
Diffstat (limited to 'gtk/gtkcssshadowvalue.c')
-rw-r--r--gtk/gtkcssshadowvalue.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gtk/gtkcssshadowvalue.c b/gtk/gtkcssshadowvalue.c
index 671f4f0b6d..7f72698df2 100644
--- a/gtk/gtkcssshadowvalue.c
+++ b/gtk/gtkcssshadowvalue.c
@@ -331,9 +331,10 @@ gtk_css_shadow_value_start_drawing (const GtkCssValue *shadow,
clip_radius = _gtk_cairo_blur_compute_pixels (radius);
/* Create a larger surface to center the blur. */
- surface = cairo_image_surface_create (CAIRO_FORMAT_A8,
- clip_rect.width + 2 * clip_radius,
- clip_rect.height + 2 * clip_radius);
+ surface = cairo_surface_create_similar_image (cairo_get_target (cr),
+ CAIRO_FORMAT_A8,
+ clip_rect.width + 2 * clip_radius,
+ clip_rect.height + 2 * clip_radius);
cairo_surface_set_device_offset (surface, clip_radius - clip_rect.x, clip_radius - clip_rect.y);
blur_cr = cairo_create (surface);
cairo_set_user_data (blur_cr, &shadow_key, cairo_reference (cr), (cairo_destroy_func_t) cairo_destroy);