summaryrefslogtreecommitdiffstats
path: root/libs/surfaceflinger_client
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2011-01-14 19:27:32 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-01-14 19:27:32 -0800
commita7393dd66f0127c8acdd5f8928b0c2d0de602275 (patch)
tree874fa7e64d5c1bc8755ddf88b8aafe1d2171ed69 /libs/surfaceflinger_client
parente7df0ddee486f4705b17b4d8ed57ddbeb8b71943 (diff)
parentafc724b907336c043a38487fb5620074c9777d45 (diff)
downloadframeworks_base-a7393dd66f0127c8acdd5f8928b0c2d0de602275.zip
frameworks_base-a7393dd66f0127c8acdd5f8928b0c2d0de602275.tar.gz
frameworks_base-a7393dd66f0127c8acdd5f8928b0c2d0de602275.tar.bz2
Merge "Fix error reporting in Surface::cancelBuffer()" into honeycomb
Diffstat (limited to 'libs/surfaceflinger_client')
-rw-r--r--libs/surfaceflinger_client/Surface.cpp29
1 files changed, 11 insertions, 18 deletions
diff --git a/libs/surfaceflinger_client/Surface.cpp b/libs/surfaceflinger_client/Surface.cpp
index aa0c2e8..e21bab7 100644
--- a/libs/surfaceflinger_client/Surface.cpp
+++ b/libs/surfaceflinger_client/Surface.cpp
@@ -466,7 +466,7 @@ bool Surface::isValid() {
return mInitCheck == NO_ERROR;
}
-status_t Surface::validate() const
+status_t Surface::validate(bool inCancelBuffer) const
{
// check that we initialized ourself properly
if (mInitCheck != NO_ERROR) {
@@ -476,15 +476,6 @@ status_t Surface::validate() const
// verify the identity of this surface
uint32_t identity = mSharedBufferClient->getIdentity();
-
- // this is a bit of a (temporary) special case, identity==0 means that
- // no operation are allowed from the client (eg: dequeue/queue), this
- // is used with PUSH_BUFFER surfaces for instance
- if (identity == 0) {
- LOGE("[Surface] invalid operation (identity=%u)", mIdentity);
- return INVALID_OPERATION;
- }
-
if (mIdentity != identity) {
LOGE("[Surface] using an invalid surface, "
"identity=%u should be %d",
@@ -492,17 +483,19 @@ status_t Surface::validate() const
CallStack stack;
stack.update();
stack.dump("Surface");
- return NO_INIT;
+ return BAD_INDEX;
}
// check the surface didn't become invalid
status_t err = mSharedBufferClient->getStatus();
if (err != NO_ERROR) {
- LOGE("surface (identity=%u) is invalid, err=%d (%s)",
- mIdentity, err, strerror(-err));
- CallStack stack;
- stack.update();
- stack.dump("Surface");
+ if (!inCancelBuffer) {
+ LOGE("surface (identity=%u) is invalid, err=%d (%s)",
+ mIdentity, err, strerror(-err));
+ CallStack stack;
+ stack.update();
+ stack.dump("Surface");
+ }
return err;
}
@@ -633,12 +626,12 @@ int Surface::dequeueBuffer(android_native_buffer_t** buffer)
int Surface::cancelBuffer(android_native_buffer_t* buffer)
{
- status_t err = validate();
+ status_t err = validate(true);
switch (err) {
case NO_ERROR:
// no error, common case
break;
- case INVALID_OPERATION:
+ case BAD_INDEX:
// legitimate errors here
return err;
default: