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

Commit 9888e3eb authored by Mathias Agopian's avatar Mathias Agopian Committed by Android Git Automerger
Browse files

am fae5cb2b: optimize Surface.readFromParcel()

parents c7a4570c a0c30e92
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -145,15 +145,13 @@ public:
        uint32_t    reserved[2];
    };

    Surface(const Parcel& data);
    static sp<Surface> readFromParcel(
            const Parcel& data, const sp<Surface>& other);

    static bool isValid(const sp<Surface>& surface) {
        return (surface != 0) && surface->isValid();
    }

    static bool isSameSurface(
            const sp<Surface>& lhs, const sp<Surface>& rhs);

    bool        isValid();
    SurfaceID   ID() const          { return mToken; }
    uint32_t    getFlags() const    { return mFlags; }
@@ -191,6 +189,7 @@ private:
    Surface(const Surface& rhs);

    Surface(const sp<SurfaceControl>& control);
    Surface(const Parcel& data, const sp<IBinder>& ref);
    ~Surface();


+13 −8
Original line number Diff line number Diff line
@@ -334,13 +334,13 @@ Surface::Surface(const sp<SurfaceControl>& surface)
    init();
}

Surface::Surface(const Parcel& parcel)
Surface::Surface(const Parcel& parcel, const sp<IBinder>& ref)
    : mBufferMapper(GraphicBufferMapper::get()),
      mClient(SurfaceClient::getInstance()),
      mSharedBufferClient(NULL),
      mInitCheck(NO_INIT)
{
    mSurface    = interface_cast<ISurface>(parcel.readStrongBinder());
    mSurface    = interface_cast<ISurface>(ref);
    mIdentity   = parcel.readInt32();
    mWidth      = parcel.readInt32();
    mHeight     = parcel.readInt32();
@@ -349,6 +349,17 @@ Surface::Surface(const Parcel& parcel)
    init();
}

sp<Surface> Surface::readFromParcel(
        const Parcel& data, const sp<Surface>& other)
{
    sp<Surface> result(other);
    sp<IBinder> binder(data.readStrongBinder());
    if (other==0 || binder != other->mSurface->asBinder()) {
        result = new Surface(data, binder);
    }
    return result;
}

void Surface::init()
{
    android_native_window_t::setSwapInterval  = setSwapInterval;
@@ -443,12 +454,6 @@ status_t Surface::validate() const
    return NO_ERROR;
}

bool Surface::isSameSurface(const sp<Surface>& lhs, const sp<Surface>& rhs) {
    if (lhs == 0 || rhs == 0)
        return false;
    return lhs->mSurface->asBinder() == rhs->mSurface->asBinder();
}

sp<ISurface> Surface::getISurface() const {
    return mSurface;
}