Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f5a370e0 authored by Derek Sollenberger's avatar Derek Sollenberger
Browse files

Fix SurfaceTexture CTS test case when using the Skia pipeline.

Test: UiRendering CTS TextureViewTests#testReuseSurfaceTexture
Change-Id: Iaf665b88b83cacfbbd37c93aaebc64e937053cb7
parent 0a47bdbe
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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) {
+5 −5
Original line number Diff line number Diff line
@@ -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
+2 −3
Original line number Diff line number Diff line
@@ -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());
    }
}