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

Commit 28a4d993 authored by Derek Sollenberger's avatar Derek Sollenberger
Browse files

Refactor RenderState and remove unused functionality.

Test: hwui_unit_tests still pass
Change-Id: Ie943671535ab8c5da1bac05985e815e0cb842dc1
parent 5a5a648b
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -29,12 +29,16 @@ DeferredLayerUpdater::DeferredLayerUpdater(RenderState& renderState)
        , mGLContextAttached(false)
        , mUpdateTexImage(false)
        , mLayer(nullptr) {
    renderState.registerDeferredLayerUpdater(this);
    renderState.registerContextCallback(this);
}

DeferredLayerUpdater::~DeferredLayerUpdater() {
    setTransform(nullptr);
    mRenderState.unregisterDeferredLayerUpdater(this);
    mRenderState.removeContextCallback(this);
    destroyLayer();
}

void DeferredLayerUpdater::onContextDestroyed() {
    destroyLayer();
}

+5 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>

#include "renderstate/RenderState.h"
#include "surfacetexture/SurfaceTexture.h"
#include "Layer.h"
#include "Rect.h"
@@ -38,7 +39,7 @@ class RenderState;

// Container to hold the properties a layer should be set to at the start
// of a render pass
class DeferredLayerUpdater : public VirtualLightRefBase {
class DeferredLayerUpdater : public VirtualLightRefBase, public IGpuContextCallback {
public:
    // Note that DeferredLayerUpdater assumes it is taking ownership of the layer
    // and will not call incrementRef on it as a result.
@@ -98,6 +99,9 @@ public:

    void destroyLayer();

protected:
    void onContextDestroyed() override;

private:
    RenderState& mRenderState;

+3 −3
Original line number Diff line number Diff line
@@ -158,7 +158,7 @@ void RenderNode::pushLayerUpdate(TreeInfo& info) {
        CC_UNLIKELY(properties().getWidth() == 0) || CC_UNLIKELY(properties().getHeight() == 0) ||
        CC_UNLIKELY(!properties().fitsOnLayer())) {
        if (CC_UNLIKELY(hasLayer())) {
            renderthread::CanvasContext::destroyLayer(this);
            this->setLayerSurface(nullptr);
        }
        return;
    }
@@ -313,7 +313,7 @@ void RenderNode::deleteDisplayList(TreeObserver& observer, TreeInfo* info) {

void RenderNode::destroyHardwareResources(TreeInfo* info) {
    if (hasLayer()) {
        renderthread::CanvasContext::destroyLayer(this);
        this->setLayerSurface(nullptr);
    }
    setStagingDisplayList(nullptr);

@@ -323,7 +323,7 @@ void RenderNode::destroyHardwareResources(TreeInfo* info) {

void RenderNode::destroyLayers() {
    if (hasLayer()) {
        renderthread::CanvasContext::destroyLayer(this);
        this->setLayerSurface(nullptr);
    }
    if (mDisplayList) {
        mDisplayList->updateChildren([](RenderNode* child) { child->destroyLayers(); });
+0 −2
Original line number Diff line number Diff line
@@ -230,8 +230,6 @@ Bitmap::~Bitmap() {
            mPixelStorage.hardware.buffer = nullptr;
            break;
    }

    android::uirenderer::renderthread::RenderProxy::onBitmapDestroyed(getStableID());
}

bool Bitmap::hasHardwareMipMap() const {
+1 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
#include "SkiaPipeline.h"
#include "SkiaProfileRenderer.h"
#include "hwui/Bitmap.h"
#include "private/hwui/DrawGlInfo.h"
#include "renderstate/RenderState.h"
#include "renderthread/EglManager.h"
#include "renderthread/Frame.h"
Loading