get rid of android_native_buffer_t::getHandle() and replace it with an handle field
this abstraction was not necessary. things are easier now.
diff --git a/include/ui/FramebufferNativeWindow.h b/include/ui/FramebufferNativeWindow.h
index 4b281db..0db245a 100644
--- a/include/ui/FramebufferNativeWindow.h
+++ b/include/ui/FramebufferNativeWindow.h
@@ -50,17 +50,10 @@
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;
- }
};
// ---------------------------------------------------------------------------
diff --git a/include/ui/Surface.h b/include/ui/Surface.h
index ce50719..e9bb1b3 100644
--- a/include/ui/Surface.h
+++ b/include/ui/Surface.h
@@ -50,10 +50,6 @@
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 @@
SurfaceBuffer();
SurfaceBuffer(const Parcel& reply);
virtual ~SurfaceBuffer();
- buffer_handle_t handle;
bool mOwner;
inline const BufferMapper& getBufferMapper() const { return mBufferMapper; }
@@ -80,9 +75,6 @@
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;
};
diff --git a/libs/ui/Surface.cpp b/libs/ui/Surface.cpp
index 5f2138e..782eac4 100644
--- a/libs/ui/Surface.cpp
+++ b/libs/ui/Surface.cpp
@@ -52,18 +52,18 @@
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 @@
format = data.readInt32();
usage = data.readInt32();
handle = data.readNativeHandle();
- android_native_buffer_t::getHandle = getHandle;
}
SurfaceBuffer::~SurfaceBuffer()
@@ -83,13 +82,6 @@
}
}
-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::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 @@
// 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 @@
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;
diff --git a/opengl/include/EGL/android_natives.h b/opengl/include/EGL/android_natives.h
index 8db2bb3..b8465d5 100644
--- a/opengl/include/EGL/android_natives.h
+++ b/opengl/include/EGL/android_natives.h
@@ -157,13 +157,12 @@
int stride;
int format;
int usage;
+
+ void* reserved[2];
- void* reserved[3];
+ buffer_handle_t handle;
- int (*getHandle)(struct android_native_buffer_t const * base,
- buffer_handle_t* handle);
-
- void* reserved_proc[7];
+ void* reserved_proc[8];
};
diff --git a/opengl/libagl/egl.cpp b/opengl/libagl/egl.cpp
index 67dfd3e..720ba0b 100644
--- a/opengl/libagl/egl.cpp
+++ b/opengl/libagl/egl.cpp
@@ -274,26 +274,14 @@
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 @@
#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) {
diff --git a/opengl/libagl/texture.cpp b/opengl/libagl/texture.cpp
index 9bcbfdd..1189643 100644
--- a/opengl/libagl/texture.cpp
+++ b/opengl/libagl/texture.cpp
@@ -139,10 +139,9 @@
gralloc_module_t const* module =
reinterpret_cast<gralloc_module_t const*>(pModule);
- buffer_handle_t bufferHandle;
- native_buffer->getHandle(native_buffer, &bufferHandle);
+
void* vaddr;
- int err = module->lock(module, bufferHandle,
+ int err = module->lock(module, native_buffer->handle,
GRALLOC_USAGE_SW_READ_OFTEN,
0, 0, native_buffer->width, native_buffer->height,
&vaddr);
@@ -168,9 +167,8 @@
gralloc_module_t const* module =
reinterpret_cast<gralloc_module_t const*>(pModule);
- buffer_handle_t bufferHandle;
- native_buffer->getHandle(native_buffer, &bufferHandle);
- module->unlock(module, bufferHandle);
+
+ module->unlock(module, native_buffer->handle);
u.texture->setImageBits(NULL);
c->rasterizer.procs.bindTexture(c, &(u.texture->surface));
}
@@ -1547,13 +1545,10 @@
*/
#ifdef LIBAGL_USE_GRALLOC_COPYBITS
tex->copybits_fd = -1;
- buffer_handle_t handle;
- if (native_buffer->getHandle(native_buffer, &handle) == 0) {
- private_handle_t* hand;
- if ((hand = private_handle_t::dynamicCast(handle)) != NULL) {
- if (hand->usesPhysicallyContiguousMemory()) {
- tex->copybits_fd = hand->fd;
- }
+ private_handle_t* hand;
+ if ((hand = private_handle_t::dynamicCast(native_buffer->handle)) != NULL) {
+ if (hand->usesPhysicallyContiguousMemory()) {
+ tex->copybits_fd = hand->fd;
}
}
#endif // LIBAGL_USE_GRALLOC_COPYBITS