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

Commit 0fc7017d authored by Byunghun Jeon's avatar Byunghun Jeon Committed by Steve Kondik
Browse files

SurfaceFlinger: Native changes to add blur effect

Native changes to add blur-behind and blur mask effect

Change-Id: I54faf82d750e8299de6d261f6a893ab26d08df84

SurfaceFlinger: Adding template for LayerBlur files

Change-Id: I444009113b7bdd6c5284863fd1f56358e67d9fe6
parent 0c69b78a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ public:
        eCursorWindow       = 0x00002000,

        eFXSurfaceNormal    = 0x00000000,
        eFXSurfaceBlur      = 0x00010000,
        eFXSurfaceDim       = 0x00020000,
        eFXSurfaceMask      = 0x000F0000,
    };
+5 −0
Original line number Diff line number Diff line
@@ -166,6 +166,11 @@ public:
            const Rect& layerStackRect,
            const Rect& displayRect);

    status_t    setBlur(const sp<IBinder>& id, float blur);
    status_t    setBlurMaskSurface(const sp<IBinder>& id, const sp<IBinder>& maskSurfaceId);
    status_t    setBlurMaskSampling(const sp<IBinder>& id, int32_t blurMaskSampling);
    status_t    setBlurMaskAlphaThreshold(const sp<IBinder>& id, float alpha);

private:
    virtual void onFirstRef();
    Composer& getComposer();
+5 −0
Original line number Diff line number Diff line
@@ -77,6 +77,11 @@ public:
    status_t clearLayerFrameStats() const;
    status_t getLayerFrameStats(FrameStats* outStats) const;

    status_t    setBlur(float blur = 0);
    status_t    setBlurMaskSurface(const sp<SurfaceControl>& maskSurface);
    status_t    setBlurMaskSampling(int32_t blurMaskSampling);
    status_t    setBlurMaskAlphaThreshold(float alpha);

private:
    // can't be copied
    SurfaceControl& operator = (SurfaceControl& rhs);
+10 −2
Original line number Diff line number Diff line
@@ -53,13 +53,17 @@ struct layer_state_t {
        eLayerStackChanged          = 0x00000080,
        eCropChanged                = 0x00000100,
        eOpacityChanged             = 0x00000200,
        eBlurChanged                = 0x00400000,
        eBlurMaskSurfaceChanged     = 0x00800000,
        eBlurMaskSamplingChanged    = 0x01000000,
        eBlurMaskAlphaThresholdChanged = 0x02000000,
        eTransparencyChanged        = 0x80000000,
    };

    layer_state_t()
        :   what(0),
            x(0), y(0), z(0), w(0), h(0), layerStack(0),
            alpha(0), flags(0), mask(0),
            x(0), y(0), z(0), w(0), h(0), layerStack(0), blur(0),
            blurMaskSampling(0), blurMaskAlphaThreshold(0), alpha(0), flags(0), mask(0),
            reserved(0)
    {
        matrix.dsdx = matrix.dtdy = 1.0f;
@@ -84,6 +88,10 @@ struct layer_state_t {
            uint32_t        w;
            uint32_t        h;
            uint32_t        layerStack;
            float           blur;
            sp<IBinder>     blurMaskSurface;
            int32_t         blurMaskSampling;
            float           blurMaskAlphaThreshold;
            float           alpha;
            uint8_t         flags;
            uint8_t         mask;
+8 −0
Original line number Diff line number Diff line
@@ -32,6 +32,10 @@ status_t layer_state_t::write(Parcel& output) const
    output.writeInt32(w);
    output.writeInt32(h);
    output.writeInt32(layerStack);
    output.writeFloat(blur);
    output.writeStrongBinder(blurMaskSurface);
    output.writeInt32(blurMaskSampling);
    output.writeFloat(blurMaskAlphaThreshold);
    output.writeFloat(alpha);
    output.writeInt32(flags);
    output.writeInt32(mask);
@@ -52,6 +56,10 @@ status_t layer_state_t::read(const Parcel& input)
    w = input.readInt32();
    h = input.readInt32();
    layerStack = input.readInt32();
    blur = input.readFloat();
    blurMaskSurface = input.readStrongBinder();
    blurMaskSampling = input.readInt32();
    blurMaskAlphaThreshold = input.readFloat();
    alpha = input.readFloat();
    flags = input.readInt32();
    mask = input.readInt32();
Loading