Merge "Fix error reporting in Surface::cancelBuffer()" into honeycomb
This commit is contained in:
committed by
Android (Google) Code Review
commit
a7393dd66f
@@ -233,7 +233,7 @@ private:
|
|||||||
* private stuff...
|
* private stuff...
|
||||||
*/
|
*/
|
||||||
void init();
|
void init();
|
||||||
status_t validate() const;
|
status_t validate(bool inCancelBuffer = false) const;
|
||||||
sp<ISurface> getISurface() const;
|
sp<ISurface> getISurface() const;
|
||||||
|
|
||||||
inline const GraphicBufferMapper& getBufferMapper() const { return mBufferMapper; }
|
inline const GraphicBufferMapper& getBufferMapper() const { return mBufferMapper; }
|
||||||
|
|||||||
@@ -466,7 +466,7 @@ bool Surface::isValid() {
|
|||||||
return mInitCheck == NO_ERROR;
|
return mInitCheck == NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t Surface::validate() const
|
status_t Surface::validate(bool inCancelBuffer) const
|
||||||
{
|
{
|
||||||
// check that we initialized ourself properly
|
// check that we initialized ourself properly
|
||||||
if (mInitCheck != NO_ERROR) {
|
if (mInitCheck != NO_ERROR) {
|
||||||
@@ -476,15 +476,6 @@ status_t Surface::validate() const
|
|||||||
|
|
||||||
// verify the identity of this surface
|
// verify the identity of this surface
|
||||||
uint32_t identity = mSharedBufferClient->getIdentity();
|
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) {
|
if (mIdentity != identity) {
|
||||||
LOGE("[Surface] using an invalid surface, "
|
LOGE("[Surface] using an invalid surface, "
|
||||||
"identity=%u should be %d",
|
"identity=%u should be %d",
|
||||||
@@ -492,17 +483,19 @@ status_t Surface::validate() const
|
|||||||
CallStack stack;
|
CallStack stack;
|
||||||
stack.update();
|
stack.update();
|
||||||
stack.dump("Surface");
|
stack.dump("Surface");
|
||||||
return NO_INIT;
|
return BAD_INDEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
// check the surface didn't become invalid
|
// check the surface didn't become invalid
|
||||||
status_t err = mSharedBufferClient->getStatus();
|
status_t err = mSharedBufferClient->getStatus();
|
||||||
if (err != NO_ERROR) {
|
if (err != NO_ERROR) {
|
||||||
LOGE("surface (identity=%u) is invalid, err=%d (%s)",
|
if (!inCancelBuffer) {
|
||||||
mIdentity, err, strerror(-err));
|
LOGE("surface (identity=%u) is invalid, err=%d (%s)",
|
||||||
CallStack stack;
|
mIdentity, err, strerror(-err));
|
||||||
stack.update();
|
CallStack stack;
|
||||||
stack.dump("Surface");
|
stack.update();
|
||||||
|
stack.dump("Surface");
|
||||||
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -633,12 +626,12 @@ int Surface::dequeueBuffer(android_native_buffer_t** buffer)
|
|||||||
|
|
||||||
int Surface::cancelBuffer(android_native_buffer_t* buffer)
|
int Surface::cancelBuffer(android_native_buffer_t* buffer)
|
||||||
{
|
{
|
||||||
status_t err = validate();
|
status_t err = validate(true);
|
||||||
switch (err) {
|
switch (err) {
|
||||||
case NO_ERROR:
|
case NO_ERROR:
|
||||||
// no error, common case
|
// no error, common case
|
||||||
break;
|
break;
|
||||||
case INVALID_OPERATION:
|
case BAD_INDEX:
|
||||||
// legitimate errors here
|
// legitimate errors here
|
||||||
return err;
|
return err;
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user