Changed maxInputCount for exact inputCount
Processing still had issue when the number of inputs was 0, so I changed my previous fix from a maximum input count to an exact input count. -1 is used when the input count isn't fixed (but still has to be a non-negative number). BUG= R=senorblanco@chromium.org, reed@google.com, sugoi@google.com, bsalomon@google.com Author: sugoi@chromium.org Review URL: https://codereview.chromium.org/100803004 git-svn-id: http://skia.googlecode.com/svn/trunk@12492 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
a0b266d817
commit
c84728d72a
@ -156,7 +156,14 @@ protected:
|
||||
|
||||
virtual ~SkImageFilter();
|
||||
|
||||
explicit SkImageFilter(int maxInputCount, SkFlattenableReadBuffer& rb);
|
||||
/**
|
||||
* Constructs a new SkImageFilter read from an SkFlattenableReadBuffer object.
|
||||
*
|
||||
* @param inputCount The exact number of inputs expected for this SkImageFilter object.
|
||||
* -1 can be used if the filter accepts any number of inputs.
|
||||
* @param rb SkFlattenableReadBuffer object from which the SkImageFilter is read.
|
||||
*/
|
||||
explicit SkImageFilter(int inputCount, SkFlattenableReadBuffer& rb);
|
||||
|
||||
virtual void flatten(SkFlattenableWriteBuffer& wb) const SK_OVERRIDE;
|
||||
|
||||
|
@ -1532,11 +1532,11 @@ bool SkScriptEngine::ConvertTo(SkScriptEngine* engine, SkDisplayTypes toType, Sk
|
||||
SkString* strPtr = new SkString();
|
||||
SkASSERT(engine);
|
||||
engine->track(strPtr);
|
||||
if (type == SkType_Int)
|
||||
if (type == SkType_Int) {
|
||||
strPtr->appendS32(operand.fS32);
|
||||
else if (type == SkType_Displayable)
|
||||
} else if (type == SkType_Displayable) {
|
||||
SkASSERT(0); // must call through instance version instead of static version
|
||||
else {
|
||||
} else {
|
||||
if (type != SkType_Float) {
|
||||
success = false;
|
||||
break;
|
||||
|
@ -53,9 +53,9 @@ SkImageFilter::~SkImageFilter() {
|
||||
delete[] fInputs;
|
||||
}
|
||||
|
||||
SkImageFilter::SkImageFilter(int maxInputCount, SkFlattenableReadBuffer& buffer) {
|
||||
SkImageFilter::SkImageFilter(int inputCount, SkFlattenableReadBuffer& buffer) {
|
||||
fInputCount = buffer.readInt();
|
||||
if (buffer.validate((fInputCount >= 0) && (fInputCount <= maxInputCount))) {
|
||||
if (buffer.validate((fInputCount >= 0) && ((inputCount < 0) || (fInputCount == inputCount)))) {
|
||||
fInputs = new SkImageFilter*[fInputCount];
|
||||
for (int i = 0; i < fInputCount; i++) {
|
||||
if (buffer.readBool()) {
|
||||
|
@ -11,9 +11,6 @@
|
||||
#include "SkFlattenableBuffers.h"
|
||||
#include "SkValidationUtils.h"
|
||||
|
||||
// Use 65535 as an arbitrary large number of inputs that this image filter should never overflow
|
||||
static const int kMaxInputs = 65535;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void SkMergeImageFilter::initAllocModes() {
|
||||
@ -56,7 +53,7 @@ SkMergeImageFilter::SkMergeImageFilter(SkImageFilter* first, SkImageFilter* seco
|
||||
SkMergeImageFilter::SkMergeImageFilter(SkImageFilter* filters[], int count,
|
||||
const SkXfermode::Mode modes[],
|
||||
const CropRect* cropRect) : INHERITED(count, filters, cropRect) {
|
||||
SkASSERT(count <= kMaxInputs);
|
||||
SkASSERT(count >= 0);
|
||||
this->initModes(modes);
|
||||
}
|
||||
|
||||
@ -161,7 +158,7 @@ void SkMergeImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const {
|
||||
}
|
||||
|
||||
SkMergeImageFilter::SkMergeImageFilter(SkFlattenableReadBuffer& buffer)
|
||||
: INHERITED(kMaxInputs, buffer) {
|
||||
: INHERITED(-1, buffer) {
|
||||
bool hasModes = buffer.readBool();
|
||||
if (hasModes) {
|
||||
this->initAllocModes();
|
||||
|
Loading…
Reference in New Issue
Block a user