aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar senorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-10-22 15:07:14 +0000
committerGravatar senorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-10-22 15:07:14 +0000
commitc2e8cef4792b478547973d312b26fff4aab7c729 (patch)
tree2280a80d41cba106ab1122e37e7b2b6a4a110b4c
parentd7bafb700c62dff466a88bee81d793e51737284b (diff)
Remove use of varargs in SkImageFilter. This is causing a crash in recent
builds of clang. (It was also masking the fact that SkMergeImageFilter was calling the wrong constructor!) Review URL: https://codereview.appspot.com/6709066 git-svn-id: http://skia.googlecode.com/svn/trunk@6029 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r--include/core/SkImageFilter.h9
-rwxr-xr-xinclude/effects/SkTestImageFilters.h4
-rw-r--r--src/core/SkImageFilter.cpp22
-rw-r--r--src/effects/SkBlendImageFilter.cpp2
-rw-r--r--src/effects/SkSingleInputImageFilter.cpp2
-rwxr-xr-xsrc/effects/SkTestImageFilters.cpp4
6 files changed, 23 insertions, 20 deletions
diff --git a/include/core/SkImageFilter.h b/include/core/SkImageFilter.h
index 596da242ac..ecbf79dda3 100644
--- a/include/core/SkImageFilter.h
+++ b/include/core/SkImageFilter.h
@@ -133,10 +133,11 @@ public:
protected:
SkImageFilter(int inputCount, SkImageFilter** inputs);
- // The ... represents inputCount SkImageFilter pointers, upon which this
- // constructor will call SkSafeRef(). This is the same behaviour as
- // the SkImageFilter(int, SkImageFilter**) constructor above.
- explicit SkImageFilter(int inputCount, ...);
+ // Convenience constructor for 1-input filters.
+ explicit SkImageFilter(SkImageFilter* input);
+
+ // Convenience constructor for 2-input filters.
+ SkImageFilter(SkImageFilter* input1, SkImageFilter* input2);
virtual ~SkImageFilter();
diff --git a/include/effects/SkTestImageFilters.h b/include/effects/SkTestImageFilters.h
index 5174856dc1..7e2fb91dc9 100755
--- a/include/effects/SkTestImageFilters.h
+++ b/include/effects/SkTestImageFilters.h
@@ -28,7 +28,7 @@ private:
class SK_API SkComposeImageFilter : public SkImageFilter {
public:
- SkComposeImageFilter(SkImageFilter* outer, SkImageFilter* inner) : INHERITED(2, outer, inner) {}
+ SkComposeImageFilter(SkImageFilter* outer, SkImageFilter* inner) : INHERITED(outer, inner) {}
virtual ~SkComposeImageFilter();
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeImageFilter)
@@ -50,7 +50,7 @@ class SK_API SkMergeImageFilter : public SkImageFilter {
public:
SkMergeImageFilter(SkImageFilter* first, SkImageFilter* second,
SkXfermode::Mode = SkXfermode::kSrcOver_Mode);
- SkMergeImageFilter(SkImageFilter* const filters[], int count,
+ SkMergeImageFilter(SkImageFilter* filters[], int count,
const SkXfermode::Mode modes[] = NULL);
virtual ~SkMergeImageFilter();
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp
index 45ad024d45..b5a7b1b9ac 100644
--- a/src/core/SkImageFilter.cpp
+++ b/src/core/SkImageFilter.cpp
@@ -10,7 +10,6 @@
#include "SkBitmap.h"
#include "SkFlattenableBuffers.h"
#include "SkRect.h"
-#include "stdarg.h"
SK_DEFINE_INST_COUNT(SkImageFilter)
@@ -22,15 +21,18 @@ SkImageFilter::SkImageFilter(int inputCount, SkImageFilter** inputs)
}
}
-SkImageFilter::SkImageFilter(int inputCount, ...)
- : fInputCount(inputCount), fInputs(new SkImageFilter*[inputCount]) {
- va_list ap;
- va_start(ap, inputCount);
- for (int i = 0; i < inputCount; ++i) {
- fInputs[i] = va_arg(ap, SkImageFilter*);
- SkSafeRef(fInputs[i]);
- }
- va_end(ap);
+SkImageFilter::SkImageFilter(SkImageFilter* input)
+ : fInputCount(1), fInputs(new SkImageFilter*[1]) {
+ fInputs[0] = input;
+ SkSafeRef(fInputs[0]);
+}
+
+SkImageFilter::SkImageFilter(SkImageFilter* input1, SkImageFilter* input2)
+ : fInputCount(2), fInputs(new SkImageFilter*[2]) {
+ fInputs[0] = input1;
+ fInputs[1] = input2;
+ SkSafeRef(fInputs[0]);
+ SkSafeRef(fInputs[1]);
}
SkImageFilter::~SkImageFilter() {
diff --git a/src/effects/SkBlendImageFilter.cpp b/src/effects/SkBlendImageFilter.cpp
index 1fa3c0da6b..d14b5fc612 100644
--- a/src/effects/SkBlendImageFilter.cpp
+++ b/src/effects/SkBlendImageFilter.cpp
@@ -52,7 +52,7 @@ SkPMColor multiply_proc(SkPMColor src, SkPMColor dst) {
///////////////////////////////////////////////////////////////////////////////
SkBlendImageFilter::SkBlendImageFilter(SkBlendImageFilter::Mode mode, SkImageFilter* background, SkImageFilter* foreground)
- : INHERITED(2, background, foreground), fMode(mode)
+ : INHERITED(background, foreground), fMode(mode)
{
}
diff --git a/src/effects/SkSingleInputImageFilter.cpp b/src/effects/SkSingleInputImageFilter.cpp
index 2019e251e8..76150386f4 100644
--- a/src/effects/SkSingleInputImageFilter.cpp
+++ b/src/effects/SkSingleInputImageFilter.cpp
@@ -15,7 +15,7 @@
#include "SkGrPixelRef.h"
#endif
-SkSingleInputImageFilter::SkSingleInputImageFilter(SkImageFilter* input) : INHERITED(1, input) {
+SkSingleInputImageFilter::SkSingleInputImageFilter(SkImageFilter* input) : INHERITED(input) {
}
SkSingleInputImageFilter::~SkSingleInputImageFilter() {
diff --git a/src/effects/SkTestImageFilters.cpp b/src/effects/SkTestImageFilters.cpp
index a672c337f7..99c80d037f 100755
--- a/src/effects/SkTestImageFilters.cpp
+++ b/src/effects/SkTestImageFilters.cpp
@@ -127,7 +127,7 @@ void SkMergeImageFilter::initModes(const SkXfermode::Mode modes[]) {
}
SkMergeImageFilter::SkMergeImageFilter(SkImageFilter* first, SkImageFilter* second,
- SkXfermode::Mode mode) : INHERITED(2, first, second) {
+ SkXfermode::Mode mode) : INHERITED(first, second) {
if (SkXfermode::kSrcOver_Mode != mode) {
SkXfermode::Mode modes[] = { mode, mode };
this->initModes(modes);
@@ -136,7 +136,7 @@ SkMergeImageFilter::SkMergeImageFilter(SkImageFilter* first, SkImageFilter* seco
}
}
-SkMergeImageFilter::SkMergeImageFilter(SkImageFilter* const filters[], int count,
+SkMergeImageFilter::SkMergeImageFilter(SkImageFilter* filters[], int count,
const SkXfermode::Mode modes[]) : INHERITED(count, filters) {
this->initModes(modes);
}