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

Commit 1f6078ae authored by Michael Wright's avatar Michael Wright Committed by Michael Lentine
Browse files

Have VirtualDisplays send SF resize messages when resizing

Change-Id: I76d15b22099a659450ec875836c9bf2b6584838f
parent 99c7dc59
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -146,6 +146,7 @@ public:
            const sp<IGraphicBufferProducer>& bufferProducer);
    static void setDisplayLayerStack(const sp<IBinder>& token,
            uint32_t layerStack);
    static void setDisplaySize(const sp<IBinder>& token, uint32_t width, uint32_t height);

    /* setDisplayProjection() defines the projection of layer stacks
     * to a given display.
+3 −1
Original line number Diff line number Diff line
@@ -113,7 +113,8 @@ struct DisplayState {
    enum {
        eSurfaceChanged             = 0x01,
        eLayerStackChanged          = 0x02,
        eDisplayProjectionChanged   = 0x04
        eDisplayProjectionChanged   = 0x04,
        eDisplaySizeChanged         = 0x08
    };

    uint32_t what;
@@ -123,6 +124,7 @@ struct DisplayState {
    uint32_t orientation;
    Rect viewport;
    Rect frame;
    uint32_t width, height;
    status_t write(Parcel& output) const;
    status_t read(const Parcel& input);
};
+14 −0
Original line number Diff line number Diff line
@@ -166,6 +166,7 @@ public:
            uint32_t orientation,
            const Rect& layerStackRect,
            const Rect& displayRect);
    void setDisplaySize(const sp<IBinder>& token, uint32_t width, uint32_t height);

    static void setAnimationTransaction() {
        Composer::getInstance().setAnimationTransactionImpl();
@@ -426,6 +427,14 @@ void Composer::setDisplayProjection(const sp<IBinder>& token,
    mForceSynchronous = true; // TODO: do we actually still need this?
}

void Composer::setDisplaySize(const sp<IBinder>& token, uint32_t width, uint32_t height) {
    Mutex::Autolock _l(mLock);
    DisplayState& s(getDisplayStateLocked(token));
    s.width = width;
    s.height = height;
    s.what |= DisplayState::eDisplaySizeChanged;
}

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

SurfaceComposerClient::SurfaceComposerClient()
@@ -621,6 +630,11 @@ void SurfaceComposerClient::setDisplayProjection(const sp<IBinder>& token,
            layerStackRect, displayRect);
}

void SurfaceComposerClient::setDisplaySize(const sp<IBinder>& token,
        uint32_t width, uint32_t height) {
    Composer::getInstance().setDisplaySize(token, width, height);
}

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

status_t SurfaceComposerClient::getDisplayConfigs(
+1 −0
Original line number Diff line number Diff line
@@ -170,6 +170,7 @@ private:
        Rect viewport;
        Rect frame;
        uint8_t orientation;
        uint32_t width, height;
        String8 displayName;
        bool isSecure;
    };