summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/omx
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2015-06-26 15:33:17 -0700
committerLajos Molnar <lajos@google.com>2015-07-01 00:42:40 +0000
commit264bac95912efe121d6a60026612617f04f42966 (patch)
treeac73aada986fed92fba30ca624eff7e4fa033c1c /media/libstagefright/omx
parent064b2bf712788d30928b9a8bafecd0f3308d7aa4 (diff)
downloadframeworks_av-264bac95912efe121d6a60026612617f04f42966.zip
frameworks_av-264bac95912efe121d6a60026612617f04f42966.tar.gz
frameworks_av-264bac95912efe121d6a60026612617f04f42966.tar.bz2
stagefright: prevent allocating stale buffers for OMX decoders
Also fix some issues encountered once using generationNumbers: - properly account outstanding buffers in MediaSync - don't release arbitrary frame if attach fails Bug: 11990461 Change-Id: Icee5ea188ca4eb856138feb5e6ec5d4ee5e44008
Diffstat (limited to 'media/libstagefright/omx')
-rw-r--r--media/libstagefright/omx/GraphicBufferSource.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/media/libstagefright/omx/GraphicBufferSource.cpp b/media/libstagefright/omx/GraphicBufferSource.cpp
index 31c6975..ac64685 100644
--- a/media/libstagefright/omx/GraphicBufferSource.cpp
+++ b/media/libstagefright/omx/GraphicBufferSource.cpp
@@ -836,13 +836,15 @@ void GraphicBufferSource::releaseBuffer(
mConsumer->detachBuffer(id);
mBufferSlot[id] = NULL;
- mConsumer->attachBuffer(&id, buffer);
- mConsumer->releaseBuffer(
- id, 0, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR, fence);
+ if (mConsumer->attachBuffer(&id, buffer) == OK) {
+ mConsumer->releaseBuffer(
+ id, 0, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR, fence);
+ }
} else {
mConsumer->releaseBuffer(
id, frameNum, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR, fence);
}
+ id = -1; // invalidate id
mNumBufferAcquired--;
}