| Index: src/gpu/GrAuditTrail.cpp
|
| diff --git a/src/gpu/GrAuditTrail.cpp b/src/gpu/GrAuditTrail.cpp
|
| index 4b90ea524f89456f7e13d83746c28315d903701b..f17ada48819453c7d7173cb2358ac11f0424c657 100644
|
| --- a/src/gpu/GrAuditTrail.cpp
|
| +++ b/src/gpu/GrAuditTrail.cpp
|
| @@ -40,6 +40,40 @@ void GrAuditTrail::batchingResultNew(GrBatch* batch) {
|
| fBatchList.emplace_back(batchNode);
|
| }
|
|
|
| +void GrAuditTrail::getBoundsByClientID(SkTArray<BatchInfo>* outInfo, int clientID) {
|
| + Batches** batchesLookup = fClientIDLookup.find(clientID);
|
| + if (batchesLookup) {
|
| + // We track which batchlistID we're currently looking at. If it changes, then we
|
| + // need to push back a new batch info struct. We happen to know that batches are
|
| + // in sequential order in the batchlist, otherwise we'd have to do more bookkeeping
|
| + int currentBatchListID = kGrAuditTrailInvalidID;
|
| + for (int i = 0; i < (*batchesLookup)->count(); i++) {
|
| + const Batch* batch = (**batchesLookup)[i];
|
| +
|
| + // Because we will copy out all of the batches associated with a given
|
| + // batch list id everytime the id changes, we only have to update our struct
|
| + // when the id changes.
|
| + 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;
|
| + 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;
|
| + }
|
| + }
|
| + }
|
| + }
|
| +}
|
| +
|
| +
|
| template <typename T>
|
| void GrAuditTrail::JsonifyTArray(SkString* json, const char* name, const T& array,
|
| bool addComma) {
|
|
|