diff options
author | Mathias Agopian <mathias@google.com> | 2009-11-04 13:46:42 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2009-11-04 13:46:42 -0800 |
commit | c92ed49ba63209c2f1186106c2a7b98ce94e87cf (patch) | |
tree | d3523565c9dff094e7f0f4752ac34df655cd4e15 /opengl | |
parent | a7dd26bf618236b0fb248b45990d4cd27f3eb99c (diff) | |
parent | 4360624241251035534a46449e23be38d9e6b03c (diff) | |
download | frameworks_base-c92ed49ba63209c2f1186106c2a7b98ce94e87cf.zip frameworks_base-c92ed49ba63209c2f1186106c2a7b98ce94e87cf.tar.gz frameworks_base-c92ed49ba63209c2f1186106c2a7b98ce94e87cf.tar.bz2 |
am 43606242: am 8e5e44e9: am 9a54d7dd: Merge change Ibbf945f3 into eclair
Merge commit '4360624241251035534a46449e23be38d9e6b03c'
* commit '4360624241251035534a46449e23be38d9e6b03c':
fix [2236832] software OpenGL ES driver doesn't work on sholes
Diffstat (limited to 'opengl')
-rw-r--r-- | opengl/libagl/egl.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/opengl/libagl/egl.cpp b/opengl/libagl/egl.cpp index 80ddc02..b522e11 100644 --- a/opengl/libagl/egl.cpp +++ b/opengl/libagl/egl.cpp @@ -40,6 +40,7 @@ #include <pixelflinger/pixelflinger.h> #include <private/ui/android_natives_priv.h> +#include <private/ui/sw_gralloc_handle.h> #include <hardware/copybit.h> @@ -449,15 +450,26 @@ 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 = module->lock(module, buf->handle, - usage, 0, 0, buf->width, buf->height, vaddr); + int err; + if (sw_gralloc_handle_t::validate(buf->handle) < 0) { + err = module->lock(module, buf->handle, + usage, 0, 0, buf->width, buf->height, vaddr); + } else { + sw_gralloc_handle_t const* hnd = + reinterpret_cast<sw_gralloc_handle_t const*>(buf->handle); + *vaddr = (void*)hnd->base; + err = NO_ERROR; + } return err; } status_t egl_window_surface_v2_t::unlock(android_native_buffer_t* buf) { if (!buf) return BAD_VALUE; - int err = module->unlock(module, buf->handle); + int err = NO_ERROR; + if (sw_gralloc_handle_t::validate(buf->handle) < 0) { + err = module->unlock(module, buf->handle); + } return err; } |