add optoinal bytesRead argument (output) to playback()
git-svn-id: http://skia.googlecode.com/svn/trunk@1400 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/pipe/SkGPipeRead.cpp b/src/pipe/SkGPipeRead.cpp
index c72aa57..591b7e9 100644
--- a/src/pipe/SkGPipeRead.cpp
+++ b/src/pipe/SkGPipeRead.cpp
@@ -526,7 +526,8 @@
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 @@
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 @@
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;
}