]> www.fi.muni.cz Git - evince.git/blobdiff - backend/pdf/ev-poppler.cc
[print] Fixes segmentation violation when format is empty
[evince.git] / backend / pdf / ev-poppler.cc
index 71f2da439790f0a78d70cc2c05aea0526e701d85..0a073ca0b04ae48a5501281bb202e11bf30c077b 100644 (file)
@@ -487,14 +487,11 @@ pdf_page_render (PopplerPage     *page,
 
 #ifdef HAVE_POPPLER_PAGE_RENDER
        cairo_t *cr;
 
 #ifdef HAVE_POPPLER_PAGE_RENDER
        cairo_t *cr;
-       
-       surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24,
+
+       surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
                                              width, height);
                                              width, height);
-       memset (cairo_image_surface_get_data (surface), 0xff,
-               cairo_image_surface_get_height (surface) *
-               cairo_image_surface_get_stride (surface));
-       
        cr = cairo_create (surface);
        cr = cairo_create (surface);
+
        switch (rc->rotation) {
                case 90:
                        cairo_translate (cr, width, 0);
        switch (rc->rotation) {
                case 90:
                        cairo_translate (cr, width, 0);
@@ -511,6 +508,11 @@ pdf_page_render (PopplerPage     *page,
        cairo_scale (cr, rc->scale, rc->scale);
        cairo_rotate (cr, rc->rotation * G_PI / 180.0);
        poppler_page_render (page, cr);
        cairo_scale (cr, rc->scale, rc->scale);
        cairo_rotate (cr, rc->rotation * G_PI / 180.0);
        poppler_page_render (page, cr);
+
+       cairo_set_operator (cr, CAIRO_OPERATOR_DEST_OVER);
+       cairo_set_source_rgb (cr, 1., 1., 1.);
+       cairo_paint (cr);
+
        cairo_destroy (cr);
 #else /* HAVE_POPPLER_PAGE_RENDER */
        GdkPixbuf *pixbuf;
        cairo_destroy (cr);
 #else /* HAVE_POPPLER_PAGE_RENDER */
        GdkPixbuf *pixbuf;