From 45d1ebfc67a1bd33bc0232ed658dc5e02c13a612 Mon Sep 17 00:00:00 2001 From: infirit Date: Thu, 24 Jul 2014 15:15:58 +0200 Subject: Use gdk_window_create_similar_surface() for EomScrollView Based on eog commit 648302091b5517b5da96c4277fbee8f13c125938 From Claudio Saavedra --- src/eom-scroll-view.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/eom-scroll-view.c b/src/eom-scroll-view.c index fcd44ab..eb1d53b 100644 --- a/src/eom-scroll-view.c +++ b/src/eom-scroll-view.c @@ -170,20 +170,25 @@ G_DEFINE_TYPE (EomScrollView, eom_scroll_view, GTK_TYPE_TABLE) ---------------------------------*/ static cairo_surface_t * -create_surface_from_pixbuf (GdkPixbuf *pixbuf) +create_surface_from_pixbuf (EomScrollView *view, GdkPixbuf *pixbuf) { cairo_surface_t *surface; cairo_t *cr; cairo_format_t format; + cairo_content_t content; - if (gdk_pixbuf_get_has_alpha (pixbuf)) + if (gdk_pixbuf_get_has_alpha (pixbuf)) { format = CAIRO_FORMAT_ARGB32; - else + content = CAIRO_CONTENT_COLOR | CAIRO_CONTENT_ALPHA; + } else { format = CAIRO_FORMAT_RGB24; + content = CAIRO_CONTENT_COLOR; + } - surface = cairo_image_surface_create (format, - gdk_pixbuf_get_width (pixbuf), - gdk_pixbuf_get_height (pixbuf)); + surface = gdk_window_create_similar_surface (gtk_widget_get_window (view->priv->display), + content, + gdk_pixbuf_get_width (pixbuf), + gdk_pixbuf_get_height (pixbuf)); cr = cairo_create (surface); gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); cairo_paint (cr); @@ -1880,7 +1885,7 @@ update_pixbuf (EomScrollView *view, GdkPixbuf *pixbuf) if (priv->surface) { cairo_surface_destroy (priv->surface); } - priv->surface = create_surface_from_pixbuf (priv->pixbuf); + priv->surface = create_surface_from_pixbuf (view, priv->pixbuf); } static void -- cgit v1.2.1