diff options
author | Mathias Agopian <mathias@google.com> | 2010-08-25 12:24:02 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-08-25 12:24:02 -0700 |
commit | cb3be1b4d9fe6667479f9d6acfd37aa8b73fae61 (patch) | |
tree | 39ca88e794c6ce87cf122754812143f3bd7e6237 /services/surfaceflinger | |
parent | 16376afb8d771a497d0474d59e93a5f23b3aec50 (diff) | |
parent | 468204124e95bbf74ae8cc000318ade29e311be6 (diff) | |
download | frameworks_base-cb3be1b4d9fe6667479f9d6acfd37aa8b73fae61.zip frameworks_base-cb3be1b4d9fe6667479f9d6acfd37aa8b73fae61.tar.gz frameworks_base-cb3be1b4d9fe6667479f9d6acfd37aa8b73fae61.tar.bz2 |
am 46820412: am 8eb16af2: Merge "don\'t try to lock a buffer that wasn\'t allocated with SW usage bits" into gingerbread
Merge commit '468204124e95bbf74ae8cc000318ade29e311be6'
* commit '468204124e95bbf74ae8cc000318ade29e311be6':
don't try to lock a buffer that wasn't allocated with SW usage bits
Diffstat (limited to 'services/surfaceflinger')
-rw-r--r-- | services/surfaceflinger/Layer.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index 212c08b..7f7ef60 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -253,12 +253,16 @@ void Layer::reloadTexture(const Region& dirty) } else { slowpath: GGLSurface t; - status_t res = buffer->lock(&t, GRALLOC_USAGE_SW_READ_OFTEN); - LOGE_IF(res, "error %d (%s) locking buffer %p", - res, strerror(res), buffer.get()); - if (res == NO_ERROR) { - mBufferManager.loadTexture(dirty, t); - buffer->unlock(); + if (buffer->usage & GRALLOC_USAGE_SW_READ_MASK) { + status_t res = buffer->lock(&t, GRALLOC_USAGE_SW_READ_OFTEN); + LOGE_IF(res, "error %d (%s) locking buffer %p", + res, strerror(res), buffer.get()); + if (res == NO_ERROR) { + mBufferManager.loadTexture(dirty, t); + buffer->unlock(); + } + } else { + // we can't do anything } } } |