Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index 02dca83ee0e86892a1a2d4fd267d17d8f465bb52..449fa2654618927b241cfb81641b7ebc38e0c7e5 100644 |
--- a/src/gpu/SkGpuDevice.cpp |
+++ b/src/gpu/SkGpuDevice.cpp |
@@ -1836,7 +1836,7 @@ void SkGpuDevice::EXPERIMENTAL_optimize(const SkPicture* picture) { |
fContext->getLayerCache()->trackPicture(picture); |
} |
-bool SkGpuDevice::EXPERIMENTAL_drawPicture(SkCanvas* mainCanvas, const SkPicture* picture, |
+bool SkGpuDevice::EXPERIMENTAL_drawPicture(SkCanvas* mainCanvas, const SkPicture* mainPicture, |
const SkMatrix* matrix, const SkPaint* paint) { |
// todo: should handle these natively |
if (matrix || paint) { |
@@ -1845,38 +1845,27 @@ bool SkGpuDevice::EXPERIMENTAL_drawPicture(SkCanvas* mainCanvas, const SkPicture |
fContext->getLayerCache()->processDeletedPictures(); |
- SkPicture::AccelData::Key key = GrAccelData::ComputeAccelDataKey(); |
- |
- const SkPicture::AccelData* data = picture->EXPERIMENTAL_getAccelData(key); |
- if (NULL == data) { |
- return false; |
- } |
- |
- const GrAccelData *gpuData = static_cast<const GrAccelData*>(data); |
- if (0 == gpuData->numSaveLayers()) { |
- return false; |
- } |
- |
SkRect clipBounds; |
if (!mainCanvas->getClipBounds(&clipBounds)) { |
return true; |
} |
- SkTDArray<GrCachedLayer*> atlased, nonAtlased; |
+ SkTDArray<GrLayerHoister::HoistingInfo> atlased, nonAtlased; |
- if (!GrLayerHoister::FindLayersToHoist(gpuData, clipBounds, &atlased, &nonAtlased, |
+ if (!GrLayerHoister::FindLayersToHoist(mainPicture, clipBounds, &atlased, &nonAtlased, |
fContext->getLayerCache())) { |
return false; |
} |
GrReplacements replacements; |
- GrLayerHoister::DrawLayers(picture, atlased, nonAtlased, &replacements); |
+ GrLayerHoister::DrawLayers(atlased, nonAtlased, &replacements); |
// Render the entire picture using new layers |
- GrRecordReplaceDraw(*picture->fRecord, mainCanvas, picture->fBBH.get(), &replacements, NULL); |
+ GrRecordReplaceDraw(*mainPicture->fRecord, mainCanvas, mainPicture->fBBH.get(), |
+ &replacements, NULL); |
- GrLayerHoister::UnlockLayers(fContext->getLayerCache(), picture); |
+ GrLayerHoister::UnlockLayers(fContext->getLayerCache(), atlased, nonAtlased); |
return true; |
} |