From b830be70dc7c81f93a5ebd76abcc0a55b65846b4 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Thu, 31 Jan 2008 11:23:08 +0000 Subject: [PATCH] Use the new cairo function cairo_format_stride_for_width when available. 2008-01-31 Carlos Garcia Campos * configure.ac: * backend/djvu/djvu-document.c: (djvu_document_render): * backend/tiff/tiff-document.c: (tiff_document_render): Use the new cairo function cairo_format_stride_for_width when available. Fixes bug #482720. svn path=/trunk/; revision=2884 --- ChangeLog | 9 +++++++++ backend/djvu/djvu-document.c | 5 ++++- backend/tiff/tiff-document.c | 6 +++++- configure.ac | 6 ++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7cd5683b..9869dd42 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-01-31 Carlos Garcia Campos + + * configure.ac: + * backend/djvu/djvu-document.c: (djvu_document_render): + * backend/tiff/tiff-document.c: (tiff_document_render): + + Use the new cairo function cairo_format_stride_for_width when + available. Fixes bug #482720. + 2008-01-31 Carlos Garcia Campos * libdocument/ev-document-factory.c: (get_mime_type_from_uri), diff --git a/backend/djvu/djvu-document.c b/backend/djvu/djvu-document.c index f27d66f4..6e1c5f3c 100644 --- a/backend/djvu/djvu-document.c +++ b/backend/djvu/djvu-document.c @@ -261,8 +261,11 @@ djvu_document_render (EvDocument *document, default: rotation = DDJVU_ROTATE_0; } - +#ifdef HAVE_CAIRO_FORMAT_STRIDE_FOR_WIDTH + rowstride = cairo_format_stride_for_width (CAIRO_FORMAT_RGB24, page_width); +#else rowstride = page_width * 4; +#endif pixels = (gchar *) g_malloc (page_height * rowstride); surface = cairo_image_surface_create_for_data ((guchar *)pixels, CAIRO_FORMAT_RGB24, diff --git a/backend/tiff/tiff-document.c b/backend/tiff/tiff-document.c index d8bee9e5..86170e27 100644 --- a/backend/tiff/tiff-document.c +++ b/backend/tiff/tiff-document.c @@ -246,11 +246,15 @@ tiff_document_render (EvDocument *document, if (width <= 0 || height <= 0) return NULL; +#ifdef HAVE_CAIRO_FORMAT_STRIDE_FOR_WIDTH + rowstride = cairo_format_stride_for_width (CAIRO_FORMAT_RGB24, width); +#else rowstride = width * 4; if (rowstride / 4 != width) /* overflow */ return NULL; - +#endif + bytes = height * rowstride; if (bytes / rowstride != height) /* overflow */ diff --git a/configure.ac b/configure.ac index e2c9065b..3ba95e4b 100644 --- a/configure.ac +++ b/configure.ac @@ -66,6 +66,12 @@ PKG_CHECK_MODULES(SHELL_CORE, libxml-2.0 >= $LIBXML_REQUIRED gtk+-2.0 >= $GTK_RE BACKEND_LIBTOOL_FLAGS="-module -avoid-version" AC_SUBST(BACKEND_LIBTOOL_FLAGS) +dnl ===== Check special functions +evince_save_LIBS=$LIBS +LIBS="$LIBS $BACKEND_LIBS" +AC_CHECK_FUNCS(cairo_format_stride_for_width) +LIBS=$evince_save_LIBS + AC_ARG_WITH(keyring, AC_HELP_STRING([--without-keyring],[disable the use of gnome-keyring]), [case "${withval}" in -- 2.43.5