diff options
Diffstat (limited to 'media-gfx/synfig/files/02-fix-magickcore-s-exceptioninfo-0.patch')
| -rw-r--r-- | media-gfx/synfig/files/02-fix-magickcore-s-exceptioninfo-0.patch | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/media-gfx/synfig/files/02-fix-magickcore-s-exceptioninfo-0.patch b/media-gfx/synfig/files/02-fix-magickcore-s-exceptioninfo-0.patch new file mode 100644 index 00000000..cc433c4e --- /dev/null +++ b/media-gfx/synfig/files/02-fix-magickcore-s-exceptioninfo-0.patch @@ -0,0 +1,117 @@ +Fix MagickCore's exceptionInfo implementation + +From: Matthew White <mehw.is.me@inventati.org> + +Since MagickCore version 7 deprecated methods have been removed. + +* synfig-core/src/modules/mod_magickpp/trgt_magickpp.cpp + (copy_image_list, ~magickpp_trgt): Rather than calling MagickCore's + GetExceptionInfo() deprecated method (removed in MagickCore version + 7), call AcquireExceptionInfo() and DestroyExceptionInfo() to init + and then clean exceptionInfo. Implement exceptionInfo as a pointer. +--- + .../src/modules/mod_magickpp/trgt_magickpp.cpp | 32 ++++++-------------- + 1 file changed, 9 insertions(+), 23 deletions(-) + +diff --git a/synfig-core/src/modules/mod_magickpp/trgt_magickpp.cpp b/synfig-core/src/modules/mod_magickpp/trgt_magickpp.cpp +index 312c5f3ed..8b4c00b57 100644 +--- a/synfig-core/src/modules/mod_magickpp/trgt_magickpp.cpp ++++ b/synfig-core/src/modules/mod_magickpp/trgt_magickpp.cpp +@@ -54,35 +54,20 @@ SYNFIG_TARGET_SET_CVS_ID(magickpp_trgt,"$Id$"); + + /* === M E T H O D S ======================================================= */ + +-/* +- * WORKAROUND +- * +- * Mimics the hidden MagickCore's InitializeExceptionInfo() method. +- */ +-namespace MagickCore { +-static void InitializeExceptionInfo(ExceptionInfo *exception) +-{ +- MagickCore::ExceptionInfo* exceptionInfo = AcquireExceptionInfo(); +- *exception = *exceptionInfo; // copy assignment, ExceptionInfo is a struct +- MagickCore::DestroyExceptionInfo(exceptionInfo); +-} +-} +- + template <class Container> + MagickCore::Image* copy_image_list(Container& container) + { + typedef typename Container::iterator Iter; + MagickCore::Image* previous = 0; + MagickCore::Image* first = NULL; +- MagickCore::ExceptionInfo exceptionInfo; +- MagickCore::InitializeExceptionInfo(&exceptionInfo); ++ MagickCore::ExceptionInfo* exceptionInfo = MagickCore::AcquireExceptionInfo(); + for (Iter iter = container.begin(); iter != container.end(); ++iter) + { + MagickCore::Image* current; + + try + { +- current = CloneImage(iter->image(), 0, 0, Magick::MagickTrue, &exceptionInfo); ++ current = CloneImage(iter->image(), 0, 0, Magick::MagickTrue, exceptionInfo); + + if (!first) first = current; + +@@ -97,13 +82,13 @@ MagickCore::Image* copy_image_list(Container& container) + } + } + ++ exceptionInfo = MagickCore::DestroyExceptionInfo(exceptionInfo); + return first; + } + + magickpp_trgt::~magickpp_trgt() + { +- MagickCore::ExceptionInfo exceptionInfo; +- MagickCore::InitializeExceptionInfo(&exceptionInfo); ++ MagickCore::ExceptionInfo* exceptionInfo = MagickCore::AcquireExceptionInfo(); + + try + { +@@ -117,7 +102,7 @@ magickpp_trgt::~magickpp_trgt() + image.fileName(filename); + try + { +- SetImageInfo(image.imageInfo(),Magick::MagickTrue,&exceptionInfo); ++ SetImageInfo(image.imageInfo(),Magick::MagickTrue,exceptionInfo); + can_adjoin = image.adjoin(); + } + catch(Magick::Warning warning) { +@@ -151,7 +136,7 @@ magickpp_trgt::~magickpp_trgt() + synfig::info("removing duplicate frames"); + try + { +- RemoveDuplicateLayers(&image_list, &exceptionInfo); ++ RemoveDuplicateLayers(&image_list, exceptionInfo); + } + catch(Magick::Warning warning) { + synfig::warning("exception '%s'", warning.what()); +@@ -163,7 +148,7 @@ magickpp_trgt::~magickpp_trgt() + synfig::info("optimizing layers"); + try + { +- image_list = OptimizeImageLayers(image_list,&exceptionInfo); ++ image_list = OptimizeImageLayers(image_list,exceptionInfo); + } + catch(Magick::Warning warning) { + synfig::warning("exception '%s'", warning.what()); +@@ -175,7 +160,7 @@ magickpp_trgt::~magickpp_trgt() + synfig::info("optimizing layer transparency"); + try + { +- OptimizeImageTransparency(image_list,&exceptionInfo); ++ OptimizeImageTransparency(image_list,exceptionInfo); + } + catch(Magick::Warning warning) { + synfig::warning("exception '%s'", warning.what()); +@@ -217,6 +202,7 @@ magickpp_trgt::~magickpp_trgt() + if (buffer1 != NULL) delete [] buffer1; + if (buffer2 != NULL) delete [] buffer2; + if (color_buffer != NULL) delete [] color_buffer; ++ exceptionInfo = MagickCore::DestroyExceptionInfo(exceptionInfo); + } + + bool |
