Author: friemann Date: Fri Feb 8 19:29:54 2008 New Revision: 4346 URL: http://svn.gnome.org/viewvc/eog?rev=4346&view=rev
Log: 2008-02-08 Felix Riemann <[EMAIL PROTECTED]> * src/eog-image.c: (eog_image_apply_display_profile): Skip ICC correction for non-RGB input colorspaces. There appears to be currently no sane way for us to determine the parameters needed here. This fixes crashes when opening such images with an ICC profile loaded. Also make sure that the transformation was actually created before executing it. Fixes bug #512626. Modified: trunk/ChangeLog trunk/src/eog-image.c Modified: trunk/src/eog-image.c ============================================================================== --- trunk/src/eog-image.c (original) +++ trunk/src/eog-image.c Fri Feb 8 19:29:54 2008 @@ -616,6 +616,13 @@ if (screen == NULL || priv->profile == NULL) return; + /* TODO: support other colorspaces than RGB */ + if (cmsGetColorSpace (priv->profile) != icSigRgbData || + cmsGetColorSpace (screen) != icSigRgbData) { + eog_debug_message (DEBUG_LCMS, "One or both ICC profiles not in RGB colorspace; not correcting"); + return; + } + transform = cmsCreateTransform (priv->profile, TYPE_RGB_8, screen, @@ -623,17 +630,18 @@ INTENT_PERCEPTUAL, 0); - rows = gdk_pixbuf_get_height(priv->image); - width = gdk_pixbuf_get_width (priv->image); - stride = gdk_pixbuf_get_rowstride (priv->image); - p = gdk_pixbuf_get_pixels (priv->image); - - for (row = 0; row < rows; ++row) { - cmsDoTransform(transform, p, p, width); - p += stride; + if (G_LIKELY (transform != NULL)) { + rows = gdk_pixbuf_get_height (priv->image); + width = gdk_pixbuf_get_width (priv->image); + stride = gdk_pixbuf_get_rowstride (priv->image); + p = gdk_pixbuf_get_pixels (priv->image); + + for (row = 0; row < rows; ++row) { + cmsDoTransform (transform, p, p, width); + p += stride; + } + cmsDeleteTransform (transform); } - - cmsDeleteTransform (transform); } static void _______________________________________________ SVN-commits-list mailing list (read only) http://mail.gnome.org/mailman/listinfo/svn-commits-list Want to limit the commits to a few modules? Go to above URL, log in to edit your options and select the modules ('topics') you want. Module maintainer? It is possible to set the reply-to to your development mailing list. Email [EMAIL PROTECTED] if interested.