diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-05-23 13:54:24 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-05-23 13:54:24 +0000 |
commit | 80b09de87fadfa1fe45860124b157a01e03f760b (patch) | |
tree | 480cf146e00a8b13bbf6dd76ecdfb4960705d612 /src/pipe/SkGPipeRead.cpp | |
parent | 21b1c5c7b1727ea08f7c9c308c1c2b855cce916f (diff) |
add optoinal bytesRead argument (output) to playback()
git-svn-id: http://skia.googlecode.com/svn/trunk@1400 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/pipe/SkGPipeRead.cpp')
-rw-r--r-- | src/pipe/SkGPipeRead.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/pipe/SkGPipeRead.cpp b/src/pipe/SkGPipeRead.cpp index c72aa572d4..591b7e9cd5 100644 --- a/src/pipe/SkGPipeRead.cpp +++ b/src/pipe/SkGPipeRead.cpp @@ -526,7 +526,8 @@ SkGPipeReader::~SkGPipeReader() { delete fState; } -SkGPipeReader::Status SkGPipeReader::playback(const void* data, size_t length) { +SkGPipeReader::Status SkGPipeReader::playback(const void* data, size_t length, + size_t* bytesRead) { if (NULL == fCanvas) { return kError_Status; } @@ -540,6 +541,7 @@ SkGPipeReader::Status SkGPipeReader::playback(const void* data, size_t length) { const ReadProc* table = gReadTable; SkFlattenableReadBuffer reader(data, length); SkCanvas* canvas = fCanvas; + Status status = kEOF_Status; fState->setReader(&reader); while (!reader.eof()) { @@ -549,14 +551,20 @@ SkGPipeReader::Status SkGPipeReader::playback(const void* data, size_t length) { if (op >= SK_ARRAY_COUNT(gReadTable)) { SkDebugf("---- bad op during GPipeState::playback\n"); - return kError_Status; + status = kError_Status; + break; } if (kDone_DrawOp == op) { - return kDone_Status; + status = kDone_Status; + break; } table[op](canvas, &reader, op32, fState); } - return kEOF_Status; + + if (bytesRead) { + *bytesRead = reader.size(); + } + return status; } |