OSDN Git Service

gui: CpuConsumer::lockNextBuffer change return code when too many bufs acquired
authorIgor Murashkin <iam@google.com>
Thu, 15 Aug 2013 01:49:12 +0000 (18:49 -0700)
committerIgor Murashkin <iam@google.com>
Thu, 15 Aug 2013 03:17:17 +0000 (20:17 -0700)
- Return NOT_ENOUGH_DATA instead of INVALID_OPERATION when too many
  buffers have already been locked.
- INVALID_OPERATION is nominally used when something irrecoverable happens,
  but in this case the client just needs to call unlockBuffer to go back into a
  good state.

Bug: 10333400
Change-Id: I3a034d77de85741429f832a90eedd670afa1dc94

include/gui/CpuConsumer.h
libs/gui/CpuConsumer.cpp

index 9290676..6f4c2ec 100644 (file)
@@ -90,7 +90,7 @@ class CpuConsumer : public ConsumerBase
     // Gets the next graphics buffer from the producer and locks it for CPU use,
     // filling out the passed-in locked buffer structure with the native pointer
     // and metadata. Returns BAD_VALUE if no new buffer is available, and
-    // INVALID_OPERATION if the maximum number of buffers is already locked.
+    // NOT_ENOUGH_DATA if the maximum number of buffers is already locked.
     //
     // Only a fixed number of buffers can be locked at a time, determined by the
     // construction-time maxLockedBuffers parameter. If INVALID_OPERATION is
index 3db46bc..bff55d1 100644 (file)
@@ -72,7 +72,9 @@ status_t CpuConsumer::lockNextBuffer(LockedBuffer *nativeBuffer) {
 
     if (!nativeBuffer) return BAD_VALUE;
     if (mCurrentLockedBuffers == mMaxLockedBuffers) {
-        return INVALID_OPERATION;
+        CC_LOGW("Max buffers have been locked (%d), cannot lock anymore.",
+                mMaxLockedBuffers);
+        return NOT_ENOUGH_DATA;
     }
 
     BufferQueue::BufferItem b;