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

Commit c49ea309 authored by Steve Kondik's avatar 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

SurfaceFlinger: Featurize libuiblur module for OSS build

Change-Id: Ifdc176e699434125d17b111c044b8ba954cf717c

sf : Apply user defined panel orientation to blur layer

Blur layer need to capture screen shot to create to blur
effect. Hence need to take care any user defined orientation
as well.

Change-Id: I1c0478810d12661edf2586293bbed342a5b4dc7e

surfaceflinger: Cleanups for blur

 * Dynamically load it so no direct linkage or headers are required.

Change-Id: I4eba035f527ae4f0fa2485e24a8586145baf0adc

surfaceflinger: Fix uninitialized variable

 * And don't try to reinit the lib after a failure.

Change-Id: Ic055a48670ed8cf01e27b16c5d4ddf214db53d20
parent 60efde74
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
@@ -175,6 +175,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, uint32_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
@@ -97,6 +97,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(uint32_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
@@ -57,12 +57,16 @@ struct layer_state_t {
        eOverrideScalingModeChanged = 0x00000800,
        ePositionAppliesWithResize  = 0x00001000,
        eColorChanged               = 0x00002000,
        eBlurChanged                = 0x00400000,
        eBlurMaskSurfaceChanged     = 0x00800000,
        eBlurMaskSamplingChanged    = 0x01000000,
        eBlurMaskAlphaThresholdChanged = 0x02000000,
    };

    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), crop(Rect::INVALID_RECT),
            finalCrop(Rect::INVALID_RECT), frameNumber(0),
            overrideScalingMode(-1), color(0)
@@ -88,6 +92,10 @@ struct layer_state_t {
            uint32_t        w;
            uint32_t        h;
            uint32_t        layerStack;
            float           blur;
            sp<IBinder>     blurMaskSurface;
            uint32_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.writeUint32(w);
    output.writeUint32(h);
    output.writeUint32(layerStack);
    output.writeFloat(blur);
    output.writeStrongBinder(blurMaskSurface);
    output.writeUint32(blurMaskSampling);
    output.writeFloat(blurMaskAlphaThreshold);
    output.writeFloat(alpha);
    output.writeUint32(flags);
    output.writeUint32(mask);
@@ -56,6 +60,10 @@ status_t layer_state_t::read(const Parcel& input)
    w = input.readUint32();
    h = input.readUint32();
    layerStack = input.readUint32();
    blur = input.readFloat();
    blurMaskSurface = input.readStrongBinder();
    blurMaskSampling = input.readUint32();
    blurMaskAlphaThreshold = input.readFloat();
    alpha = input.readFloat();
    flags = static_cast<uint8_t>(input.readUint32());
    mask = static_cast<uint8_t>(input.readUint32());
Loading