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
|