aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pipe/SkGPipeRead.cpp
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-05-23 13:54:24 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-05-23 13:54:24 +0000
commit80b09de87fadfa1fe45860124b157a01e03f760b (patch)
tree480cf146e00a8b13bbf6dd76ecdfb4960705d612 /src/pipe/SkGPipeRead.cpp
parent21b1c5c7b1727ea08f7c9c308c1c2b855cce916f (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.cpp16
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;
}