am e7b2845d: Merge "DO NOT MERGE return an error when Surface::lock() is called while the surface is already locked." into eclair-mr2

Merge commit 'e7b2845d685a583e8e84de369b6acfa1bebeabf4' into eclair-mr2-plus-aosp

* commit 'e7b2845d685a583e8e84de369b6acfa1bebeabf4':
  DO NOT MERGE
This commit is contained in:
Patrick Scott
2010-01-26 10:11:30 -08:00
committed by Android Git Automerger

View File

@@ -607,13 +607,21 @@ status_t Surface::lock(SurfaceInfo* info, bool blocking) {
status_t Surface::lock(SurfaceInfo* other, Region* dirtyIn, bool blocking) status_t Surface::lock(SurfaceInfo* other, Region* dirtyIn, bool blocking)
{ {
if (mApiLock.tryLock() != NO_ERROR) { if (mApiLock.tryLock() != NO_ERROR) {
LOGE("calling Surface::lock() from different threads!"); LOGE("calling Surface::lock from different threads!");
CallStack stack; CallStack stack;
stack.update(); stack.update();
stack.dump("Surface::lock called from different threads"); stack.dump("Surface::lock called from different threads");
return WOULD_BLOCK; return WOULD_BLOCK;
} }
/* Here we're holding mApiLock */
if (mLockedBuffer != 0) {
LOGE("Surface::lock failed, already locked");
mApiLock.unlock();
return INVALID_OPERATION;
}
// we're intending to do software rendering from this point // we're intending to do software rendering from this point
setUsage(GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_SW_WRITE_OFTEN); setUsage(GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_SW_WRITE_OFTEN);
@@ -682,8 +690,8 @@ status_t Surface::lock(SurfaceInfo* other, Region* dirtyIn, bool blocking)
status_t Surface::unlockAndPost() status_t Surface::unlockAndPost()
{ {
if (mLockedBuffer == 0) { if (mLockedBuffer == 0) {
LOGE("unlockAndPost failed, no locked buffer"); LOGE("Surface::unlockAndPost failed, no locked buffer");
return BAD_VALUE; return INVALID_OPERATION;
} }
status_t err = mLockedBuffer->unlock(); status_t err = mLockedBuffer->unlock();