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

Commit 41b6aabf authored by Mathias Agopian's avatar Mathias Agopian
Browse files

fix Surface positions are not floats

Added Surface.setPosition(float, float) which allows to set a surface's
position in float.

Bug: 5239859
Change-Id: I903aef4ad5b5999142202fb8ea30fe216d805711
parent 4e92d140
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -54,8 +54,8 @@ struct layer_state_t {
            };
            SurfaceID       surface;
            uint32_t        what;
            int32_t         x;
            int32_t         y;
            float           x;
            float           y;
            uint32_t        z;
            uint32_t        w;
            uint32_t        h;
+1 −1
Original line number Diff line number Diff line
@@ -145,7 +145,7 @@ public:
    status_t    setAlpha(SurfaceID id, float alpha=1.0f);
    status_t    setFreezeTint(SurfaceID id, uint32_t tint);
    status_t    setMatrix(SurfaceID id, float dsdx, float dtdx, float dsdy, float dtdy);
    status_t    setPosition(SurfaceID id, int32_t x, int32_t y);
    status_t    setPosition(SurfaceID id, float x, float y);
    status_t    setSize(SurfaceID id, uint32_t w, uint32_t h);
    status_t    destroySurface(SurfaceID sid);

+3 −3
Original line number Diff line number Diff line
@@ -102,7 +102,7 @@ class Composer : public Singleton<Composer>
public:

    status_t setPosition(const sp<SurfaceComposerClient>& client, SurfaceID id,
            int32_t x, int32_t y);
            float x, float y);
    status_t setSize(const sp<SurfaceComposerClient>& client, SurfaceID id,
            uint32_t w, uint32_t h);
    status_t setLayer(const sp<SurfaceComposerClient>& client, SurfaceID id,
@@ -161,7 +161,7 @@ layer_state_t* Composer::getLayerStateLocked(
}

status_t Composer::setPosition(const sp<SurfaceComposerClient>& client,
        SurfaceID id, int32_t x, int32_t y) {
        SurfaceID id, float x, float y) {
    Mutex::Autolock _l(mLock);
    layer_state_t* s = getLayerStateLocked(client, id);
    if (!s)
@@ -372,7 +372,7 @@ status_t SurfaceComposerClient::setFreezeTint(SurfaceID id, uint32_t tint) {
    return getComposer().setFreezeTint(this, id, tint);
}

status_t SurfaceComposerClient::setPosition(SurfaceID id, int32_t x, int32_t y) {
status_t SurfaceComposerClient::setPosition(SurfaceID id, float x, float y) {
    return getComposer().setPosition(this, id, x, y);
}

+3 −6
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@ LayerBase::LayerBase(SurfaceFlinger* flinger, DisplayID display)
      mFlinger(flinger), mFiltering(false),
      mNeedsFiltering(false),
      mOrientation(0),
      mLeft(0), mTop(0),
      mTransactionFlags(0),
      mPremultipliedAlpha(true), mName("unnamed"), mDebug(false),
      mInvalidate(0)
@@ -119,7 +118,7 @@ uint32_t LayerBase::setTransactionFlags(uint32_t flags) {
    return android_atomic_or(flags, &mTransactionFlags);
}

bool LayerBase::setPosition(int32_t x, int32_t y) {
bool LayerBase::setPosition(float x, float y) {
    if (mCurrentState.transform.tx() == x && mCurrentState.transform.ty() == y)
        return false;
    mCurrentState.sequence++;
@@ -259,8 +258,6 @@ void LayerBase::validateVisibility(const Transform& planeTransform)
    mOrientation = tr.getOrientation();
    mTransform = tr;
    mTransformedBounds = tr.makeBounds(w, h);
    mLeft = tr.tx();
    mTop  = tr.ty();
}

void LayerBase::lockPageFlip(bool& recomputeVisibleRegions)
@@ -476,10 +473,10 @@ void LayerBase::dump(String8& result, char* buffer, size_t SIZE) const
    snprintf(buffer, SIZE,
            "+ %s %p\n"
            "      "
            "z=%9d, pos=(%4d,%4d), size=(%4d,%4d), "
            "z=%9d, pos=(%g,%g), size=(%4d,%4d), "
            "isOpaque=%1d, needsDithering=%1d, invalidate=%1d, "
            "alpha=0x%02x, flags=0x%08x, tr=[%.2f, %.2f][%.2f, %.2f]\n",
            getTypeId(), this, s.z, tx(), ty(), s.w, s.h,
            getTypeId(), this, s.z, s.transform.tx(), s.transform.ty(), s.w, s.h,
            isOpaque(), needsDithering(), contentDirty,
            s.alpha, s.flags,
            s.transform[0][0], s.transform[0][1],
+1 −5
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ public:
            String8 getName() const;

            // modify current state
            bool setPosition(int32_t x, int32_t y);
            bool setPosition(float x, float y);
            bool setLayer(uint32_t z);
            bool setSize(uint32_t w, uint32_t h);
            bool setAlpha(uint8_t alpha);
@@ -217,8 +217,6 @@ public:
    inline  State&          currentState()          { return mCurrentState; }

    int32_t  getOrientation() const { return mOrientation; }
    int  tx() const             { return mLeft; }
    int  ty() const             { return mTop; }
    
protected:
    const GraphicPlane& graphicPlane(int dpy) const;
@@ -250,8 +248,6 @@ protected:
                Transform       mTransform;
                GLfloat         mVertices[4][2];
                Rect            mTransformedBounds;
                int             mLeft;
                int             mTop;
            
                // these are protected by an external lock
                State           mCurrentState;
Loading