| Index: src/gpu/GrAuditTrail.cpp
 | 
| diff --git a/src/gpu/GrAuditTrail.cpp b/src/gpu/GrAuditTrail.cpp
 | 
| index d46387315eba1f0dbbeaab7f28a6700a2593653e..568b8789c38c303c61a88f325c059576ef599b37 100644
 | 
| --- a/src/gpu/GrAuditTrail.cpp
 | 
| +++ b/src/gpu/GrAuditTrail.cpp
 | 
| @@ -67,6 +67,19 @@ void GrAuditTrail::batchingResultNew(GrBatch* batch) {
 | 
|      fBatchList.emplace_back(batchNode);
 | 
|  }
 | 
|  
 | 
| +void GrAuditTrail::copyOutFromBatchList(BatchInfo* outBatchInfo, int batchListID) {
 | 
| +    SkASSERT(batchListID < fBatchList.count());
 | 
| +    const BatchNode* bn = fBatchList[batchListID];
 | 
| +    outBatchInfo->fBounds = bn->fBounds;
 | 
| +    outBatchInfo->fRenderTargetUniqueID = bn->fRenderTargetUniqueID;
 | 
| +    for (int j = 0; j < bn->fChildren.count(); j++) {
 | 
| +        BatchInfo::Batch& outBatch = outBatchInfo->fBatches.push_back();
 | 
| +        const Batch* currentBatch = bn->fChildren[j];
 | 
| +        outBatch.fBounds = currentBatch->fBounds;
 | 
| +        outBatch.fClientID = currentBatch->fClientID;
 | 
| +    }
 | 
| +}
 | 
| +
 | 
|  void GrAuditTrail::getBoundsByClientID(SkTArray<BatchInfo>* outInfo, int clientID) {
 | 
|      Batches** batchesLookup = fClientIDLookup.find(clientID);
 | 
|      if (batchesLookup) {
 | 
| @@ -83,24 +96,19 @@ void GrAuditTrail::getBoundsByClientID(SkTArray<BatchInfo>* outInfo, int clientI
 | 
|              if (kGrAuditTrailInvalidID == currentBatchListID ||
 | 
|                  batch->fBatchListID != currentBatchListID) {
 | 
|                  BatchInfo& outBatchInfo = outInfo->push_back();
 | 
| -                currentBatchListID = batch->fBatchListID;
 | 
|                  
 | 
|                  // copy out all of the batches so the client can display them even if
 | 
|                  // they have a different clientID
 | 
| -                const BatchNode* bn = fBatchList[currentBatchListID];
 | 
| -                outBatchInfo.fBounds = bn->fBounds;
 | 
| -                outBatchInfo.fRenderTargetUniqueID = bn->fRenderTargetUniqueID;
 | 
| -                for (int j = 0; j < bn->fChildren.count(); j++) {
 | 
| -                    BatchInfo::Batch& outBatch = outBatchInfo.fBatches.push_back();
 | 
| -                    const Batch* currentBatch = bn->fChildren[j];
 | 
| -                    outBatch.fBounds = currentBatch->fBounds;
 | 
| -                    outBatch.fClientID = currentBatch->fClientID;
 | 
| -                }
 | 
| +                this->copyOutFromBatchList(&outBatchInfo, batch->fBatchListID);
 | 
|              }
 | 
|          }
 | 
|      }
 | 
|  }
 | 
|  
 | 
| +void GrAuditTrail::getBoundsByBatchListID(BatchInfo* outInfo, int batchListID) {
 | 
| +    this->copyOutFromBatchList(outInfo, batchListID);
 | 
| +}
 | 
| +
 | 
|  void GrAuditTrail::fullReset() {
 | 
|      SkASSERT(fEnabled);
 | 
|      fBatchList.reset();
 | 
| 
 |