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;
 }