diff options
-rw-r--r-- | libs/hwui/pipeline/skia/LayerDrawable.cpp | 5 | ||||
-rw-r--r-- | libs/hwui/pipeline/skia/LayerDrawable.h | 10 | ||||
-rw-r--r-- | libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp | 5 |
3 files changed, 11 insertions, 9 deletions
diff --git a/libs/hwui/pipeline/skia/LayerDrawable.cpp b/libs/hwui/pipeline/skia/LayerDrawable.cpp index 2ebfbcc1f18e..a28355b5650f 100644 --- a/libs/hwui/pipeline/skia/LayerDrawable.cpp +++ b/libs/hwui/pipeline/skia/LayerDrawable.cpp @@ -27,7 +27,10 @@ namespace uirenderer { namespace skiapipeline { void LayerDrawable::onDraw(SkCanvas* canvas) { - DrawLayer(canvas->getGrContext(), canvas, mLayer.get()); + Layer* layer = mLayerUpdater->backingLayer(); + if (layer) { + DrawLayer(canvas->getGrContext(), canvas, layer); + } } bool LayerDrawable::DrawLayer(GrContext* context, SkCanvas* canvas, Layer* layer) { diff --git a/libs/hwui/pipeline/skia/LayerDrawable.h b/libs/hwui/pipeline/skia/LayerDrawable.h index 431989519a70..d34d8e07c133 100644 --- a/libs/hwui/pipeline/skia/LayerDrawable.h +++ b/libs/hwui/pipeline/skia/LayerDrawable.h @@ -16,7 +16,7 @@ #pragma once -#include "Layer.h" +#include "DeferredLayerUpdater.h" #include <SkCanvas.h> #include <SkDrawable.h> @@ -30,18 +30,18 @@ namespace skiapipeline { */ class LayerDrawable : public SkDrawable { public: - explicit LayerDrawable(Layer* layer) - : mLayer(layer) {} + explicit LayerDrawable(DeferredLayerUpdater* layerUpdater) + : mLayerUpdater(layerUpdater) {} static bool DrawLayer(GrContext* context, SkCanvas* canvas, Layer* layer); protected: virtual SkRect onGetBounds() override { - return SkRect::MakeWH(mLayer->getWidth(), mLayer->getHeight()); + return SkRect::MakeWH(mLayerUpdater->getWidth(), mLayerUpdater->getHeight()); } virtual void onDraw(SkCanvas* canvas) override; private: - sp<Layer> mLayer; + sp<DeferredLayerUpdater> mLayerUpdater; }; }; // namespace skiapipeline diff --git a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp index a0cce98c8d57..4b7439e478ed 100644 --- a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp +++ b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp @@ -91,10 +91,9 @@ void SkiaRecordingCanvas::insertReorderBarrier(bool enableReorder) { } void SkiaRecordingCanvas::drawLayer(uirenderer::DeferredLayerUpdater* layerUpdater) { - if (layerUpdater != nullptr && layerUpdater->backingLayer() != nullptr) { - uirenderer::Layer* layer = layerUpdater->backingLayer(); + if (layerUpdater != nullptr) { // Create a ref-counted drawable, which is kept alive by sk_sp in SkLiteDL. - sk_sp<SkDrawable> drawable(new LayerDrawable(layer)); + sk_sp<SkDrawable> drawable(new LayerDrawable(layerUpdater)); drawDrawable(drawable.get()); } } |