summaryrefslogtreecommitdiffstats
path: root/opengl
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2009-11-04 13:46:42 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2009-11-04 13:46:42 -0800
commitc92ed49ba63209c2f1186106c2a7b98ce94e87cf (patch)
treed3523565c9dff094e7f0f4752ac34df655cd4e15 /opengl
parenta7dd26bf618236b0fb248b45990d4cd27f3eb99c (diff)
parent4360624241251035534a46449e23be38d9e6b03c (diff)
downloadframeworks_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.cpp18
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;
}