summaryrefslogtreecommitdiff
blob: cc433c4e3eb3b8b40161ebd65bc750cc8b72954c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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