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

Commit 21c59d00 authored by Mathias Agopian's avatar Mathias Agopian
Browse files

get rid of android_native_buffer_t::getHandle() and replace it with an handle field

this abstraction was not necessary. things are easier now.
parent e71212ba
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -50,17 +50,10 @@ public:
        android_native_buffer_t::height = h;
        android_native_buffer_t::format = f;
        android_native_buffer_t::usage  = u;
        android_native_buffer_t::getHandle = getHandle;
    }
public:
    buffer_handle_t handle;
private:
    friend class LightRefBase<NativeBuffer>;    
    ~NativeBuffer() { }; // this class cannot be overloaded
    static int getHandle(android_native_buffer_t const * base, buffer_handle_t* handle) {
        *handle = getSelf(base)->handle;
        return 0;
    }
};

// ---------------------------------------------------------------------------
+0 −8
Original line number Diff line number Diff line
@@ -50,10 +50,6 @@ class SurfaceBuffer
        LightRefBase<SurfaceBuffer> >
{
public:
    buffer_handle_t getHandle() const {
        return handle;
    }
    
    status_t lock(uint32_t usage, void** vaddr);
    status_t lock(uint32_t usage, const Rect& rect, void** vaddr);
    status_t unlock();
@@ -62,7 +58,6 @@ protected:
            SurfaceBuffer();
            SurfaceBuffer(const Parcel& reply);
    virtual ~SurfaceBuffer();
    buffer_handle_t handle;
    bool mOwner;

    inline const BufferMapper& getBufferMapper() const { return mBufferMapper; }
@@ -80,9 +75,6 @@ private:
    static status_t writeToParcel(Parcel* reply, 
            android_native_buffer_t const* buffer);
    
    static int getHandle(android_native_buffer_t const * base, 
            buffer_handle_t* handle);
    
    BufferMapper& mBufferMapper;
};

+7 −20
Original line number Diff line number Diff line
@@ -52,18 +52,18 @@ namespace android {
ANDROID_SINGLETON_STATIC_INSTANCE( SurfaceBuffer )

SurfaceBuffer::SurfaceBuffer() 
    : BASE(), handle(0), mOwner(false), mBufferMapper(BufferMapper::get())
    : BASE(), mOwner(false), mBufferMapper(BufferMapper::get())
{
    width  = 
    height = 
    stride = 
    format = 
    usage  = 0;
    android_native_buffer_t::getHandle = getHandle;
    handle = NULL;
}

SurfaceBuffer::SurfaceBuffer(const Parcel& data) 
    : BASE(), handle(0), mOwner(true), mBufferMapper(BufferMapper::get())
    : BASE(), mOwner(true), mBufferMapper(BufferMapper::get())
{
    // we own the handle in this case
    width  = data.readInt32();
@@ -72,7 +72,6 @@ SurfaceBuffer::SurfaceBuffer(const Parcel& data)
    format = data.readInt32();
    usage  = data.readInt32();
    handle = data.readNativeHandle();
    android_native_buffer_t::getHandle = getHandle;
}

SurfaceBuffer::~SurfaceBuffer()
@@ -83,13 +82,6 @@ SurfaceBuffer::~SurfaceBuffer()
    }
}

int SurfaceBuffer::getHandle(android_native_buffer_t const * base, 
        buffer_handle_t* handle)
{
    *handle = getSelf(base)->handle;
    return 0;
}

status_t SurfaceBuffer::lock(uint32_t usage, void** vaddr)
{
    const Rect lockBounds(width, height);
@@ -112,17 +104,12 @@ status_t SurfaceBuffer::unlock()
status_t SurfaceBuffer::writeToParcel(Parcel* reply, 
        android_native_buffer_t const* buffer)
{
    buffer_handle_t handle;
    status_t err = buffer->getHandle(buffer, &handle);
    if (err < 0) {
        return err;
    }
    reply->writeInt32(buffer->width);
    reply->writeInt32(buffer->height);
    reply->writeInt32(buffer->stride);
    reply->writeInt32(buffer->format);
    reply->writeInt32(buffer->usage);
    reply->writeNativeHandle(handle);
    reply->writeNativeHandle(buffer->handle);
    return NO_ERROR;
}

@@ -419,7 +406,7 @@ Surface::~Surface()
    // its buffers in this process.
    for (int i=0 ; i<2 ; i++) {
        if (mBuffers[i] != 0) {
            getBufferMapper().unregisterBuffer(mBuffers[i]->getHandle());
            getBufferMapper().unregisterBuffer(mBuffers[i]->handle);
        }
    }

@@ -689,10 +676,10 @@ status_t Surface::getBufferLocked(int index)
    if (buffer != 0) {
        sp<SurfaceBuffer>& currentBuffer(mBuffers[index]);
        if (currentBuffer != 0) {
            getBufferMapper().unregisterBuffer(currentBuffer->getHandle());
            getBufferMapper().unregisterBuffer(currentBuffer->handle);
            currentBuffer.clear();
        }
        err = getBufferMapper().registerBuffer(buffer->getHandle());
        err = getBufferMapper().registerBuffer(buffer->handle);
        LOGW_IF(err, "map(...) failed %d (%s)", err, strerror(-err));
        if (err == NO_ERROR) {
            currentBuffer = buffer;
+4 −5
Original line number Diff line number Diff line
@@ -158,12 +158,11 @@ struct android_native_buffer_t
    int format;
    int usage;
    
    void* reserved[3];
    void* reserved[2];

    int (*getHandle)(struct android_native_buffer_t const * base,
            buffer_handle_t* handle);
    buffer_handle_t handle;

    void* reserved_proc[7];
    void* reserved_proc[8];
};


+3 −16
Original line number Diff line number Diff line
@@ -274,26 +274,14 @@ void egl_window_surface_v2_t::disconnect()
status_t egl_window_surface_v2_t::lock(
        android_native_buffer_t* buf, int usage, void** vaddr)
{
    int err;
    buffer_handle_t bufferHandle;
    err = buf->getHandle(buf, &bufferHandle);
    if (err < 0)
        return err;

    err = module->lock(module, bufferHandle, 
    int err = module->lock(module, buf->handle, 
            usage, 0, 0, buf->width, buf->height, vaddr);
    return err;
}

status_t egl_window_surface_v2_t::unlock(android_native_buffer_t* buf)
{
    int err;
    buffer_handle_t bufferHandle;
    err = buf->getHandle(buf, &bufferHandle);
    if (err < 0)
        return err;

    err = module->unlock(module, bufferHandle);
    int err = module->unlock(module, buf->handle);
    return err;
}

@@ -379,8 +367,7 @@ EGLBoolean egl_window_surface_v2_t::bindDrawSurface(ogles_context_t* gl)
#ifdef LIBAGL_USE_GRALLOC_COPYBITS
    gl->copybits.drawSurfaceFd = -1;
    if (supportedCopybitsDestinationFormat(buffer.format)) {
        buffer_handle_t handle;
        this->buffer->getHandle(this->buffer, &handle);
        buffer_handle_t handle = this->buffer->handle;
        if (handle != NULL) {
            private_handle_t* hand = private_handle_t::dynamicCast(handle);
            if (hand != NULL) {
Loading