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

Commit f1519eeb authored by Sergio Giro's avatar Sergio Giro Committed by Android Git Automerger
Browse files

am 64b83133: Merge "Remove usage of SharedBuffer"

* commit '64b83133':
  Remove usage of SharedBuffer
parents c6a6c6de 64b83133
Loading
Loading
Loading
Loading
+0 −5
Original line number Original line Diff line number Diff line
@@ -130,11 +130,6 @@ public:
    // Region object.
    // Region object.
    Rect const* getArray(size_t* count) const;
    Rect const* getArray(size_t* count) const;


    // returns a SharedBuffer as well as the number of rects.
    // ownership is transfered to the caller.
    // the caller must call SharedBuffer::release() to free the memory.
    SharedBuffer const* getSharedBuffer(size_t* count) const;

    /* no user serviceable parts here... */
    /* no user serviceable parts here... */


            // add a rectangle to the internal list. This rectangle must
            // add a rectangle to the internal list. This rectangle must
+0 −12
Original line number Original line Diff line number Diff line
@@ -835,18 +835,6 @@ Rect const* Region::getArray(size_t* count) const {
    return begin();
    return begin();
}
}


SharedBuffer const* Region::getSharedBuffer(size_t* count) const {
    // We can get to the SharedBuffer of a Vector<Rect> because Rect has
    // a trivial destructor.
    SharedBuffer const* sb = SharedBuffer::bufferFromData(mStorage.array());
    if (count) {
        size_t numRects = isRect() ? 1 : mStorage.size() - 1;
        count[0] = numRects;
    }
    sb->acquire();
    return sb;
}

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


void Region::dump(String8& out, const char* what, uint32_t /* flags */) const
void Region::dump(String8& out, const char* what, uint32_t /* flags */) const
+13 −28
Original line number Original line Diff line number Diff line
@@ -1017,12 +1017,10 @@ public:
        }
        }
    }
    }
    virtual void setVisibleRegionScreen(const Region& reg) {
    virtual void setVisibleRegionScreen(const Region& reg) {
        // Region::getSharedBuffer creates a reference to the underlying
        // SharedBuffer of this Region, this reference is freed
        // in onDisplayed()
        hwc_region_t& visibleRegion = getLayer()->visibleRegionScreen;
        hwc_region_t& visibleRegion = getLayer()->visibleRegionScreen;
        SharedBuffer const* sb = reg.getSharedBuffer(&visibleRegion.numRects);
        mVisibleRegion = reg;
        visibleRegion.rects = reinterpret_cast<hwc_rect_t const *>(sb->data());
        visibleRegion.rects = reinterpret_cast<hwc_rect_t const *>(
                mVisibleRegion.getArray(&visibleRegion.numRects));
    }
    }
    virtual void setSurfaceDamage(const Region& reg) {
    virtual void setSurfaceDamage(const Region& reg) {
        if (!hwcHasApiVersion(mHwc, HWC_DEVICE_API_VERSION_1_5)) {
        if (!hwcHasApiVersion(mHwc, HWC_DEVICE_API_VERSION_1_5)) {
@@ -1036,8 +1034,9 @@ public:
            surfaceDamage.rects = NULL;
            surfaceDamage.rects = NULL;
            return;
            return;
        }
        }
        SharedBuffer const* sb = reg.getSharedBuffer(&surfaceDamage.numRects);
        mSurfaceDamage = reg;
        surfaceDamage.rects = reinterpret_cast<hwc_rect_t const *>(sb->data());
        surfaceDamage.rects = reinterpret_cast<hwc_rect_t const *>(
                mSurfaceDamage.getArray(&surfaceDamage.numRects));
    }
    }
    virtual void setSidebandStream(const sp<NativeHandle>& stream) {
    virtual void setSidebandStream(const sp<NativeHandle>& stream) {
        ALOG_ASSERT(stream->handle() != NULL);
        ALOG_ASSERT(stream->handle() != NULL);
@@ -1059,29 +1058,15 @@ public:
        }
        }
    }
    }
    virtual void onDisplayed() {
    virtual void onDisplayed() {
        hwc_region_t& visibleRegion = getLayer()->visibleRegionScreen;
        SharedBuffer const* sb = SharedBuffer::bufferFromData(visibleRegion.rects);
        if (sb) {
            sb->release();
            // not technically needed but safer
            visibleRegion.numRects = 0;
            visibleRegion.rects = NULL;
        }

        getLayer()->acquireFenceFd = -1;
        getLayer()->acquireFenceFd = -1;

        if (!hwcHasApiVersion(mHwc, HWC_DEVICE_API_VERSION_1_5)) {
            return;
    }
    }


        hwc_region_t& surfaceDamage = getLayer()->surfaceDamage;
protected:
        sb = SharedBuffer::bufferFromData(surfaceDamage.rects);
    // We need to hold "copies" of these for memory management purposes. The
        if (sb) {
    // actual hwc_layer_1_t holds pointers to the memory within. Vector<>
            sb->release();
    // internally doesn't copy the memory unless one of the copies is modified.
            surfaceDamage.numRects = 0;
    Region mVisibleRegion;
            surfaceDamage.rects = NULL;
    Region mSurfaceDamage;
        }
    }
};
};


/*
/*