Camera: Mark stream as ABANDONED if dequeueBuffer returns DEAD_OBJECT

When consumer surface is destroyed, dequeueBuffer may return
DEAD_OBJECT.

We need to treat this condition as ABANDONED so that camera service
stops repeating request. Otherwise, we may run into infinite loop.

Test: Camera CTS
Bug: 111384143
Bug: 111381452
Change-Id: If3348119521e9805085321c7f20abd7cc7f5dd43
gugelfrei
Shuzhen Wang 6 years ago committed by Eino-Ville Talvala
parent 51d361e77c
commit d9ef0e085d

@ -564,7 +564,7 @@ status_t Camera3OutputStream::getBufferLockedCommon(ANativeWindowBuffer** anb, i
// Only transition to STATE_ABANDONED from STATE_CONFIGURED. (If it is STATE_PREPARING,
// let prepareNextBuffer handle the error.)
if (res == NO_INIT && mState == STATE_CONFIGURED) {
if ((res == NO_INIT || res == DEAD_OBJECT) && mState == STATE_CONFIGURED) {
mState = STATE_ABANDONED;
}

Loading…
Cancel
Save