From 6bdb8b5059c6d0ebbfb03b19d99a8540b578cee8 Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Tue, 29 Sep 2009 05:31:51 +0000 Subject: Avoid crashing when profile is missing. Addresses main symptom of bug #437927. (bzr r8674) --- src/widgets/sp-color-icc-selector.cpp | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'src/widgets') diff --git a/src/widgets/sp-color-icc-selector.cpp b/src/widgets/sp-color-icc-selector.cpp index 916e4363c..a10d2380c 100644 --- a/src/widgets/sp-color-icc-selector.cpp +++ b/src/widgets/sp-color-icc-selector.cpp @@ -637,14 +637,17 @@ void ColorICCSelector::_colorChanged() tmp[i] = val * 0x0ffff; } guchar post[4] = {0,0,0,0}; - cmsDoTransform( _prof->getTransfToSRGB8(), tmp, post, 1 ); - guint32 other = SP_RGBA32_U_COMPOSE(post[0], post[1], post[2], 255 ); - if ( other != _color.toRGBA32(255) ) { - _fixupNeeded = other; - gtk_widget_set_sensitive( _fixupBtn, TRUE ); + cmsHTRANSFORM trans = _prof->getTransfToSRGB8(); + if ( trans ) { + cmsDoTransform( trans, tmp, post, 1 ); + guint32 other = SP_RGBA32_U_COMPOSE(post[0], post[1], post[2], 255 ); + if ( other != _color.toRGBA32(255) ) { + _fixupNeeded = other; + gtk_widget_set_sensitive( _fixupBtn, TRUE ); #ifdef DEBUG_LCMS - g_message("Color needs to change 0x%06x to 0x%06x", _color.toRGBA32(255) >> 8, other >> 8 ); + g_message("Color needs to change 0x%06x to 0x%06x", _color.toRGBA32(255) >> 8, other >> 8 ); #endif // DEBUG_LCMS + } } } #else @@ -773,8 +776,11 @@ void ColorICCSelector::_updateSliders( gint ignore ) } } - cmsDoTransform( _prof->getTransfToSRGB8(), scratch, _fooMap[i], 1024 ); - sp_color_slider_set_map( SP_COLOR_SLIDER(_fooSlider[i]), _fooMap[i] ); + cmsHTRANSFORM trans = _prof->getTransfToSRGB8(); + if ( trans ) { + cmsDoTransform( trans, scratch, _fooMap[i], 1024 ); + sp_color_slider_set_map( SP_COLOR_SLIDER(_fooSlider[i]), _fooMap[i] ); + } } } } @@ -840,7 +846,10 @@ void ColorICCSelector::_adjustmentChanged( GtkAdjustment *adjustment, SPColorICC } guchar post[4] = {0,0,0,0}; - cmsDoTransform( iccSelector->_prof->getTransfToSRGB8(), tmp, post, 1 ); + cmsHTRANSFORM trans = iccSelector->_prof->getTransfToSRGB8(); + if ( trans ) { + cmsDoTransform( trans, tmp, post, 1 ); + } SPColor other( SP_RGBA32_U_COMPOSE(post[0], post[1], post[2], 255) ); other.icc = new SVGICCColor(); -- cgit v1.2.3