diff options
Diffstat (limited to 'libs/hwui/pipeline/skia')
-rw-r--r-- | libs/hwui/pipeline/skia/FunctorDrawable.h | 4 | ||||
-rw-r--r-- | libs/hwui/pipeline/skia/SkiaDisplayList.cpp | 6 | ||||
-rw-r--r-- | libs/hwui/pipeline/skia/SkiaDisplayList.h | 7 | ||||
-rw-r--r-- | libs/hwui/pipeline/skia/SkiaPipeline.cpp | 4 |
4 files changed, 21 insertions, 0 deletions
diff --git a/libs/hwui/pipeline/skia/FunctorDrawable.h b/libs/hwui/pipeline/skia/FunctorDrawable.h index 988a896b6267..9bbd0a92600b 100644 --- a/libs/hwui/pipeline/skia/FunctorDrawable.h +++ b/libs/hwui/pipeline/skia/FunctorDrawable.h @@ -44,6 +44,10 @@ public: mWebViewHandle->sync(data); } + virtual void onRemovedFromTree() { + mWebViewHandle->onRemovedFromTree(); + } + protected: virtual SkRect onGetBounds() override { return mBounds; } diff --git a/libs/hwui/pipeline/skia/SkiaDisplayList.cpp b/libs/hwui/pipeline/skia/SkiaDisplayList.cpp index 3498f715b455..fcfc4f82abed 100644 --- a/libs/hwui/pipeline/skia/SkiaDisplayList.cpp +++ b/libs/hwui/pipeline/skia/SkiaDisplayList.cpp @@ -47,6 +47,12 @@ void SkiaDisplayList::syncContents(const WebViewSyncData& data) { } } +void SkiaDisplayList::onRemovedFromTree() { + for (auto& functor : mChildFunctors) { + functor->onRemovedFromTree(); + } +} + bool SkiaDisplayList::reuseDisplayList(RenderNode* node) { reset(); node->attachAvailableList(this); diff --git a/libs/hwui/pipeline/skia/SkiaDisplayList.h b/libs/hwui/pipeline/skia/SkiaDisplayList.h index 90e9bc6a1a28..2a677344b7b2 100644 --- a/libs/hwui/pipeline/skia/SkiaDisplayList.h +++ b/libs/hwui/pipeline/skia/SkiaDisplayList.h @@ -111,6 +111,13 @@ public: */ void syncContents(const WebViewSyncData& data); + /** + * ONLY to be called by RenderNode::onRemovedFromTree so that we can notify any + * contained VectorDrawables or GLFunctors. + * + */ + void onRemovedFromTree(); + void applyColorTransform(ColorTransform transform) { mDisplayList.applyColorTransform(transform); } diff --git a/libs/hwui/pipeline/skia/SkiaPipeline.cpp b/libs/hwui/pipeline/skia/SkiaPipeline.cpp index 5462623e75ff..44a6e4354608 100644 --- a/libs/hwui/pipeline/skia/SkiaPipeline.cpp +++ b/libs/hwui/pipeline/skia/SkiaPipeline.cpp @@ -59,6 +59,10 @@ void SkiaPipeline::onDestroyHardwareResources() { } bool SkiaPipeline::pinImages(std::vector<SkImage*>& mutableImages) { + if (!mRenderThread.getGrContext()) { + ALOGD("Trying to pin an image with an invalid GrContext"); + return false; + } for (SkImage* image : mutableImages) { if (SkImage_pinAsTexture(image, mRenderThread.getGrContext())) { mPinnedImages.emplace_back(sk_ref_sp(image)); |