summaryrefslogtreecommitdiffstats
path: root/libs/surfaceflinger/LayerBuffer.cpp
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2009-05-04 14:17:04 -0700
committerMathias Agopian <mathias@google.com>2009-05-04 14:17:04 -0700
commit0926f50664c739eaee60341f8e8c694dc9a4f3eb (patch)
tree642597de2cc52f7636ae74f1a88f3706e3e54a4a /libs/surfaceflinger/LayerBuffer.cpp
parent7be3e5d2d8101a8f5e12bbdf650431a734f88eba (diff)
downloadframeworks_native-0926f50664c739eaee60341f8e8c694dc9a4f3eb.zip
frameworks_native-0926f50664c739eaee60341f8e8c694dc9a4f3eb.tar.gz
frameworks_native-0926f50664c739eaee60341f8e8c694dc9a4f3eb.tar.bz2
update surfaceflinger, libui and libagl to the new gralloc api
- Currently the lock/unlock path is naive and is done for each drawing operation (glDrawElements and glDrawArrays). this should be improved eventually. - factor all the lock/unlock code in SurfaceBuffer. - fixed "showupdate" so it works even when we don't have preserving eglSwapBuffers(). - improved the situation with the dirty-region and fixed a problem that caused GL apps to not update. - make use of LightRefBase() where needed, instead of duplicating its implementation - add LightRefBase::getStrongCount() - renamed EGLNativeWindowSurface.cpp to FramebufferNativeWindow.cpp - disabled copybits test, since it clashes with the new gralloc api - Camera/Video will be fixed later when we rework the overlay apis
Diffstat (limited to 'libs/surfaceflinger/LayerBuffer.cpp')
-rw-r--r--libs/surfaceflinger/LayerBuffer.cpp38
1 files changed, 19 insertions, 19 deletions
diff --git a/libs/surfaceflinger/LayerBuffer.cpp b/libs/surfaceflinger/LayerBuffer.cpp
index 9339b87..8be91c9 100644
--- a/libs/surfaceflinger/LayerBuffer.cpp
+++ b/libs/surfaceflinger/LayerBuffer.cpp
@@ -380,37 +380,37 @@ bool LayerBuffer::BufferSource::transformed() const
void LayerBuffer::BufferSource::onDraw(const Region& clip) const
{
- sp<Buffer> buffer(getBuffer());
+ // FIXME: we should get a native buffer here
+ /*
+ sp<Buffer> ourBbuffer(getBuffer());
if (UNLIKELY(buffer == 0)) {
// nothing to do, we don't have a buffer
mLayer.clearWithOpenGL(clip);
return;
}
- status_t err = NO_ERROR;
- NativeBuffer src(buffer->getBuffer());
- const Rect& transformedBounds = mLayer.getTransformedBounds();
-
// FIXME: We should model this after the overlay stuff
-
if (UNLIKELY(mTextureName == -1LU)) {
mTextureName = mLayer.createTexture();
}
- GLuint w = 0;
- GLuint h = 0;
- GGLSurface t;
- t.version = sizeof(GGLSurface);
- t.width = src.crop.r;
- t.height = src.crop.b;
- t.stride = src.img.w;
- t.vstride= src.img.h;
- t.format = src.img.format;
- t.data = (GGLubyte*)(intptr_t(src.img.base) + src.img.offset);
- const Region dirty(Rect(t.width, t.height));
// FIXME: Use EGLImage extension for this
- mLayer.loadTexture(dirty, mTextureName, t, w, h);
- mLayer.drawWithOpenGL(clip, mTextureName, t, mBufferHeap.transform);
+
+
+
+ GGLSurface t;
+ status_t res = buffer->lock(&t, GRALLOC_USAGE_SW_READ_RARELY);
+ if (res == NO_ERROR) {
+ GLuint w = 0;
+ GLuint h = 0;
+ const Region dirty(Rect(buffer->width, buffer->height));
+ mLayer.loadTexture(dirty, mTextureName, t, w, h);
+ buffer->unlock();
+ }
+ if (res == NO_ERROR) {
+ mLayer.drawWithOpenGL(clip, mTextureName, buffer, mBufferHeap.transform);
+ }
+ */
}