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

Commit c6900fa3 authored by Chavi Weingarten's avatar Chavi Weingarten Committed by Android (Google) Code Review
Browse files

Merge "Added SKIP_SCREENSHOT flag for layers"

parents 062c8574 c5676c6e
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -861,9 +861,8 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setFlags
        mStatus = BAD_INDEX;
        return *this;
    }
    if ((mask & layer_state_t::eLayerOpaque) ||
            (mask & layer_state_t::eLayerHidden) ||
            (mask & layer_state_t::eLayerSecure)) {
    if ((mask & layer_state_t::eLayerOpaque) || (mask & layer_state_t::eLayerHidden) ||
        (mask & layer_state_t::eLayerSecure) || (mask & layer_state_t::eLayerSkipScreenshot)) {
        s->what |= layer_state_t::eFlagsChanged;
    }
    s->flags &= ~mask;
+1 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ public:
    enum { // (keep in sync with SurfaceControl.java)
        eHidden = 0x00000004,
        eDestroyBackbuffer = 0x00000020,
        eSkipScreenshot = 0x00000040,
        eSecure = 0x00000080,
        eNonPremultiplied = 0x00000100,
        eOpaque = 0x00000400,
+4 −3
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ struct layer_state_t {
    enum {
        eLayerHidden = 0x01,         // SURFACE_HIDDEN in SurfaceControl.java
        eLayerOpaque = 0x02,         // SURFACE_OPAQUE
        eLayerSkipScreenshot = 0x40, // SKIP_SCREENSHOT
        eLayerSecure = 0x80,         // SECURE
    };

+12 −0
Original line number Diff line number Diff line
@@ -89,6 +89,8 @@ Layer::Layer(const LayerCreationArgs& args)
    if (args.flags & ISurfaceComposerClient::eHidden) layerFlags |= layer_state_t::eLayerHidden;
    if (args.flags & ISurfaceComposerClient::eOpaque) layerFlags |= layer_state_t::eLayerOpaque;
    if (args.flags & ISurfaceComposerClient::eSecure) layerFlags |= layer_state_t::eLayerSecure;
    if (args.flags & ISurfaceComposerClient::eSkipScreenshot)
        layerFlags |= layer_state_t::eLayerSkipScreenshot;

    mCurrentState.active_legacy.w = args.w;
    mCurrentState.active_legacy.h = args.h;
@@ -2658,6 +2660,16 @@ Layer::FrameRateCompatibility Layer::FrameRate::convertCompatibility(int8_t comp
    }
}

bool Layer::getPrimaryDisplayOnly() const {
    const State& s(mDrawingState);
    if (s.flags & layer_state_t::eLayerSkipScreenshot) {
        return true;
    }

    sp<Layer> parent = mDrawingParent.promote();
    return parent == nullptr ? false : parent->getPrimaryDisplayOnly();
}

// ---------------------------------------------------------------------------

}; // namespace android
+1 −4
Original line number Diff line number Diff line
@@ -695,8 +695,7 @@ public:

    InputWindowInfo::Type getWindowType() const { return mWindowType; }

    void setPrimaryDisplayOnly() { mPrimaryDisplayOnly = true; }
    bool getPrimaryDisplayOnly() const { return mPrimaryDisplayOnly; }
    bool getPrimaryDisplayOnly() const;

    void updateMirrorInfo();

@@ -963,8 +962,6 @@ protected:
    const std::string mName;
    const std::string mTransactionName{"TX - " + mName};

    bool mPrimaryDisplayOnly = false;

    // These are only accessed by the main thread or the tracing thread.
    State mDrawingState;
    // Store a copy of the pending state so that the drawing thread can access the
Loading