summaryrefslogtreecommitdiffstats
path: root/services/surfaceflinger
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2010-08-25 12:24:02 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-08-25 12:24:02 -0700
commitcb3be1b4d9fe6667479f9d6acfd37aa8b73fae61 (patch)
tree39ca88e794c6ce87cf122754812143f3bd7e6237 /services/surfaceflinger
parent16376afb8d771a497d0474d59e93a5f23b3aec50 (diff)
parent468204124e95bbf74ae8cc000318ade29e311be6 (diff)
downloadframeworks_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.cpp16
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
}
}
}